---+++ Homework 3 - vincere il MasterMind Vedi anche: DomandeHomework3 ---- %TOC% ---- Il terzo homework consiste nell'implementazione di una semplice strategia per giocare a MasterMind (dal lato di chi indovina il codice). Il codice da indovinare è di *5* cifre, L'esercizio non è difficile, visto che potete usare il codice del MasterMind già pubblicato per confrontare il codice corrente con ciascuno dei tentativi già fatti. ---++++ Discussione della strategia Supponete che siano stati eseguiti già alcuni tentativi, questo separa lo spazio dei codici in due insiemi, i codici che sono in accordo con le proposte precedenti e quelli che non lo sono. Vogliamo proporre solo codici che sono in accordo con tutti i tentativi precedenti. Il programma gioca contro di voi, che conoscete il codice segreto, e cerca di trovarlo proponendovi una successione di tentativi (un po' come faceva alto-basso) e ricevendo da voi in risposta il numero di strike e ball. ---++++ Strategia da implementare La strategia da implementare consiste nell'esplorare consecutivamente tutti i codici a partire da 00000 e proporre *il primo codice che è in accordo con tutti i tentativi fatti*: * all'inizio la prima proposta (non essendoci tentativi) sarà il codice *00000* * ottenuta la risposta del giocatore la si memorizza assieme al codice proposto * successivamente si esaminano i codici 00001, 00002, 00003 .... e li si confronta con tutti i codici proposti in precedenza * se il codice in esame, confrontato con ciascuno dei tentativi fatti, produce le proprio la risposta corrispondente, lo si propone come nuovo tentativo e memorizza assieme alla risposta del giocatore * altrimenti (se il confronto con uno dei tentativi precedenti dà un risultato diverso da quello che il giocatore umano aveva risposto) si passa ad esaminare il codice successivo. * Si eseguono *al massimo 20 tentativi* ---++++ Terminazione Il programma termina (e esce) se: * ha trovato il codice segreto (ha letto 5 strike e 0 ball) * oppure se non ci sono più codici disponibili (si è arrivati al codice 99999) * oppure se ha proposto già 20 tentativi senza successo ---++++ Output Il programma stampa solo i tentativi, ciascuno come un numero decimale di 5 cifre seguito da accapo. ---++++ Input Il programma legge in input 2 interi separati da spazio che indicano, nell'ordine: * il numero di *strike* ottenuti (un numero tra 0 e 5 compresi) * il numero di *ball* ottenuti (un numero tra 0 e 5 compresi) ---++++ Gestione degli errori NON gestite alcun errore, si assume che l'input sia sempre corretto. ---++++ Esempio di Input-Output Credo che questi siano degli esempi corretti, sono le 2.30AM ed ho sonno, domani controllo di nuovo. In %RED%rosso%FINE% il numero di strike e ball che voi battete sulla tastiera fornendoli in input al programma. <table border=1> <tr><th>Esempio 1 (13732)</th><th>Esempio 2 (98765)</th><th>Esempio 3 (10016)</th></tr> <tr valign=top><td> <pre> 00000 %RED%0 0%FINE% 11111 %RED%1 0%FINE% 12222 %RED%2 0%FINE% 12333 %RED%2 2%FINE% 13234 %RED%3 1%FINE% 13253 %RED%2 2%FINE% 13632 %RED%4 0%FINE% 13732 %RED%5 0%FINE% </pre> </td><td> <pre> 00000 %RED%0 0%FINE% 11111 %RED%0 0%FINE% 22222 %RED%0 0%FINE% 33333 %RED%0 0%FINE% 44444 %RED%0 0%FINE% 55555 %RED%1 0%FINE% 56666 %RED%1 1%FINE% 75677 %RED%0 3%FINE% 86758 %RED%1 3%FINE% 87569 %RED%1 4%FINE% 97856 %RED%1 4%FINE% 98765 %RED%5 0%FINE% </pre> </td><td> <pre> 00000 %RED%2 0%FINE% 00111 %RED%2 2%FINE% 01012 %RED%2 2%FINE% 01103 %RED%0 4%FINE% 10014 %RED%4 0%FINE% 10015 %RED%4 0%FINE% 10016 %RED%5 0%FINE% </pre> </td></tr> </table> ---+++ Scadenza L'esercizio va consegnato entro %RED% *mercoledì 19 novembre* (PROROGATO)%FINE%. %INCLUDE{"WebHome"}% -- Users.AndreaSterbini - 27 Oct 2003 * Set ALLOWTOPICCHANGE = Users.DocentiProg1Group
This topic: Programmazione1/AA0506/PZ
>
HomeWork3
Topic revision: r11 - 2003-11-19 - AndreaSterbini
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback