Discussione:
Programmino Master Mind
(troppo vecchio per rispondere)
Noixe
2007-04-16 14:38:58 UTC
Permalink
Ciao a tutti,

ho scritto una versione di Master Mind classico (6 colori e 4 buchi).
Qualche tempo fa chiesi informazioni sulle regole di questo gioco quindi se
qualcuno che lo conosce volesse provarlo e dirmi se le informazioni che il
gioco da sono corrette, mi farebbe un piacere :)

Il programma e' per DOS/Windows ed occupa solo 5 KiloByte.

Lo trovate su www.geocities.com/noixe82/MasterMind.zip

Grazie
Dalet
2007-04-16 17:09:53 UTC
Permalink
Post by Noixe
ho scritto una versione di Master Mind classico (6 colori e 4 buchi).
Qualche tempo fa chiesi informazioni sulle regole di questo gioco quindi se
qualcuno che lo conosce volesse provarlo e dirmi se le informazioni che il
gioco da sono corrette, mi farebbe un piacere :)
Mi sembra di si', pero' non so' se hai fatto la scelta
migliore per la visualizzazione: purtroppo con xp la finestra
e' minima e il DOS vero in questa macchina non ce l'ho.
Post by Noixe
Il programma e' per DOS/Windows ed occupa solo 5 KiloByte.
Uhm... questo "solo" m'insospettisce: in che linguaggio
l'hai fatto? non sara' visual basic?

Pensa che e' stato il primo programma (dopo Salve Mondo)
che ho fatto con ogni linguaggio che ho cercato d'imparare.

Con lo z80 l'avevo dovuto contenere in 100 passi! in pascal
ce li dovrei ancora avere i sorgenti, ma l'eseguibile era
piccolissimo (DOS puro) pero' era senza colori.
--
Saluti, Dalet
Noixe
2007-04-16 17:26:07 UTC
Permalink
Post by Dalet
Mi sembra di si', pero' non so' se hai fatto la scelta
migliore per la visualizzazione: purtroppo con xp la finestra
e' minima e il DOS vero in questa macchina non ce l'ho.
Se premi ALT+INVIO non si ingrandisce?
Post by Dalet
Uhm... questo "solo" m'insospettisce: in che linguaggio
l'hai fatto? non sara' visual basic?
Pascal, compilato con Turbo Pascal.
Post by Dalet
Con lo z80 l'avevo dovuto contenere in 100 passi! in pascal
ce li dovrei ancora avere i sorgenti, ma l'eseguibile era
piccolissimo (DOS puro) pero' era senza colori.
Non so, io ho aggiunto delle caratteristiche per gestire ad es. l'input,
onde evitare caratteri errati. I colori sono anch'essi gestiti da una
libreria per applicazioni DOS infatti sono soltanto 16 quelli disponibili.

Ciao
g***@gmail.com
2007-04-17 10:37:40 UTC
Permalink
Post by Noixe
Ciao a tutti,
ho scritto una versione diMasterMindclassico (6 colori e 4 buchi).
Ciao,

qualche anno fa (beh ormai piu di dieci, sigh...) ne avevo scritto una
versione per Windows, con una grafica semplice ma funzionale. Se vuoi
dare un'occhiata lo trovi qui assieme ad altri giochetti:

http://www.gferrari.com/wingames.html

è scritto in Borland Delphi, che è in pratica un Pascal visuale e
object-oriented, se vuoi vedere i sorgenti te li posso mandare senza
problemi (devo prima cercarli però :-). Tra l'altro da poco è uscita
un versione gratuita del compilatore che si chiama TurboDelphi.

Ciao
Giulio
Noixe
2007-04-17 10:56:02 UTC
Permalink
Post by g***@gmail.com
qualche anno fa (beh ormai piu di dieci, sigh...) ne avevo scritto una
versione per Windows, con una grafica semplice ma funzionale. Se vuoi
http://www.gferrari.com/wingames.html
è scritto in Borland Delphi, che è in pratica un Pascal visuale e
object-oriented, se vuoi vedere i sorgenti te li posso mandare senza
problemi (devo prima cercarli però :-). Tra l'altro da poco è uscita
un versione gratuita del compilatore che si chiama TurboDelphi.
Ciao, adesso li vedo. Conosco Delphi, ho letto una guida qualche anno fa
(Delphi 4).
Noixe
2007-04-17 11:06:44 UTC
Permalink
Post by g***@gmail.com
qualche anno fa (beh ormai piu di dieci, sigh...) ne avevo scritto una
versione per Windows, con una grafica semplice ma funzionale. Se vuoi
Li ho visti sono carini. Ma conosci bene Delphi immagino. Sei un
programmatore?

Ciao
g***@gmail.com
2007-04-17 13:16:24 UTC
Permalink
Post by Noixe
Li ho visti sono carini. Ma conosci bene Delphi immagino. Sei un
programmatore?
Al momento solo per hobby, anche se per un po' di tempo l'ho fatto
anche per lavoro. Quei giochi sono i miei primi esperimenti con il
linguaggio Delphi, dopo tanto Pascal. Delphi è un linguaggio
meraviglioso, che uso da anni e conosco abbastanza bene.

Se ti piace il Pascal e la sua filosofia, non puoi non provare
TurboDelphi...

Ciao
Giulio
Noixe
2007-04-17 15:27:07 UTC
Permalink
Post by g***@gmail.com
Al momento solo per hobby,
Ah, pensi di diventarlo? Studi informatica?

Ciao
unknown
2007-04-17 14:44:22 UTC
Permalink
Post by Noixe
Ciao a tutti,
Bello il programma! Solo, invece di mettere "posizioni" e "colori",
avrei messo "strike" e "ball", parole più corte e fanno meno disordine
nella finestra (MasterMind = Strike&Ball, ma quest'ultimo si gioca con
10 numeri anziché con 6 colori)
Post by Noixe
Grazie
Ciao
unknown
2007-04-17 14:49:07 UTC
Permalink
[cut]
Ah, poi, nella sequenza da indovinare non mi risulta si possa usare più
volte un colore.

Ciao!
il p.
Dalet
2007-04-17 15:21:24 UTC
Permalink
Post by unknown
Ah, poi, nella sequenza da indovinare non mi risulta si possa usare più
volte un colore.
Come codice segreto puoi mettere anche tutti e quattro
dello stesso colore ed altrettanto nei tentativi, anche se
non ti conviene in entrambi i casi.
Questo da regolamento ufficiale son sicuro.
--
Saluti, Dalet
Dalet
2007-04-17 15:21:24 UTC
Permalink
Post by unknown
Bello il programma! Solo, invece di mettere "posizioni" e "colori",
avrei messo "strike" e "ball", parole più corte e fanno meno disordine
nella finestra (MasterMind = Strike&Ball, ma quest'ultimo si gioca con
10 numeri anziché con 6 colori)
Ma non e' strike e spare?
Di solito a mano si gioca con le cifre 1...6 al posto dei
colori e il simolo X per strike=NERO ed invece / per
spare=BIANCO.

Con 10 invece non e' l'originale.
--
Saluti, Dalet
unknown
2007-04-17 16:06:36 UTC
Permalink
Post by Dalet
Ma non e' strike e spare?
Di solito a mano si gioca con le cifre 1...6 al posto dei
colori e il simolo X per strike=NERO ed invece / per
spare=BIANCO.
Con 10 invece non e' l'originale.
Ah, allora è un po' diverso. Insomma, io solitamente gioco alla versione
con 10 numeri (0..9) e nella combinazione da indovinare non si possono
ripetere numeri. Poi, l'ho sempre sentito chiamare Strike&ball, con il
segno X per lo strike e O per il ball.

Ciao!
il p.
Noixe
2007-04-17 15:25:11 UTC
Permalink
Post by unknown
Bello il programma!
Grazie :D
Post by unknown
Solo, invece di mettere "posizioni" e "colori", avrei messo "strike" e
"ball", parole più corte e fanno meno disordine
Non sapevo si usassero tali termini. Comunque ho cercato di calcolare la
posizione in cui devono apparire tutte le scritte in modo da avere tutto in
maniera più ordinata possibile.

