dilluns, 31 de desembre del 2012

Exercicis de Primària amb Python V

Aquest és un exercici de Grafs extret del llibre Nou i Mig 8 de l'editorial Teide:


Plantejament


  • Identifiquem cada vertex amb una lletra.
  • Construim un diccionari python amb una 'cassella' per a cada vertex.
  • Fem una 'llista' (és una tupla en realitat) amb els parells de nodes adjacents.
  • Provem totes les permutacions de digits tot imprimint les que compleixen amb els requeriments de l'enunciat.

El codi del programa


from itertools import permutations, combinations_with_replacement

vertex = {}
for identificador in ( 'A','B','C','D','E','F' ):
    vertex[identificador] = None

adjacents = (
  ( 'A', 'B' ),  ( 'A', 'D' ),  ( 'A', 'E' ),  ( 'A', 'F' ),
  ( 'B', 'A' ),  ( 'B', 'D' ),  ( 'B', 'C' ),
  ( 'C', 'B' ),  ( 'C', 'D' ),  ( 'C', 'F' ),
  ( 'D', 'A' ),  ( 'D', 'B' ),  ( 'D', 'C' ),  ('D', 'E'),
  ( 'E', 'A' ),  ( 'E', 'D' ),  ( 'E', 'F' ),
  ( 'F', 'A' ),  ( 'F', 'C' ),  ( 'F', 'E' ),
)

digits = ( 5,6,7,8,9,10 )

for (vertex['A'], vertex['B'], vertex['C'], 
     vertex['D'], vertex['E'], vertex['F'], ) in permutations ( digits ):
    if all( vertex[ v1 ] - vertex[v2] != 1 for ( v1, v2) in adjacents ):
        print ( 'A:', vertex['A'], 'B:', vertex['B'], 'C:', vertex['C'], 
                'D:', vertex['D'], 'E:', vertex['E'], 'F:', vertex['F'] ) 


El resultat


dani@egg-v3:~/tmp/llu$ python vertexs.py 
('A:', 5, 'B:', 8, 'C:', 6, 'D:', 10, 'E:', 7, 'F:', 9)
('A:', 10, 'B:', 7, 'C:', 9, 'D:', 5, 'E:', 8, 'F:', 6)

Altres Exercicis

http://beutil.blogspot.com.es/search/label/python_i_exercicis_mates



diumenge, 30 de desembre del 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





dissabte, 29 de desembre del 2012

Sala Polivalent Ara:



Sala Polivalent fa 1700 anys:


Central Nuclear a Garona:


Sala Polivalent a L'Escala:




Exercicis de Primària amb Python III

Enunciat: 


  • Quant sumen els punts de les 28 fitxes del dòmino?

Plantejament:


  • Anomenarè família a totes les fitxes que tenen en comú una mateixa puntuació. Per exemple, la família del 0 (blanc) serà: 0:0, 0:1, 0:2, ... 0:6
  • Hem de tenir en compte que la fixa 1:0 i la fitxa 0:1 és la mateixa. Per tant, si a la família del 0 hem inclòs el 0:1, a la família de l'1 no podem incloure el 1:0. 
  • Per a solucionar el punt anterior, cada família es combinarà amb els punts començant pel seu doble:


0:0 0:1 0:2 0:3 0:4 ... 0:6
    1:1 1:2 1:3 1:4 ... 1:6
        2:2 2:3 2:4 ... 2:6
                    ...
                        6:6


  • Per últim, fem servir un acumulador per tal de saber quant punts portem.

Solució:

acumulador = 0
for familia in range(0,7):
    for n in range(familia,7):  #No comencem des de 0
                                #comencem des del doble X:X
        print familia,n
        acumulador += familia+n
print 'Total:', acumulador

Resultat:

$ python domino.py 
0 0
0 1
...
4 6
5 5
5 6
6 6

dimarts, 18 de desembre del 2012

Exercicis de primària amb Python II

A la mateixa pàgina que l'exercici anterior trobem aquest exercici altre exercici ('Nou i mig 8', editorial teide):




Com es pot veure no necessita enunciat.

Per resoldre'l utilitzem diferents recursos del llenguatge, destaco els diccionaris, els bucles niuats i les expressions lambda:


from itertools import combinations

suma = { 'operacio': lambda x,y: x+y, 'nom':'suma' }
resta = { 'operacio': lambda x,y: x-y, 'nom':'resta' }

operacions = ( suma, resta )
for op1 in operacions:
    for op2 in operacions:
        for op3 in operacions:
            for op4 in operacions:
                r1 = op1['operacio']( 10, 9)
                r2 = op2['operacio']( r1, 15)
                r3 = op3['operacio']( r2, 7 )
                r4 = op4['operacio']( r3, 4 )
                if r4 == 19:
                    print op1['nom'], op2['nom'], op3['nom'], op4['nom']


Resultat:

resta suma suma resta

