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 digitlist

def RemoveFiveMultiple(digitlist):
for digit in digitlist:
if digit % 5 == 0:
digitlist.remove(digit)
return digitlist

def IsRemoveFiveMultiple(digitlist):
ModsCount = 0
for digit in digitlist:
if digit % 5 == 0:
ModsCount += 1
return ModsCount != 0

def 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 DisplacementDigitList

def CreateDigitList(digitlist):
newdigitlist =[]
for digit in digitlist:
newdigitlist.append(digit)
return newdigitlist

def 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 StepHalf

if __name__ == "__main__":

DigitList = []
DigitList = InputDigitList(DigitList)

Step = 0

Step = CountStep(DigitList,Step)
print Step

↓作った奴はここにおいときます。
https://github.com/sigunerion/SelfGame