レイトン教授 不思議な街のナゾ099を解く
レイトン教授面白いですね。
ナゾ099に、こんなのがありました。
1から9までの数字を1回ずつ使い、□□□□□-□□□□=33333になるよう□に数字を当てはめるというものです。
私は解けませんでした。
Pythonで無理やり解いてみようとソースコードを書きました。
import numpy as np import re def isKiri(x): if re.match('^([0-9])\\1+$', str(x)): return True if str(x) in '12345': return True return False def hantei(z): ans = z[0] * 10000 + z[1] * 1000 + z[2] * 100 + z[3] * 10 + z[4] - z[5] * 1000 -z[6] * 100 - z[7] * 10 - z[8] if isKiri(ans): print (str(ans) + ',' + str(z)) def tansaku(x,y): for n in x: # xから1つ要素を減らす next_x = np.array([ i for i in x if n != i ]) # yに選択した要素を追加する next_y = np.append(y , n) if next_y.size == 9: hantei(next_y) return # xがなくなるまで再帰 tansaku(next_x , next_y) if __name__ == '__main__': x = np.arange(1,10) y = np.array([] , dtype='int32') tansaku(x, y)
調べてみると33333は、2件しかないですが、
33333を除き、11111から77777は、結構数パターン存在するみたいですね。
キリ番判定は、下記を参考にさせていただきました。
pythonでキリ番かどうか判定する - BlankTar