Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Programmino Master Mind

200 views
Skip to first unread message

Noixe

unread,
Apr 16, 2007, 10:38:58 AM4/16/07
to
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

unread,
Apr 16, 2007, 1:09:53 PM4/16/07
to
Il 16-04-2007, Noixe dice:

>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.

>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

unread,
Apr 16, 2007, 1:26:07 PM4/16/07
to
"Dalet" <da...@tiscali.it> ha scritto:

> 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?

> Uhm... questo "solo" m'insospettisce: in che linguaggio
> l'hai fatto? non sara' visual basic?

Pascal, compilato con Turbo Pascal.

> 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


gfha...@gmail.com

unread,
Apr 17, 2007, 6:37:40 AM4/17/07
to
On 16 Apr, 16:38, "Noixe" <n...@TOGLIMIemail.it> wrote:
> 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

unread,
Apr 17, 2007, 6:56:02 AM4/17/07
to
<gfha...@gmail.com> ha scritto:

>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, adesso li vedo. Conosco Delphi, ho letto una guida qualche anno fa
(Delphi 4).


Noixe

unread,
Apr 17, 2007, 7:06:44 AM4/17/07
to
<gfha...@gmail.com> ha scritto:

>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:

Li ho visti sono carini. Ma conosci bene Delphi immagino. Sei un
programmatore?

Ciao


gfha...@gmail.com

unread,
Apr 17, 2007, 9:16:24 AM4/17/07
to
On 17 Apr, 13:06, "Noixe" <n...@TOGLIMIemail.it> wrote:
>
> 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

il Pigro

unread,
Apr 17, 2007, 10:44:22 AM4/17/07
to
Noixe ha scritto:
> 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)


> Grazie
>
>

Ciao

il Pigro

unread,
Apr 17, 2007, 10:49:07 AM4/17/07
to
il Pigro > ha scritto:

> [cut]

Ah, poi, nella sequenza da indovinare non mi risulta si possa usare più
volte un colore.

Ciao!
il p.

Dalet

unread,
Apr 17, 2007, 11:21:24 AM4/17/07
to
Il 17-04-2007, il Pigro dice:

>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

Dalet

unread,
Apr 17, 2007, 11:21:24 AM4/17/07
to
Il 17-04-2007, il Pigro dice:

>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

Noixe

unread,
Apr 17, 2007, 11:25:11 AM4/17/07
to
"il Pigro" <""nameless\"@@fastwebnet.fastwebnet.it.it"> ha scritto:

> Bello il programma!

Grazie :D

> 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


Noixe

unread,
Apr 17, 2007, 11:27:07 AM4/17/07
to
<gfha...@gmail.com> ha scritto:

>Al momento solo per hobby,

Ah, pensi di diventarlo? Studi informatica?

Ciao


il Pigro

unread,
Apr 17, 2007, 12:03:56 PM4/17/07
to
Noixe ha scritto:

> 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.

> Ciao
>
>

Ciao!
il p.

il Pigro

unread,
Apr 17, 2007, 12:06:36 PM4/17/07
to
Dalet ha scritto:

> 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.

Giorgio Vecchi

unread,
Apr 20, 2007, 4:25:25 AM4/20/07
to
"Noixe" <no...@TOGLIMIemail.it> wrote

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

unread,
Apr 20, 2007, 4:47:59 AM4/20/07
to
"Giorgio Vecchi" <ne...@vecchi.info> ha scritto:


> 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.

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?

>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

unread,
Apr 20, 2007, 5:24:11 AM4/20/07
to
"Noixe" <no...@TOGLIMIemail.it> wrote in message
news:46287e2c$0$36446$4faf...@reader5.news.tin.it...

> "Giorgio Vecchi" <ne...@vecchi.info> ha scritto:
>
>
>
> 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.


> 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


Dalet

unread,
Apr 20, 2007, 8:09:05 AM4/20/07
to
Il 20-04-2007, Noixe dice:

>"Giorgio Vecchi" <ne...@vecchi.info> ha scritto:

>>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.

>Ma in quanti tentativi indovina?

Max 6 se non ricordo male, quindi SEMPRE 6.

>>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

unread,
Apr 20, 2007, 12:25:42 PM4/20/07
to
"Giorgio Vecchi" <ne...@vecchi.info> ha scritto:

> 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

unread,
Apr 20, 2007, 2:55:10 PM4/20/07
to
"Noixe" <no...@TOGLIMIemail.it> wrote

> "Giorgio Vecchi" <ne...@vecchi.info> ha scritto:
>
>
> 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

unread,
Apr 20, 2007, 3:50:09 PM4/20/07
to
"Giorgio Vecchi" <ne...@vecchi.info> ha scritto:

> 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


Noixe

unread,
Apr 20, 2007, 3:57:03 PM4/20/07
to
"Giorgio Vecchi" <ne...@vecchi.info> ha scritto:

> E' scritto in C# (?),

Ho iniziato ieri a studiare questo linguaggio :)

> 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.

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


Roberto Montaruli

unread,
Apr 22, 2007, 4:15:34 PM4/22/07
to
Noixe ha scritto:

> 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

unread,
Apr 23, 2007, 2:47:29 AM4/23/07
to
"Roberto Montaruli" <rmont...@yahoo.com> wrote
> Noixe ha scritto:

>
>
> 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


Noixe

unread,
Apr 23, 2007, 9:51:00 AM4/23/07
to
"Roberto Montaruli" <rmont...@yahoo.com> ha scritto:

> 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

unread,
Apr 23, 2007, 2:13:47 PM4/23/07
to
Giorgio Vecchi ha scritto:

> 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.

> 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)

> 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.

Roberto Montaruli

unread,
Apr 23, 2007, 2:15:56 PM4/23/07
to
Noixe ha scritto:

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

unread,
Apr 23, 2007, 3:46:33 PM4/23/07
to
"Roberto Montaruli" <rmont...@yahoo.com> ha scritto:

> 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?


Noixe

unread,
Apr 23, 2007, 3:50:09 PM4/23/07
to
"Roberto Montaruli" <rmont...@yahoo.com> ha scritto:

> 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


Roberto Montaruli

unread,
Apr 23, 2007, 3:54:10 PM4/23/07
to
Noixe ha scritto:

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.


Giorgio Vecchi

unread,
Apr 24, 2007, 4:20:50 AM4/24/07
to
"Roberto Montaruli" <rmont...@yahoo.com> wrote

>
> 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

unread,
May 1, 2007, 5:09:29 PM5/1/07
to
On Apr 23, 8:47 am, "Giorgio Vecchi" <n...@vecchi.info> wrote:

> 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/


anbra1

unread,
May 5, 2007, 11:38:49 AM5/5/07
to
> 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

unread,
May 23, 2020, 11:50:47 AM5/23/20
to

LAB

unread,
Oct 23, 2020, 3:07:29 AM10/23/20
to
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>
0 new messages