Un lavoro di Avini Luigi - Un gioco ti po Mastermind
- e-mail :
aviniluigi@libero.it
Luigi ci propone una sua soluzione vba al conosciuto gioco-passatempo
Mastermind. Presento sotto una sua descrizione dei motivi che lo hanno
portato a realizzare il suo lavoro e come è basato il codice vba. Per ogni
ed eventuale chiarimento potrete contattare l'autore all'indirizzo e-mail
riportato sopra.
Avvertenza: Luigi ha predisposto istruzioni per la manipolazione
delle barre dei menù. Coloro che usano menù personalizzati, sono invitati a
non attivare le macro e controllare se il programma è di loro gradimento,
prima di trovarsi con i menù rivoluzionati.
...Ultimamente mi è capitato di giocare con mio
nipote a Mastermind, era molto che non ci
giocavo, e quando è toccato a me preparare il codice segreto di quatto
chiodini colorati, mi
sono reso conto che quella funzione, cioè preparare il codice e
rispondere, con i chiodini
bianchi e neri poteva benissimo essere svolta da un calcolatore.
Essendo appassionato di
fogli di calcolo è scattata la curiosità di pensare quale funzione di
calcolo assolvesse al
compito di rispondere confrontando due combinazioni di colori.
E pensa e ripensa, ho associato ai colori un numero da 1 a 6, ho
lasciato alla funzione
Casuale() il compito di generare un numero da 1 a 6 per ognuna delle 4
posizioni, con
associata la funzione Arrotonda.difetto().
Per assegnare il numero di colori giusti al posto giusto (chiodi
bianchi) e bastata una
sottrazione per ogni posizione tra il codice segreto e il tentativo
del giocatore; la funzione
Conta.se() relativa al risultato "0" della sottrazione mi restituisce
direttamente il numero dei
colori giusti al posto giusto.
Il difficile è stato calcolare i colori presenti ma al posto sbagliato
(chiodini neri), dopo molte ore a
pensare e provare, ho trovato valida la soluzione di utilizzare la
funzione conta.se() per
determinare la frequenza di ogni numero (da 1 a 6) nei due intervalli
(codice segreto e
tentativo), confrontando poi le due serie di 6 cifre ottenute con la
funzione Min(), e sommando il
tutto ho ottenuto il numero di colori presenti ma al posto sbagliato.
Buon divertimento !
Luigi |
Un grazie a Luigi.
File scaricabile e consultabile :
|