Diferència entre revisions de la pàgina «ASIX-M3-UF2-Banc de Solucions»

De wikiserver
Dreceres ràpides: navegació, cerca
 
(Hi ha 3 revisions intermèdies del mateix usuari que no es mostren)
Línia 706: Línia 706:
  
 
def menu(*args):
 
def menu(*args):
    count = 0
 
 
     opcions = []
 
     opcions = []
 
     print("")
 
     print("")
 
     for opcio in args:
 
     for opcio in args:
 
         print(opcio)
 
         print(opcio)
        count += 1
 
 
         opcions.append(opcio[:1])
 
         opcions.append(opcio[:1])
 
     print("")
 
     print("")
Línia 719: Línia 717:
 
     return op
 
     return op
  
opc = menu("1. Sumatori", "2. Potència", "3. Suma Digital")
+
opc = menu("1. Sumatori", "2. Potència", "3. Suma Digital", "4. MCD", "5. Suma Harmònica", "6. Existeix Dígit")
 
if opc=="1":
 
if opc=="1":
 
   digits = int(input("Introdueix el número de enters a sumar: "))
 
   digits = int(input("Introdueix el número de enters a sumar: "))
Línia 730: Línia 728:
 
   num = int(input("Introdueix un número per sumar els seus dígits: "))
 
   num = int(input("Introdueix un número per sumar els seus dígits: "))
 
   print("Resultat suma dels dels dígits del número %d: " %num, sumaDigital(num))
 
   print("Resultat suma dels dels dígits del número %d: " %num, sumaDigital(num))
 +
if opc=="4":
 +
  num1 = int(input("Introdueix un número: "))
 +
  num2 = int(input("Introdueix un segon número: "))
 +
  print("MCD dels números %d i %d és: " %(num1, num2), mcd(num1,num2))
 +
if opc=="5":
 +
  num = int(input("Introdueix un número per fer la seva suma harmònica: "))
 +
  print("Resultat de la suma harmònica del número %d: " %num, sumaHarmonica(num))
 +
if opc=="6":
 +
  num = int(input("Introdueix un número: "))
 +
  digit = int(input("Introdueix un dígit: "))
 +
  print("Existeix el dígit %d en el número %d: " %(digit, num), existeixDigit(num,digit))
 
</source>
 
</source>
  
Línia 769: Línia 778:
 
<source lang="python">
 
<source lang="python">
 
def mcd(x, y):
 
def mcd(x, y):
     num = x
+
     if x==y:
     if x > y:
+
      return x
       num = mcd(x - y, y)
+
     elif x > y:
     elif y > x:
+
       return mcd(x - y, y)
       num = mcd(x, y - x);     
+
     else:
    return num
+
       return mcd(x, y - x);     
 
</source>
 
</source>
 
      
 
      
5. Fes la funció recursiva float SumaHarmonica ( int n ) que retorna la suma :
+
5. Fes la funció recursiva SumaHarmonica (n) que retorna la suma:
 
<pre>
 
<pre>
 
     1 + 1/2 +1/3 + ... + 1/n
 
     1 + 1/2 +1/3 + ... + 1/n
 
</pre>
 
</pre>
 +
<source lang="python">
 +
def sumaHarmonica(n):
 +
    suma=0.0
 +
    if n>0:
 +
      suma=sumaHarmonica(n-1)+1.0/n
 +
    return suma
 +
</source> 
 
    
 
    
    public double sumaHarmonica (int n){
+
6. Fes una funció recursiva booleana que donats un número i un dígit retorni si aquest dígit pertany al número. Per exemple:
        double suma=0;
+
<pre>
        if(n>0){
+
  existeix(1234,3) → true
            suma=sumaHarmonica(n-1)+1.0/n;
+
  existeix(1234,7) → false  
        }
+
</pre>
        return suma;
+
<source lang="python">
    }
+
def existeixDigit(numero, dig):
 
+
    exist=False;
   
+
    if numero > 0:
