DevQuizに挑戦してみたでござる。
やってみたのは一人ゲームというゲームです。
ルールは以下の通り。
・10個以下の整数をプログラムに渡す。
・このプログラムでは以下の作業が行われる。
全ての5の倍数(0を含む)を取り除く
全ての数字を半分にする(端数切り捨て)
・問題の整数を取り除き、終了までの最短の操作回数を表示する。
案外簡単そうじゃね?と思ったけど再起処理を上手く書けずに全然だったorz
仕事上、現在技術営業サポートに回っちゃったんでプログラム全然書いてないから
リハビリがてらやってみたけど、トホホの出来;
# -*- coding: utf-8 -*-def InputDigitList(digitlist):
digit = 0
while(len(digitlist) <= 10):
digit = raw_input("数字を入力してください。")
if digit == "":
break
digitlist.append(int(digit))
return digitlistdef RemoveFiveMultiple(digitlist):
for digit in digitlist:
if digit % 5 == 0:
digitlist.remove(digit)
return digitlistdef IsRemoveFiveMultiple(digitlist):
ModsCount = 0
for digit in digitlist:
if digit % 5 == 0:
ModsCount += 1
return ModsCount != 0def IsAllRemoveFiveMultiple(digitlist):
ModsCount = 0
for digit in digitlist:
if digit % 5 == 0:
ModsCount += 1
return ModsCount == len(digitlist)
def HalfNumber(digitlist):
DisplacementDigitList = []
for digit in digitlist:
DisplacementDigitList.append(digit / 2)
return DisplacementDigitListdef CreateDigitList(digitlist):
newdigitlist =[]
for digit in digitlist:
newdigitlist.append(digit)
return newdigitlistdef CountStep(digitlist,step):
step += 1
if IsAllRemoveFiveMultiple(digitlist):
return step
print digitlist
HalfDigitList = HalfNumber(digitlist)
StepHalf = CountStep(HalfDigitList,step)
if IsRemoveFiveMultiple(digitlist):
ModDigitList = RemoveFiveMultiple(digitlist)
StepMods = CountStep(ModDigitList,step)
if StepMods > StepHalf:
return StepHalf
else:
return StepMods
return StepHalfif __name__ == "__main__":
DigitList = []
DigitList = InputDigitList(DigitList)Step = 0
Step = CountStep(DigitList,Step)
print Step
↓作った奴はここにおいときます。
https://github.com/sigunerion/SelfGame