今回はプログラミング言語の「Python」を使って作成しました。
小町算のような問題の空白に総当たりで「+」と「-」を入れていき、答えを探す方法です。
■ プログラム
import traceback try: import pprint import random def calculate(i, sum, li): if li[i-1] == '+': #print("{0}+{1}".format(sum, i)) return sum + i elif li[i-1] == '-': #print("{0}-{1}".format(sum, i)) return sum - i cnt = 0 answersList = [] sumList = [] #------------------------------------------------------------------------- # 総当たりで埋める 2の9乗 = 512通り #------------------------------------------------------------------------- for h in range(2): for i in range(2): for j in range(2): for k in range(2): for l in range(2): for m in range(2): for n in range(2): for o in range(2): for p in range(2): li = [h, i, j, k, l, m, n, o, p] li = ['+' if x == 0 else '-' for x in li] sum = 0 for i in range(1,10): sum = calculate(i, sum, li) #-------------------------------------------------- # sum == 1 この値を変えてください #-------------------------------------------------- if sum == 1: answersList.append(li) sumList.append(sum) cnt += 1 print(str(cnt) + "回目") for i in range(len(answersList)): print("0{0}1{1}2{2}3{3}4{4}5{5}6{6}7{7}8{8}9 = {9}"\ .format(answersList[i][0], answersList[i][1], answersList[i][2], answersList[i][3],\ answersList[i][4], answersList[i][5], answersList[i][6], answersList[i][7], answersList[i][8], sumList[i])) except Exception as e: print("エラー情報\n" + traceback.format_exc()) input() |
■ 参考書
「Newtonライト2.0 数学パズル 計算編 (ニュートンムック)」
■ プログラミング言語
「Python」