プログラミング言語「Python」で制作 Part78 | Photoshop CC Tutorials

今回はプログラミング言語の「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」