Чего мне не хватает в этом фрагменте кода на python, чтобы вывести все возможные комбинации суммы север + восток + юг + запад = земля? - PullRequest
0 голосов
/ 25 апреля 2018

Когда интерпретатор достигает последней итерации, он не показывает прогресса Что мне не хватает? Выходными данными должны быть возможные комбинации, такие как сумма север + восток + юг + запад = земля.

def possibilities():
    alphabets=(n,o,r,t,h,e,a,s,u,w,m,y)
    combinations=list()
    for n in range(9,-1,-1):
            for o in range(9,-1,-1):
                    for r in range(9,-1,-1):
                            for t in range(9,-1,-1):
                                    for h in range(9,-1,-1):
                                            for e in range(9,-1,-1):
                                                    for a in range(9,-1,-1):
                                                            for s in range(9,-1,-1):
                                                                    for u in range(9,-1,-1):
                                                                            for w in range(9,-1,-1):
                                                                                    for m in range(9,-1,-1):
                                                                                            for y in range(9,-1,-1):
                                                                                                    if len(set([n,o,r,t,h,e,a,s,u,w,m,y]))==12:
                                                                                                    north=10000*n + 1000*o +100*r +10*t +h
                                                                                                    east=1000*e +100*a +10*s +t
                                                                                                    south=10000*s + 1000*o +100*u +10*t +h
                                                                                                    west=1000*w + 100*e +10*s +t
                                                                                                    earth= 10000*e + 1000*a + 100*r +10*t +h
                                                                                                    if north +east +south +west == earth:
                                                                                                            combinations.append((north,east,south,west,earth))

    return combinations
possibilities()

1 Ответ

0 голосов
/ 25 апреля 2018

Вы выполнили 12 для циклов между 9 и 0. Это означает, что для каждой переменной есть 10 возможных значений.Поскольку переменных больше, чем параметров (12> 10), всегда будет как минимум 2 переменные с одинаковым значением.Поэтому, когда вы проверяете, равна ли длина набора 12, он никогда не пройдет true, потому что он всегда не более 10.

Чтобы решить эту проблему (и я все еще немного сбит с толку вашей задачей, поэтому яя не уверен в этом), вы должны изменить каждый цикл for на 11 вместо 9.

Это должно быть так

for n in range(11,-1,-1):
...