Ciao
unknown
2007-04-17 16:03:56 UTC
Permalink
Post by Noixe
Non sapevo si usassero tali termini. Comunque ho cercato di calcolare la
posizione in cui devono apparire tutte le scritte in modo da avere tutto in
maniera più ordinata possibile.
Sì, infatti la finestra è molto ordinata, complimenti.
Post by Noixe
Ciao
Ciao!
il p.
Giorgio Vecchi
2007-04-20 08:25:25 UTC
Permalink
Post by Noixe
Ciao a tutti,
ho scritto una versione di Master Mind classico (6 colori e 4 buchi).
Qualche tempo fa chiesi informazioni sulle regole di questo gioco quindi se
qualcuno che lo conosce volesse provarlo e dirmi se le informazioni che il
gioco da sono corrette, mi farebbe un piacere :)
Il programma e' per DOS/Windows ed occupa solo 5 KiloByte.
Lo trovate su www.geocities.com/noixe82/MasterMind.zip
All'epoca avevo scritto anch'io un programmino di mastermind, risale a un
paio di anni fa, mi sembra di averlo scritto dopo che l'argomento mastermind
era stato trattato qui sul ng (periodicamente il tema ritorna). E' scritto
in C# (?), ho provato a dare un'occhiata al codice sorgente ma non ho capito
niente di quello che fa! Mi ricordo però l'idea che all'epoca avevo voluto
implementare: il programma svolge, a richiesta, il ruolo di codificatore e
di decodificatore. Come decodificatore implementa la seguente strategia:
adotta di volta in volta come tentativo quello che, nell'ipotesi di risposta
peggiore da parte dell'avversario, riduce al minimo la rosa delle scelte
rimanenti. Come codificatore implementa una strategia un po' perfida (e
penso anche un po' illegale...): invece di scegliere inizialmente a caso un
codice, non sceglie niente e basa le sue risposte sui tentativi
dell'avversario, fornendo sempre la risposta peggiore per l'avversario
(naturalmente tra quelle coerenti con l'andamento della partita).

Come interfaccia utente è quanto di peggio si possa concepire: interfaccia a
carattere, input non controllato (se ci si sbaglia a digitare si inchioda o
procede a casaccio), i colori sono rappresentati da cifre da 0 a 5 su 4
posizioni, le risposte vengono fornite in termini di Neri (cifra giusta nel
posto giusto) e Bianchi (cifra giusta nel posto sbagliato). Se barate nel
dare le risposte, non se ne accorge e va avanti tranquillo. Al termine di
ogni round il programma termina.

Trattandosi di un programma in C#, credo proprio che abbia bisogno del
Framework .NET installato sulla macchina ospite.

All'epoca non lo avevo testato più di tanto, quindi spero che faccia
effettivamente quello che ho detto, ma non garantisco. Siccome è un file
molto piccolo (4 KB zippato), tento di allegarlo qui. Se non dovesse
passare provo a metterlo sul "nostro" newsgroup:
http://it.groups.yahoo.com/group/enigmi/. Se poi qualcuno lo vuole prendere
da lì e metterlo in un posto più accessibile, non c'è problema (sempre che
la cosa interessi a qualcuno).

Ciao

Giorgio
Noixe
2007-04-20 08:47:59 UTC
Permalink
Post by Giorgio Vecchi
adotta di volta in volta come tentativo quello che, nell'ipotesi di
risposta
peggiore da parte dell'avversario, riduce al minimo la rosa delle scelte
rimanenti.
Ma in quanti tentativi indovina?
Io ho provato a fargli decodificare la sequenza 1234.
Al quinto o sesto tentativo, non ricordo, si era avvicinato con 1 posizione
giusta e 3 colori giusti.
Al tentativo successivo ha iniziato a tirare in ballo anche altri colori(0 e
5), mentre pensavo iniziare a lavorare solo con quei 4.
In definitiva sono arrivato al 21° tentativo e ancora era in alto mare...

Poi ho notato che quando fa da codificatore, ad ogni tentativo fatto associa
un numero tra parentesi. Che cosa indica?
Post by Giorgio Vecchi
Come codificatore implementa una strategia un po' perfida (e
penso anche un po' illegale...): invece di scegliere inizialmente a caso
un
codice, non sceglie niente e basa le sue risposte sui tentativi
dell'avversario, fornendo sempre la risposta peggiore per l'avversario
(naturalmente tra quelle coerenti con l'andamento della partita).
Eheh va be, in effetti credo non sia legale. In questo caso il gioco lo
dovresti chiamare Bastard Mind! :-)

Ciao
Giorgio Vecchi
2007-04-20 09:24:11 UTC
Permalink
Post by Noixe
Ma in quanti tentativi indovina?
Io ho provato a fargli decodificare la sequenza 1234.
Al quinto o sesto tentativo, non ricordo, si era avvicinato con 1
posizione giusta e 3 colori giusti.
Al tentativo successivo ha iniziato a tirare in ballo anche altri colori(0
e 5), mentre pensavo iniziare a lavorare solo con quei 4.
In definitiva sono arrivato al 21° tentativo e ancora era in alto mare...
Probabilmente gli hai dato involontariamente una risposta incoerente con le
precedenti. Come ho detto, in questi casi il programma non fa controlli e
continua a fare tentativi che appaiono un po' casuali.

