diumenge, 30 de desembre de 2012

Exercicis de Primària amb Python IV

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




Altres Exercicis





1 comentari:

  1. Interessant proposta per generar exercicis.
    Gràcies per compartir el codi font.

    ResponElimina