6. Fes una funció recursiva booleana que donats un número i un dígit retorni si aquest dígit pertany al número. Per exemple existeix (1234,3) → true, existeix (1234,7) → false  
+
      exist=(numero % 10 == dig) or existeixDigit(numero // 10, dig)
 
+
    return exist;
    public boolean existeixDigit(int numero, int dig) {
+
</source> 
        boolean exist=false;
 
        if (numero > 0) {
 
          exist=((numero % 10 == dig) || existeixDigit(numero / 10, dig));
 
        }
 
      return exist;
 
    }
 
  
 
7. Fes una funció que calculi el producte segons el mètode rus que diu que:
 
7. Fes una funció que calculi el producte segons el mètode rus que diu que:

Revisió de 19:17, 23 març 2021

Regne de Dracs

En aquest joc, el jugador es troba en una terra de dracs. Els dracs viuen en coves i hi ha de dos tipus: els bons que volen compartir els seus tesors amb tu i els dolents molt cobdiciosos i afamats que no dubtaran a menjar-se tot aquell que provi d'accedir a la seva cova. El jugador es troba davant de dues coves, en una el drac amigable i en l'altre el drac dolent. El jugador a d'escollir...

  • Mòduls a emprar:
from random import randint  # per distribuir els dracs en les coves aleatoriament
from time import sleep      # per fer més "emocionant" el final del joc

Quadrat màgic

Construir un Quadrat màgic. Un quadrat màgic és una matriu quadrada (mateix nombre de files que de columnes), amb un nombre senar de files i columnes on la suma dels elements de totes les seves files i les seves columnes i les dues diagonals val igual. En aquest quadrat no hi ha cap número repetit, i els números que hi ha d'haver han d'anar des de 1 fins a n2 on n és el numero de files i columnes.

Com construir-lo?

  • El numero 1 el situarem en el quadrat superior al central (per exemple, per n=5, el quadrat central és (2,2) i el que està per sobre seu el (1,2).
  • El següent número el situarem un quadrat a la dreta i un per sobre. Si un numero està a la posició (i,j), el següent el situarem en (i-1,j+1).
  • Si resulta que al fer el moviment sortim per la dreta, entendrem que automàticament entrarem per l'esquerra, és a dir, és com si la matriu estigués enganxada la part esquerra amb la part dreta. El mateix passa amb dalt i baix. Si sortim per dalt, entrem per baix.
  • A més ens podem trobar que la posició on toca anar un número ja es troba ocupada. Llavors el que farem és tornar a la posició on estàvem i fer el moviment que puja dos posicions (i-2, j ).
  • Un exemple de quadrat màgic per a N=5 seria:
      23  6 19  2 15
      10 18  1 14 22
      17  5 13 21  9
       4 12 25  8 16
      11 24  7 20  3
  • El programa tindrà les següents funcions:
llegirDimensio: Li demanem a l’usuari que ens indiqui la mida N de la matriu. Si el valor és correcte, la funció el retorna.
inicialitzarQuadrat: Simplement posem tots els valors a 0
calculaPosicioInicial: Segons la dimensió, calculem la primera posició
assignaValor: Posa un valor en una posició
calcularNovaPosicio: Retorna els valors de fila i columna vàlids per a col·locar el proper valor.
imprimirQuadrat: Treu per pantalla el quadrat màgic,
  • El programa serà semblant a aquest :
dim = llegirDimensio()
qm = inicialitzarQuadrat(dim)
pos = calculaPosicioInicial(dim)
limit = dim*dim;
for valor in range(1,limit+1):
   qm = assignaValor(qm,pos,valor)
   pos = calcularNovaPosicio(qm, dim, pos) 
imprimirQuadrat(qm)

Mastermind

El Mastermind és un joc que consisteix en, mitjançant pistes, deduir un codi numèric de n xifres ocult (en el nostre cas de quatre xifres i generat aleatòriament). Dinàmica del joc:

  • El programa generà aleatòriament un codi numèric de quatre xifres (codi a endevinar).
  • El jugador anirà proposant codis (intents) per tal de trobar el codi a endevinar.
  • L'objectiu es trobar el codi en el menor número d'intents. Es pot limitar el número d'intents (per ex. a 7).
  • Desprès de cada intent el programa donarà pistes que ajudin a deduir el codi:
  • Encerts: quants números s'han encertat i es troben en la posició correcta .
  • Coincidències: quants números s'han encertat però no es troben en la posició correcta.
  • Exemple:
  • codi: 7539
  • proposta: 2590
  • pistes: 1 encert i 1 coincidència.
  • El joc finalitzarà quan s'hagi trobat el codi numèric o s'hagin exhaurit els intents.
  • El programa permetrà tornar a jugar si així o vol el jugador.
  • Diagrama de flux
Diagrama flux "Mastermind"


El Penjat

El penjat consisteix en endevinar una paraula generada aleatòriament per l'ordinador. Dinàmica del joc:

  • Es presenta una forca i un guio per a cada lletra de la paraula.
  • El jugador proposa lletres (d'una en una) i:
  • si la lletra es troba a la paraula es substitueixen els guions respectius per la lletra.
  • sinó s'actualitza la forca en una part del cos (cap, tronc, braç esquerra, braç dret, cama esquerra i cama dreta).
  • El joc finalitza quan es troben totes les lletres o quan ja no queden parts del cos.
  • El programa permetrà tornar a jugar si així o vol el jugador.
  • Diagrama de flux
Diagrama flux "El Penjat"

3 en ratlla

El joc consisteix en posar 3 fitxes en línia en un tauler de 9 caselles abans que ho faci l'ordinador.

  • El jugador i l'ordinador alternen les jugades.
  • El jugador escollirà el símbol que vol (X o O) i es farà un sorteig de qui comença la partida
  • L'ordinador analitzarà la situació del tauler per cercar la millor jugada a fer.
  • La partida finalitzarà en el moment que un dels jugadors aconsegueixi fer 3 fitxes en linia o quan el tauler estigui omplert.
  • Cal informar del resultat de la partida: Guanya la persona, l'oridnador o hi ha hagut un empat.
  • El programa permetrà tornar a jugar si així o vol el jugador.


Recursivitat