Re:覆面算
ゼミが終わりちょっとだけ時間ができたので…
2008-04-10 - rindai87の日記
再び覆面算。
ただ順列を探すだけなので、再帰で書ける。
こういうのをぱっと思いつかないところが自分の実力なんだなぁと思った。
# -*- encoding : utf-8 -*- import sys numList = [] def make_numList(n=10, m=0, num=8): if m == num: arrange(numList) else: for x in range(n): if x in numList: continue numList.append(x) make_numList(n, m+1) numList.pop() def arrange(numList): if numList[0] == 0 or numList[4] == 0: return False S = numList[0] E = numList[1] N = numList[2] D = numList[3] M = numList[4] O = numList[5] R = numList[6] Y = numList[7] cal(S,E,N,D,M,O,R,Y) def cal(S,E,N,D,M,O,R,Y): if (S*1000+E*100+N*10+D)+(M*1000+O*100+R*10+E) == (M*10000+O*1000+N*100+E*10+Y): print " ",S,E,N,D print "+",M,O,R,E print "----------" print M,O,N,E,Y sys.exit() return False def main(): make_numList() if __name__ == "__main__": main()
結果
E:\study\program\Python\4-15>python test.py 9 5 6 7 + 1 0 8 5 ---------- 1 0 6 5 2
再帰脳が欲しい!!!