Enunciat
Aquest exercici no té enunciat. Nomès apareix aquesta imatge:Entenc que és un exercici tipus 'xifres i lletres' i cal obtenir el resultat indicat amb una combinació d'operacions amb tots els dígits disponibles.
Recordo que aquests exercicis són de Nou i mig 8 és un llibre de l'editorial Teide.
Resolució:
- Creo les operacions com diccionaris per tal de tenir el nom i la operació.
- Faig una tupla amb les operacions que intervenen.
- Faig una llista amb els dígits disponibles.
- Poso en una variable el resultat desitjat.
- Per últim, busco totes les possibles combinacions d'operacions preses de 4 en 4. Per a cada combinació busco totes les seves permutacions i les combino amb totes les permutacions dels dígits disponibles.
- El resultat el comparo amb el resultat desitjat
El programa:
from itertools import permutations, combinations_with_replacement
operacions = {}
operacions['+'] = lambda x,y: x+y
operacions['-'] = lambda x,y: x-y
operacions['*'] = lambda x,y: x*y
operacions['/'] = lambda x,y: x/y
numeros = ( 22, 2, 10, 6, 11 )
resultat_desitjat = 201
for (A, B, C, D, E ) in permutations ( numeros ):
for combinacio_operacio in combinations_with_replacement( operacions, 4 ):
for ( op1, op2, op3, op4 ) in permutations( combinacio_operacio ):
r1 = operacions[op1]( float( A ), float( B ) )
r2 = operacions[op2]( float( r1 ), float( C ) )
r3 = operacions[op3]( float( r2 ), float( D ) )
r4 = operacions[op4]( float( r3 ), float( E ) )
if r4 == resultat_desitjat and r1 > 0 and r2 > 0 and r3 > 0 and r4 > 0:
print A, op1, B, op2, C, op3, D, op4, E
Els resultats:
dani@egg-v3:~/tmp/llu$ python batedora.py | more
22 * 10 - 2 - 6 - 11
22 * 10 - 2 - 6 - 11
22 * 10 - 2 - 6 - 11
22 * 10 - 2 - 6 - 11
22 * 10 - 2 - 6 - 11
22 * 10 - 2 - 6 - 11
Interessant proposta per generar exercicis.
ResponEliminaGràcies per compartir el codi font.