Ho fatto una decina di prove facendogli indovinare 1234. Di solito lo trova
in 5 tentativi, qualche volta in 4 e anche in 3, ma in questo caso è
fortuna...

Credo che in tutti i casi non superi mai i 5 tentativi. Se lo fa, dovresti
controllare di avergli dato le risposte giuste in precedenza. Se proprio sei
convinto che siano giuste, prova a copincollare l'output che gli do
un'occhiata.
Post by Noixe
Poi ho notato che quando fa da codificatore, ad ogni tentativo fatto
associa un numero tra parentesi. Che cosa indica?
Dovrebbe essere un'indicazione del numero delle possibili soluzioni che
rimangono nel caso che la risposta sia quella indicata dalle due cifre che
seguono (e che il programma considera la peggiore dal suo punto di vista).

Ciao

Giorgio
Noixe
2007-04-20 16:25:42 UTC
Permalink
Post by Giorgio Vecchi
Ho fatto una decina di prove facendogli indovinare 1234. Di solito lo
trova in 5 tentativi, qualche volta in 4 e anche in 3, ma in questo caso è
fortuna...
Credo che in tutti i casi non superi mai i 5 tentativi. Se lo fa, dovresti
controllare di avergli dato le risposte giuste in precedenza. Se proprio
sei convinto che siano giuste, prova a copincollare l'output che gli do
un'occhiata.
Ok ho riprovato e in 5 tentativi in effetti ci è riuscito, probabilmente ho
sbagliato io a inserire Neri e Bianchi.
Ma l'algoritmo che hai applicato è di tua invenzione o è reperibile in rete?
Giorgio Vecchi
2007-04-20 18:55:10 UTC
Permalink
Post by Noixe
Ok ho riprovato e in 5 tentativi in effetti ci è riuscito, probabilmente
ho sbagliato io a inserire Neri e Bianchi.
Ma l'algoritmo che hai applicato è di tua invenzione o è reperibile in rete?
Se sia reperibile in rete non saprei. Non vorrei averti fuorviato con il
fatto che guardando il codice sorgente non ho capito che cosa facesse:
questa è proprio la dimostrazione che l'ho concepito io! :-)

Guarda che non è niente di stravolgente, l'avrò scritto in un mezzo
pomeriggio, solo che volendo usare C# (e non ricordo perché), l'ho condito
con classi strane e cose forse anche inutili e non mi viene molto voglia di
capirne la logica. Se lo riscrivessi oggi lo farei in tutt'altro modo (e
domani in un altro modo ancora).

Comunque, se ti interessa il sorgente, te lo do, a patto che non mi chiedi
chiarimenti e che non lo consideri un esempio di come si debba programmare e
che non lo divulghi in giro dicendo che l'ho scritto io! :-)

Fammi sapere, anche in privato (il mio indirizzo è valido).

Ciao

Giorgio
Noixe
2007-04-20 19:50:09 UTC
Permalink
Post by Giorgio Vecchi
Comunque, se ti interessa il sorgente, te lo do, a patto che non mi chiedi
chiarimenti e che non lo consideri un esempio di come si debba programmare
e che non lo divulghi in giro dicendo che l'ho scritto io! :-)
Fammi sapere, anche in privato (il mio indirizzo è valido).
Ok eventualmente puoi mandarlo a noixe at email.it

Pensavo applicassi qualche algoritmo noto, qualcosa insomma che ottimizza i
tentativi necessari. Ma avevo in mente di inventarne uno io, forse ci penso
un po'.

Ciao
Roberto Montaruli
2007-04-22 20:15:34 UTC
Permalink
Post by Noixe
Pensavo applicassi qualche algoritmo noto, qualcosa insomma che ottimizza i
tentativi necessari. Ma avevo in mente di inventarne uno io, forse ci penso
un po'.
Boh... considerando il basso numero di possibilita' in gioco, io credo
che un semplice algoritmo di risoluzione del master mind con M su N
colori preveda di generare numeri in base N di M cifre, e incrementare
fino al successivo numero compatibile con le precedenti risposte.