Cal dir que les itertools ens permeten substituir els bucles niuats per un sol bucle:

http://stackoverflow.com/questions/1280667/in-python-is-there-an-easier-way-to-write-6-nested-for-loops




Altres Exercicis



diumenge, 16 de desembre del 2012

Python i els exercicis de Mates

Python és un llenguatge de programació d'alt nivell. El codi escrit amb Python és de fàcil lectura, això forma part de la filosofia del llenguatge. És per això que recomano aquest llenguatge a qui vulgui iniciar-se al món de la programació d'una manera autodidàcta.

Nou i mig 8 és un llibre de l'editorial Teide. Els problemes d'aquest llibre són molt gràfics i divertits.

Resoldre els problemes del Nou i mig amb Python és encara més divertit.

Aquest problema apareix a la pàgina 11 del llibre. Ens donen una figura en forma d'estrella, cada línia de la figura conté tres caselles, una al mig i una a cada extrem. Cal repartir els dígits de l'1 al 9 dins d'aquestes caselles de manera que els dígits de totes les línies sumin el mateix.

És a dir que A + B + C ha de sumar el mateix que C + D + E i així per totes les línies.

Per solucionar aquest problema amb python utilitzo la llibreria itertools, allà hi ha una funció que ella sola em fabricarà totes les possibles permutacions dels digits de l'1 al 9.

Provarem cada permutació per comprovar si cumpleix els requeriments de l'enunciat.

L'operador per a comparar és == per això apareix aquest operador dins la sentència 'if'.


from itertools import permutations

digits = ( 1, 2, 3, 4, 5, 6, 7, 8, 9)

for (A, B, C, D, E, F, G, H, I ) in permutations( digits ):
    if ( A + B + C == 
         C + D + E ==
         E + F + G ==
         G + B + H ==
         H + D + I ):
        print 'Solucio: ', A, B, C, D, E, F, G, H, I

El resultat:


Solucio:  1 5 9 2 4 8 3 7 6
Solucio:  1 5 9 4 2 6 7 3 8
Solucio:  1 6 8 3 4 9 2 7 5
Solucio:  1 6 8 4 ...



Altres Exercicis





dilluns, 20 d’agost del 2012

El ministre Soria ens convida a infringir la llei?

Noticia d'Intereconomia (Europa Press):


El que diu la llei:

"deberá aplicarse el tipo vigente en el momento del devengo"  

"Por sus ventas o prestaciones de servicios, repercuten a los adquirentes las cuotas de IVA que correspondan, con obligación de ingresarlas en el Tesoro."

Les preguntes:
- Quina repercussió hauria de tenir una declaració d'aquest tipus sobre el ministre?
- A quina "tentació" es refereix el ministre? 
- M'estic tornant jo boix? M'estic perdent alguna cosa? Hi ha càmera oculta?

dimecres, 15 d’agost del 2012

dissabte, 7 de juliol del 2012

La web de Bankinter dia 7 de juliol a les 16:30:



Answer:  The oerr utility says this about the ORA-00257 error:
ORA-00257: archiver error. Connect internal only, until freed.

Cause: The archiver process received an error while trying to archive a redo log. If the problem is not resolved soon, the database will stop executing transactions. The most likely cause of this message is the destination device is out of space to store the redo log file.

divendres, 8 de juny del 2012

Càrrega i anàlisi datamart de la despesa

Captures de pantalla projecte datamart econòmic de comptabilitat pressupostària

Càrrega amb SSIS

Anàlisi amb Tableau


diumenge, 15 d’abril del 2012

Pujar aplicació MVC 3 a Dinahosting

Conservo un compte a dinahosting degut al concurs webs al punt. Avui he pujat una BDD i una Aplicació Web (MVC 3). El procediment no és complicat:

  • La base de dades es crea des del taulell de control de dinahosting, dresprés t'hi pots connectar a ella des de l'SQLServer Management Studio. Cap problema. El nom de servidor me'l van dir des de dinahosting pel chat de suport.
  • Per pujar l'aplicació primer has de declarar una aplicació ASP.NET (des del taulell de control), després puges l'aplicació des del propi assistent de visual studio via FTP (cal haver fet un compte FTP).

Aquí està l'aplicació  http://www.joincar.cat/a/search/go :


De pas publico la caxonda consulta LINQ per obtenir les dades i el model de dades:






dijous, 5 d’abril del 2012

LightSwitch Custom Control: Tree lookup Operations

Here the second part of treeview custom control. This include lookup operations:


See also:

LightSwitch Custom Control: Tree CRUD Operations

For a recent project I have developed a treeview lightswitch custom control to edit a tree structure.
Here I share the code to do CRUD+CutAndPaste operations over a generic tree. I have also documented this tree sample project.




I will post a second part of project with tree lookups operations.

Don't forget to write a comment if this code us useful for you.

( Thanks to Karol Zadora )