L’objectif
On dispose de 8 cartes symbolisant les chiffres de 1 à 8.
En utilisant toutes les cartes une seule fois, on cherche des multiplications du type :
*** x * = ****
Une des possibilités est :
453 x 6 = 2 718
Pour information, il en existe deux !
La solution
# -*- coding:Utf-8 -*-
#!/usr/bin/python
"""
En utilisant une seule fois les chiffres de 1 à 8, on veut retrouver une autre opération du type :
453 x 6 = 2718
"""
# Les cartes
L=[1,2,3,4,5,6,7,8]
for i in L :
M=L.copy()
M.remove(i) # M est la copie de L sans i
for j in M :
N=M.copy()
N.remove(j) # N est la copie de M sans j
for k in N :
P=N.copy()
P.remove(k) # P est la copie de N sans k
for l in P :
R=P.copy()
R.remove(l) # R est la copie de P sans l
res=(i*100+j*10+k)*l # le résultat
m=res//1000 # le chiffre des milliers
res=res-m*1000
c=res//100 # le chiffre des centaines
res=res-c*100
d=res//10 # le chiffre des dizaines
u=res-d*10 # le chiffre des unités
T=[m,c,d,u] # la liste des 4 nombres obtenues
R.sort() # On trie R
T.sort() # On trie T
if (R==T):
print(i*100+j*10+k)
print(l)
print((i*100+j*10+k)*l)
print("----------")