2016-10-18 1 views
-2

Рассмотрим уравнение ABCBA = D * BE * BFFA. Задача состоит в том, чтобы определить, где A, B, C, D, E и F являются отдельными цифрами. Уравнение с численными значениями равно 91819 = 7 * 13 * 1009, поэтому программа должна печатать {'A': 9, 'B': 1, 'C': 8, 'D': 7, 'E': 3, 'F': 0}. Вот код, я сделалПоиск решения уравнения склепа в python

result=[] 
for A in range (10): 
    for B in range(10): 
     for C in range(10): 
      for D in range(10): 
       for E in range(10): 
        for F in range(10): 
         if int(str(A)+str(B)+str(C)+str(B)+str(A)) == D * int(str(B)+str(E)) * int(str(B)+str(F)+str(F)+str(A)): 
          result.append({'A':A,'B':B,'C':C,'D':D,'E':E,'F':F}) 
print((result[len(result)-1])) 

Теперь, когда он работает для уравнения в example.How sholud я изменить свой код так, что он работает для любого уравнения, который должен быть введен пользователем?

+1

Каков ваш вопрос? –

+2

Пожалуйста, не просите других писать код для вас, этот сайт поможет вам своими силами, а не взять на себя вашу работу. Постарайтесь написать код как можно лучше, и если вы застряли, попросите нас о помощи. – Khris

+0

Я действительно делаю код. Должен ли я загрузить его @Khris? –

ответ

0

Если вам нужен только ваш последний вывод и хотите сбросить все, что вы можете просто переписать ту же переменную снова и снова:

result = {} 
for B in range(10): 
    for C in range(10): 
     for D in range(10): 
      for E in range(10): 
       for F in range(10): 
        if int(str(A)+str(B)+str(C)+str(B)+str(A)) == D * int(str(B)+str(E)) * int(str(B)+str(F)+str(F)+str(A)): 
         result = {'A':A,'B':B,'C':C,'D':D,'E':E,'F':F} 

pprint(result) 

Если вы хотите сохранить все результаты, но только печать последнего одного использования список:

result = [] 
for B in range(10): 
    for C in range(10): 
     for D in range(10): 
      for E in range(10): 
       for F in range(10): 
        if int(str(A)+str(B)+str(C)+str(B)+str(A)) == D * int(str(B)+str(E)) * int(str(B)+str(F)+str(F)+str(A)): 
         result.append({'A':A,'B':B,'C':C,'D':D,'E':E,'F':F}) 

pprint(result[-1]) 
0

Я не думаю, что @ ответ Khris является 100% правильно, так как вам нужна петля для A, и ваш первоначальный вопрос в списке, что первая цифра любого числа не может быть 0; поэтому A, B и D не может быть 0, поэтому для этого добавляется if A and D and B:.

, который затем приводит к (печать всех результатов, вы можете забрать оттуда):

from pprint import pprint 

results = [] 
for A in range(10): 
    for B in range(10): 
     for C in range(10): 
      for D in range(10): 
       for E in range(10): 
        for F in range(10): 
         if A and D and B: 
          if int(str(A)+str(B)+str(C)+str(B)+str(A)) == D * int(str(B)+str(E)) * int(str(B)+str(F)+str(F)+str(A)): 
           results.append({'A':A,'B':B,'C':C,'D':D,'E':E,'F':F}) 

for result in results: 
    pprint(result) 

Вы дополнительно указать следующее:

Последний из многих выходов pprint дает правильный результат .Can Кто-то отредактировал его, чтобы напечатать только последний (правильный) результат?

Что неправильно на основе уравнения ABCBA = D * BE * BFFA: следующие результаты все были бы справедливы:

{'A': 1, 'B': 1, 'C': 0, 'D': 1, 'E': 1, 'F': 0} # 11011 = 1 * 11 * 1001 
{'A': 2, 'B': 1, 'C': 3, 'D': 1, 'E': 6, 'F': 3} # 21312 = 1 * 16 * 1332 
{'A': 2, 'B': 1, 'C': 9, 'D': 1, 'E': 1, 'F': 9} # 21912 = 1 * 11 * 1992 
{'A': 5, 'B': 1, 'C': 3, 'D': 3, 'E': 1, 'F': 5} # 51315 = 3 * 11 * 1555 
{'A': 9, 'B': 1, 'C': 8, 'D': 7, 'E': 3, 'F': 0} # 91819 = 7 * 13 * 1009 
+0

Спасибо @Edwin van Mierlo –

Смежные вопросы