Esercitazione:
Batman, Joker e la Morra Cinese
Prof. F rance sco Colac e
A. A . 2020/21
BJMC: La Traccia
Si supponga di voler sviluppare una macchina combinatoria in grado di simulare il gioco della Morra Cinese. Volendo scoprire qualcosina in più su questo accattivante gioco di mano, a cui di solito non è avvezzo un villano, possiamo ricorrere a Wikipedia:
La morra cinese, comunemente conosciuta come Sasso-Carta-Forbice, è un gioco di mano popolare, spesso giocato dai bambini. Il gesto di partenza del gioco è quasi identico a quello del "pari o dispari", e il gioco viene usato spesso in contesti analoghi, ovvero quando si debba "tirare a sorte". Diversamente da quanto avviene col lancio della moneta o con altri sistemi puramente aleatori (e contrariamente a quanto si potrebbe forse pensare) esiste in questo gioco un margine per applicare strategia, per lo meno se lo si gioca ripetutamente con lo stesso avversario: si può infatti prestare attenzione alle sue "debolezze" (ovvero, l'eventuale tendenza ad agire con qualche regolarità e quindi prevedibilità). Lo scopo è sconfiggere l'avversario scegliendo un segno in grado di battere quello dell'altro, secondo le seguenti regole:
• Il sasso spezza le forbici (vince il sasso)
• Le forbici tagliano la carta (vincono le forbici)
• La carta avvolge il sasso (vince la carta)
• Se i due giocatori scelgono la stessa arma, il gioco è pari e si gioca di nuovo.
Date queste specifiche funzionali si progetti e si implementi una macchina combinatoria in grado di far giocare due giocatori (che chiameremo Batman e Joker).
Quando vince Batman si dovrà accendere una luce nera. Se vince Joker si dovrà accendere una luce viola. In caso di pareggio si accenderà una luce gialla.
• L’esercizio si considererà concluso dopo aver fornito risposte ai seguenti punti:
• Definizione della tavola di verità
• Scrittura delle funzioni d’uscita attraverso il formalismo di rappresentazione denominato Somma di Prodotti
• Minimizzazione delle funzioni ottenute attraverso l’utilizzo delle mappe di Karnaugh
BJMC: Definizione Ingressi e Uscite
Dall’analisi della traccia si evince che i possibili ingressi sono:
• Sasso_Batman
• Forbici_Batman
• Carta_Batman
• Sasso_Joker
• Forbici_Joker
• Carta_Joker Le uscite sono
• Luce Nera
• Luce Viola
• Luce Gialla
BJMC: Definizione e Codifica Ingressi
Conveniamo di codificare gli ingressi attraverso i seguenti segnali binari:
Con la coppia di segnali binari A e B codifichiamo i seguenti ingressi:
• Sasso_Batman: A = 0 B = 0
• Forbici_Batman: A = 0 B = 1
• Carta_Batman: A = 1 B = 0
Con la coppia di segnali binari C e D codifichiamo i seguenti ingressi:
•Sasso_Joker C = 0 D = 0
• Forbici_Joker C = 0 D = 1
• Carta_Joker C = 1 D = 0
BJMC: Definizione e Codifica Uscite
Conveniamo di rappresentare e codificare le uscite attraverso i seguenti segnali binari X ed Y:
• Luce NeraX = 0 Y = 0
• Luce Viola X = 0 Y = 1
• Luce Gialla X = 1 Y = 0
BJMC: Tavola di Verità
A B C D X Y
0 0 0 0 1 0
0 0 0 1 0 0
0 0 1 0 0 1
0 0 1 1 - -
0 1 0 0 0 1
0 1 0 1 1 0
0 1 1 0 0 0
0 1 1 1 - -
1 0 0 0 0 0
1 0 0 1 0 1
1 0 1 0 1 0
1 0 1 1 - -
1 1 0 0 - -
1 1 0 1 - -
1 1 1 0 - -
1 1 1 1 - -
BJMC: Funzioni di Uscita (SoP)
La codifica sotto forma di Somma di Prodotti delle funzioni d’uscita è la seguente:
• X = A’B’C’D’ + A’BC’D + AB’CD’
•Y = A’BC’D’ + A’B’CD’ + AB’C’D
A B C D X Y
0 0 0 0 1 0
0 0 0 1 0 0
0 0 1 0 0 1
0 0 1 1 - -
0 1 0 0 0 1
0 1 0 1 1 0
0 1 1 0 0 0
0 1 1 1 - -
1 0 0 0 0 0
1 0 0 1 0 1
1 0 1 0 1 0
1 0 1 1 - -
1 1 0 0 - -
1 1 0 1 - -
1 1 1 0 - -
1 1 1 1 - -
BJMC: Mappe di Karnaugh
Semplifichiamo la funzione X = A’B’C’D’ + A’BC’D + AB’CD’
La funzione semplificata diventa X = A’B’C’D’ + BD + AC
CD
AB
00 01 11 10
00 1 0 X 0
01 0 1 X 0
11 X X X X
10 0 0 X 1
BJMC: Mappe di Karnaugh
Semplifichiamo la funzione Y = A’BC’D’ + A’B’CD’ + AB’C’D
La funzione semplificata diventa: Y = A’B’C + BC’D’ + AD
CD
AB
00 01 11 10
00 0 1 X 0
01 0 0 X 1
11 X X X X
10 1 0 X 0
BJMC: Il Circuito
BJMC V2: La Traccia
Si supponga di voler sviluppare una macchina combinatoria in grado di simulare il gioco della Morra Cinese. Volendo scoprire qualcosina in più su questo accattivante gioco di mano, a cui di solito non è avvezzo un villano, possiamo ricorrere a Wikipedia:
La morra cinese, comunemente conosciuta come Sasso-Carta-Forbice, è un gioco di mano popolare, spesso giocato dai bambini. Il gesto di partenza del gioco è quasi identico a quello del "pari o dispari", e il gioco viene usato spesso in contesti analoghi, ovvero quando si debba "tirare a sorte". Diversamente da quanto avviene col lancio della moneta o con altri sistemi puramente aleatori (e contrariamente a quanto si potrebbe forse pensare) esiste in questo gioco un margine per applicare strategia, per lo meno se lo si gioca ripetutamente con lo stesso avversario: si può infatti prestare attenzione alle sue "debolezze" (ovvero, l'eventuale tendenza ad agire con qualche regolarità e quindi prevedibilità). Lo scopo è sconfiggere l'avversario scegliendo un segno in grado di battere quello dell'altro, secondo le seguenti regole:
Il sasso spezza le forbici (vince il sasso) Le forbici tagliano la carta (vincono le forbici) La carta avvolge il sasso (vince la carta)
Se i due giocatori scelgono la stessa arma, il gioco è pari e si gioca di nuovo.
Date queste specifiche funzionali si progetti e si implementi una macchina combinatoria in grado di far giocare due giocatori (che chiameremo Batman e Joker).
Quando vince Batman si dovrà accendere una luce nera. Se vince Joker si dovrà accendere una luce viola. Joker, che è cattivo, vince anche in caso di pareggio.
L’esercizio si considererà concluso dopo aver fornito risposte ai seguenti punti:
Definizione della tavola di verità
Scrittura della funzione d’uscita attraverso il formalismo di rappresentazione denominato Somma di Prodotti Minimizzazione della funzione ottenute attraverso l’utilizzo delle mappe di Karnaugh
BJMC V2: Definizione Ingressi e Uscite
Dall’analisi della traccia si evince che i possibili ingressi sono:
• Sasso_Batman
• Forbici_Batman
• Carta_Batman
• Sasso_Joker
• Forbici_Joker
• Carta_Joker Le uscite sono
• Luce Nera
• Luce Viola
BJMC V2: Definizione e Codifica Ingressi
Conveniamo di codificare gli ingressi attraverso i seguenti segnali binari:
Con la coppia di segnali binari A e B codifichiamo i seguenti ingressi:
• Sasso_Batman: A = 0 B = 0
• Forbici_Batman: A = 0 B = 1
• Carta_Batman: A = 1 B = 0
Con la coppia di segnali binari C e D codifichiamo i seguenti ingressi:
•Sasso_Joker C = 0 D = 0
• Forbici_Joker C = 0 D = 1
• Carta_Joker C = 1 D = 0
BJMC V2: Definizione e Codifica Uscite
Conveniamo di rappresentare e codificare l’uscita attraverso il seguente segnale binario X
• Luce NeraX = 0
• Luce Viola X = 1
BJMC V2: Tavola di Verità
A B C D X
0 0 0 0 1
0 0 0 1 0
0 0 1 0 1
0 0 1 1 -
0 1 0 0 1
0 1 0 1 1
0 1 1 0 0
0 1 1 1 -
1 0 0 0 0
1 0 0 1 1
1 0 1 0 1
1 0 1 1 -
1 1 0 0 -
1 1 0 1 -
1 1 1 0 -
1 1 1 1 -
BJMC V2: Funzioni di Uscita (SoP)
La codifica sotto forma di Somma di Prodotti delle funzioni d’uscita è la seguente:
• X = A’B’C’D’ + A’B’CD’ + A’BC’D’ + A’BC’D + AB’C’D + AB’CD’
A B C D X
0 0 0 0 1
0 0 0 1 0
0 0 1 0 1
0 0 1 1 -
0 1 0 0 1
0 1 0 1 1
0 1 1 0 0
0 1 1 1 -
1 0 0 0 0
1 0 0 1 1
1 0 1 0 1
1 0 1 1 -
1 1 0 0 -
1 1 0 1 -
1 1 1 0 -
BJMC V2: Mappe di Karnaugh
•Semplifichiamo la funzione X = A’B’C’D’ + A’B’CD’ + A’BC’D’ + A’BC’D + AB’C’D + AB’CD’
La funzione semplificata diventa X = A’B’D’ + BC’ + AC + AD
CD
AB
00 01 11 10
00 1 1 X 0
01 0 1 X 1
11 X X X X
10 1 0 X 1