1. Definizione del problema

Si vuole realizzare un programma che simuli l’estrazione di carte napoletane con queste regole (n.b.: Le carte napoletane hanno: 4 semi e 10 valori (da 1 a 10), quindi ogni valore può comparire al massimo 4 volte (una per ogni seme).

Il gioco funziona così:

  1. L’utente inserisce un numero tra 1 e 10 (valore della carta).

  2. Il programma effettua 20 estrazioni di carte.

  3. L’utente vince se il valore scelto:

    • è uscito almeno 2 volte nelle 20 estrazioni.

⚠ Non si possono avere più di 4 carte uguali, perché il mazzo reale non lo permette.


2. Modellazione informatica del problema

In informatica dobbiamo:

  • Generare numeri casuali tra 1 e 10 (valori delle carte).

  • Tenere traccia di:

    • quante volte è uscito ogni valore

    • quante carte sono state estratte in totale

  • Impedire che un valore venga estratto più di 4 volte.

Per farlo usiamo:

  • una lista di contatori lunga 10:

    • uscite[0] → conta quante volte è uscito il valore 1

    • uscite[1] → conta quante volte è uscito il valore 2

    • uscite[9] → conta quante volte è uscito il valore 10


3. Strategia di soluzione

  1. Chiedere all’utente il valore da indovinare.

  2. Inizializzare:

    • un contatore per le uscite del valore scelto

    • una lista che memorizza quante volte è uscito ciascun valore

  3. Ripetere l’estrazione finché non si ottengono 20 carte valide.

  4. A ogni estrazione:

    • generare un numero casuale tra 1 e 10

    • controllare se quel valore è già uscito 4 volte

      • se sì → si scarta

      • se no → si accetta

  5. Alla fine:

    • se il valore scelto è uscito almeno 2 volte → vittoria

    • altrimenti → sconfitta

 

4. Programma

5. Spiegazione delle parti principali

Lista dei contatori

uscite = [0,0,0,0,0,0,0,0,0,0]

Serve a memorizzare quante volte è uscito ciascun valore.


Ciclo di estrazione

while estratte < 20:

Garantisce che vengano estratte esattamente 20 carte valide.


Controllo del vincolo delle carte

if uscite[carta-1] < 4:

Impedisce che un valore venga estratto più di 4 volte, rispettando la struttura del mazzo reale.


Condizione di vittoria

if conta >= 2:

Verifica se il valore scelto dall’utente è uscito almeno 2 volte.


6. Concetto informatico importante

Questo programma simula:

  • estrazione senza reinserimento

  • con vincoli di disponibilità

È diverso dal dado, dove si usa:

random.randint(1,6)

senza limiti sul numero di volte che un valore può uscire.


7. Competenze esercitate

Con questo esercizio lo studente usa:

  • input

  • while

  • if

  • liste

  • contatori

  • numeri casuali

  • modellazione di un problema reale