Nel caso di 4 su 6 colori si prendono tutti i numeri in base 6
da 0000 a 5555
il primo lo si prende casualmente e poi si incrementa sempre
quando si arriva a 5555 si riparte da 0000.

Algoritmo molto stupido ma decisamente efficiente, e non credo che si
possa fare molto meglio.
Giorgio Vecchi
2007-04-23 06:47:29 UTC
Permalink
Boh... considerando il basso numero di possibilita' in gioco, io credo che
un semplice algoritmo di risoluzione del master mind con M su N colori
preveda di generare numeri in base N di M cifre, e incrementare fino al
successivo numero compatibile con le precedenti risposte.
Nel caso di 4 su 6 colori si prendono tutti i numeri in base 6
da 0000 a 5555
il primo lo si prende casualmente e poi si incrementa sempre
quando si arriva a 5555 si riparte da 0000.
Algoritmo molto stupido ma decisamente efficiente, e non credo che si
possa fare molto meglio.
Sì, questo è il primo approccio a cui di solito si pensa ed è anche molto
facile da implementare (questo stesso tuo algoritmo lo avevo implementato in
un mio primo programma di mastermind che ormai risale a oltre 25 anni fa
:-( ). Però è vero che non dà le prestazioni migliori. Come esempio basta
pensare al caso (abbastanza frequente) in cui hai battezzato con certezza 3
neri e ti rimangono 3 scelte possibili per il quarto piolo. Se provi solo
tentativi compatibili puoi risolverlo in 1, 2 o 3 tentativi (in media 2).
Se invece l'algoritmo prevede l'utilizzo di tentativi non compatibili, con
un'opportuna scelta hai la certezza di disambiguare il piolo in un tentativo
(sicuramente sbagliato) e di indovinarlo con certezza al secondo. In
generale ci sono molti altri casi in cui un tentativo sicuramente sbagliato
fornisce indicazioni maggiori anche del miglior tentativo compatibile (nel
mio listato c'è una riga commentata che esclude i tentativi non compatibili,
se la decommento i tempi migliorano di molto ma la efficacia peggiora).

Naturalmente questo algoritmo "migliorato" (che di ogni tentativo (anche non
compatibile) valuta la "bontà") è un po' più complesso da implementare ma
l'idea base è la stessa: si devono provare tutte le possibilità scegliendo
per ogni turno quella che promette le informazioni migliori. Con 4 pioli e 6
colori i tempi rimangono accettabili; con 5 pioli e 8 colori (Super Master
Mind?), i tempi si allungano e bisognerebbe studiare qualche forma di
ottimizzazione (non dovrebbe essere difficile, anche perché il mio attuale
programmino non è stato concepito per l'efficienza in termini di esecuzione,
però non ho davvero voglia di riprenderlo in mano).

Ciao

Giorgio
Roberto Montaruli
2007-04-23 18:13:47 UTC
Permalink
Post by Giorgio Vecchi
Come esempio basta
pensare al caso (abbastanza frequente) in cui hai battezzato con certezza 3
neri e ti rimangono 3 scelte possibili per il quarto piolo. Se provi solo
tentativi compatibili puoi risolverlo in 1, 2 o 3 tentativi (in media 2).
Se invece l'algoritmo prevede l'utilizzo di tentativi non compatibili, con
un'opportuna scelta hai la certezza di disambiguare il piolo in un tentativo
(sicuramente sbagliato) e di indovinarlo con certezza al secondo.
Quindi invece che avere una soluzione con media 2 tentativi, tu,
fornendo una soluzione intermedia sicuramente errata, arrivi a risolvere
con 2 tentativi esatti.

Che differenza c'e' tra due in media (con possibilita' di indovinare
anche al primo colpo) e due sempre (con la sicurezza di sbagliare sempre
il primo colpo)?

Mi pare che non ci sia alcun vantaggio pratico.

A meno che tu non sia in un caso con 4 tentativi possibili e riesca ad
eliminarne 3 con un colpo solo, ma non sono riuscito a figurarmelo un
caso del genere.
Post by Giorgio Vecchi
In
generale ci sono molti altri casi in cui un tentativo sicuramente sbagliato
fornisce indicazioni maggiori anche del miglior tentativo compatibile (nel
mio listato c'è una riga commentata che esclude i tentativi non compatibili,
se la decommento i tempi migliorano di molto ma la efficacia peggiora).
Va bene, ma questi casi con che frequenza si verificano?
Tieni conto che introdurre volutamente una risposta errata per avere
piu' informazioni deve avere un guadagno maggiore del costo.
E forse di fronte ad un esempio ci capiremmo meglio (io almeno)
Post by Giorgio Vecchi
Naturalmente questo algoritmo "migliorato" (che di ogni tentativo (anche non
compatibile) valuta la "bontà") è un po' più complesso da implementare ma
l'idea base è la stessa: si devono provare tutte le possibilità scegliendo
per ogni turno quella che promette le informazioni migliori. Con 4 pioli e 6
colori i tempi rimangono accettabili; con 5 pioli e 8 colori (Super Master
Mind?), i tempi si allungano e bisognerebbe studiare qualche forma di
ottimizzazione (non dovrebbe essere difficile, anche perché il mio attuale
programmino non è stato concepito per l'efficienza in termini di esecuzione,
però non ho davvero voglia di riprenderlo in mano).
5 pioli e 8 colori producono meno di 10.000 combinazioni (10.000
combinazioni sono prodotte da 5 pioli e 10 colori).
E un computer a generare 10.000 numeri consecutivi oggigiorno ci mette
meno del tempo con cui tu leggi ba!
Il mastermind e' un gioco talmente limitato che coi computer di oggi non
ha senso parlare di tempo di elaborazione.
Forse lo era anni fa ai tempi del tuo vecchio programmino.
Noixe
2007-04-23 19:50:09 UTC
Permalink
Post by Roberto Montaruli
5 pioli e 8 colori producono meno di 10.000 combinazioni (10.000
combinazioni sono prodotte da 5 pioli e 10 colori).
Dati p pioli e c colori le combinazioni sono c^p quindi
5 pioli e 8 colori vuol dire 8^5 = 32.768 combinazioni.
5 pioli e 10 colori vuol dire 10^5 = 100.000 combinazioni.

Ciao
Giorgio Vecchi
2007-04-24 08:20:50 UTC
Permalink
Quindi invece che avere una soluzione con media 2 tentativi, tu, fornendo
una soluzione intermedia sicuramente errata, arrivi a risolvere con 2
tentativi esatti.
Che differenza c'e' tra due in media (con possibilita' di indovinare anche
al primo colpo) e due sempre (con la sicurezza di sbagliare sempre il
primo colpo)?
Mi pare che non ci sia alcun vantaggio pratico.
Le mie considerazioni discendevano da ipotesi di gioco non condizionato
dalla fortuna, situazione ideale per il test di un programma. In tutti i
casi il mio programmino non supera mai i 5 tentativi, il tuo algoritmo
potrebbe impiegarne di più se trova situazioni sfavorevoli o condotte ad
arte. Il tuo può essere fortunato e indovinare in meno tentativi, ma anche
il mio. Nel mio, la scelta di un tentativo sicuramente sbagliato viene fatta
solo se tale tentativo è potenzialmente migliore (in caso di risposta
sfavorevole) di un corrispondente tentativo compatibile.
A meno che tu non sia in un caso con 4 tentativi possibili e riesca ad
eliminarne 3 con un colpo solo, ma non sono riuscito a figurarmelo un caso
del genere.
Va bene, ma questi casi con che frequenza si verificano?
Tieni conto che introdurre volutamente una risposta errata per avere piu'
informazioni deve avere un guadagno maggiore del costo.
E forse di fronte ad un esempio ci capiremmo meglio (io almeno)
Sinceramente non lo so e non ho voglia di pensarci. Ti consiglierei di far
giocare il mio programmino contro il tuo algoritmo. Dovrebbe essere
sufficiente per avere un'idea statistica delle prestazioni. Io l'ho testato
con il programma che implementa il tuo algoritmo e altri trovati in rete e
mi sono convinto sperimentalmente della sua validità: batte tutti quelli che
ho trovato fino ad ora.

Qualche prova contro il programma che implementa il tuo algoritmo porta a
questi risultati:

Il mio programmino contro un codificatore "normale": mediamente circa 4.5
tentativi con massimi di 5.
Il mio programmino contro un codificatore "perfido" o "dinamico": 5
tentativi sempre.

Il tuo algoritmo contro un codificatore "normale": mediamente circa 4.5
tentativi con massimi di 7.
Il tuo algoritmo contro un codificatore "perfido" o "dinamico": mediamente
6.3 tentativi con massimi di 7.
5 pioli e 8 colori producono meno di 10.000 combinazioni (10.000
combinazioni sono prodotte da 5 pioli e 10 colori).
E un computer a generare 10.000 numeri consecutivi oggigiorno ci mette
meno del tempo con cui tu leggi ba!
Il mastermind e' un gioco talmente limitato che coi computer di oggi non
ha senso parlare di tempo di elaborazione.
Forse lo era anni fa ai tempi del tuo vecchio programmino.
Il fatto è che il mio programma non si limita a generare a caso uno di quei
tentativi (che sarebbero 32678 con 5 pioli e 8 colori), ma li passa in
rassegna tutti per stabilire quale riduce al minimo le possibilità
successive; quindi per ognuno valuta le possibili risposte e prende il
tentativo che, in caso di risposta più sfavorevole, minimizza il numero dei
tentativi rimanenti. Come ti ho detto, sarà anche migliorabile, ma qualche
ciclo annidato da gestire c'è e questo allunga i tempi di elaborazione.

Ciao

Giorgio
Robbi
2007-05-01 21:09:29 UTC
Permalink
Post by Giorgio Vecchi
Naturalmente questo algoritmo "migliorato" (che di ogni tentativo (anche non
compatibile) valuta la "bontà") è un po' più complesso da implementare ma
l'idea base è la stessa: si devono provare tutte le possibilità scegliendo
per ogni turno quella che promette le informazioni migliori. Con 4 pioli e 6
Qua c'e' uno studio che parla anche della strategia migliore per il
master mind a 6 colori (e fa delle stime per versioni piu' generali):

http://www.tnelson.demon.co.uk/mastermind/
Noixe
2007-04-23 13:51:00 UTC
Permalink
Post by Roberto Montaruli
Nel caso di 4 su 6 colori si prendono tutti i numeri in base 6
da 0000 a 5555
il primo lo si prende casualmente e poi si incrementa sempre
quando si arriva a 5555 si riparte da 0000.
In questo modo si andrebbero eliminando tutti i casi che non possono essere
soluzione?
Roberto Montaruli
2007-04-23 18:15:56 UTC
Permalink
Post by Noixe
Post by Roberto Montaruli
Nel caso di 4 su 6 colori si prendono tutti i numeri in base 6
da 0000 a 5555
il primo lo si prende casualmente e poi si incrementa sempre
quando si arriva a 5555 si riparte da 0000.
In questo modo si andrebbero eliminando tutti i casi che non possono essere
soluzione?
Si.
Tu parti da un numero qualunque, es 1234, quindi continui ad
incrementare fino al successivo che rispetta tutte le condizioni, e poi
incrementi fino al successivo...
quandi arrivi a 5555 riparti da 0000 e vai incrementando...
Alla fine arrivi al risultato.
Oppure ritorni a 1234 e vuol dire che l'avversario ti ha fornito
indicazioni errate.
Noixe
2007-04-23 19:46:33 UTC
Permalink
Si.
Tu parti da un numero qualunque, es 1234, quindi continui ad incrementare
fino al successivo che rispetta tutte le condizioni, e poi incrementi fino
al successivo...
quandi arrivi a 5555 riparti da 0000 e vai incrementando...
Alla fine arrivi al risultato.
Oppure ritorni a 1234 e vuol dire che l'avversario ti ha fornito
indicazioni errate.
Ok ma in quanti tentativi scopre la soluzione? Ci riesce in 5/6 tentativi?
Roberto Montaruli
2007-04-23 19:54:10 UTC
Permalink
Post by Noixe
Si.
Tu parti da un numero qualunque, es 1234, quindi continui ad incrementare
fino al successivo che rispetta tutte le condizioni, e poi incrementi fino
al successivo...
quandi arrivi a 5555 riparti da 0000 e vai incrementando...
Alla fine arrivi al risultato.
Oppure ritorni a 1234 e vuol dire che l'avversario ti ha fornito
indicazioni errate.
Ok ma in quanti tentativi scopre la soluzione? Ci riesce in 5/6 tentativi?
Tendenzialmente si.

Il numero di tentativi dipende molto dalla casualita' del primo
tentativo, ma in 5/6 ci si sta comodi.

Si puo' provare a fare una simulazione.
Dalet
2007-04-20 12:09:05 UTC
Permalink
Post by Noixe
Post by Giorgio Vecchi
adotta di volta in volta come tentativo quello che, nell'ipotesi di
risposta
peggiore da parte dell'avversario, riduce al minimo la rosa delle scelte
rimanenti.
Ma in quanti tentativi indovina?
Max 6 se non ricordo male, quindi SEMPRE 6.
Post by Noixe
Post by Giorgio Vecchi
penso anche un po' illegale...): invece di scegliere inizialmente a caso
un
codice, non sceglie niente e basa le sue risposte sui tentativi
dell'avversario, fornendo sempre la risposta peggiore per l'avversario
(naturalmente tra quelle coerenti con l'andamento della partita).
Eheh va be, in effetti credo non sia legale. In questo caso il gioco lo
dovresti chiamare Bastard Mind! :-)
Esiste, e' una variante del mastermind, e spesso viene
chiamato mastermind attivo.

Ma in pratica e' un altro gioco in cui viene eliminata la
fortuna. Pero' con 6 colori si giunge in fretta all'
esperienza sufficiente a pareggiare tutte le partite (sempre
6 da entrambi) e quindi a togliere ogni interesse al gioco.
--
Saluti, Dalet
Noixe
2007-04-20 19:57:03 UTC
Permalink
E' scritto in C# (?),
Ho iniziato ieri a studiare questo linguaggio :)
adotta di volta in volta come tentativo quello che, nell'ipotesi di
risposta
peggiore da parte dell'avversario, riduce al minimo la rosa delle scelte
rimanenti.
Cioé prova la sequenza che anche nel peggiore dei casi lascia meno
alternative?
E come la calcola? La prima credo debba avere 4 elementi diversi, no?
E poi per le successive si regole sempre secondo questa regola tenendo conto
anche delle risposte precedenti?
Come codificatore implementa una strategia un po' perfida (e
penso anche un po' illegale...): invece di scegliere inizialmente a caso
un
codice, non sceglie niente e basa le sue risposte sui tentativi
dell'avversario, fornendo sempre la risposta peggiore per l'avversario
(naturalmente tra quelle coerenti con l'andamento della partita).
Quindi e' come se la costruisse gradualmente, in base alle richieste?

Ciao
anbra1
2007-05-05 15:38:49 UTC
Permalink
Post by Noixe
Ciao a tutti,
ho scritto una versione di Master Mind classico (6 colori e 4 buchi).
Qualche tempo fa chiesi informazioni sulle regole di questo gioco quindi
se qualcuno che lo conosce volesse provarlo e dirmi se le informazioni che
il gioco da sono corrette, mi farebbe un piacere :)
Il programma e' per DOS/Windows ed occupa solo 5 KiloByte.
Lo trovate su www.geocities.com/noixe82/MasterMind.zip
Grazie
Dove posso scaricarlo?
che con questo indirizzo www.geocities.com/noixe82/MasterMind.zip
yahoo mi dice che la pagina non esiste o similia
grazie
Bub
2020-05-23 15:50:45 UTC
Permalink
Post by anbra1
Post by Noixe
Ciao a tutti,
ho scritto una versione di Master Mind classico (6 colori e 4 buchi).
Qualche tempo fa chiesi informazioni sulle regole di questo gioco quindi
se qualcuno che lo conosce volesse provarlo e dirmi se le informazioni che
il gioco da sono corrette, mi farebbe un piacere :)
Il programma e' per DOS/Windows ed occupa solo 5 KiloByte.
Lo trovate su www.geocities.com/noixe82/MasterMind.zip
Grazie
Dove posso scaricarlo?
che con questo indirizzo www.geocities.com/noixe82/MasterMind.zip
yahoo mi dice che la pagina non esiste o similia
grazie
https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwij9MLyqsrpAhUksKQKHdMrCnYQFjAAegQIARAB&url=https%3A%2F%2Fdocs.google.com%2Fviewer%3Fa%3Dv%26pid%3Dsites%26srcid%3DZGVmYXVsdGRvbWFpbnxhbHZhcm9kZWdhc2FycXVpdm9zfGd4OjIyMWE0ZjljNTNkYmUwYWM&usg=AOvVaw1av9iV2NP6BEjh_pDw6_92
LAB
2020-10-23 07:07:26 UTC
Permalink
A parte i 13 anni che sono passati, così è un po' più semplice:

<https://32aaf2cd-a-62cb3a1a-s-sites.googlegroups.com/site/alvarodegasarquivos/home/ia/MasterMind.zip>
Continua a leggere su narkive:
Loading...