Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Mastermind... Kako kompjuter da odigra???

[es] :: Veštačka inteligencija :: Mastermind... Kako kompjuter da odigra???

[ Pregleda: 6425 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Nikolavlasotince
Nikola Stojiljkovic
Vlasotince/Beograd

Član broj: 139391
Poruke: 109
*.ADSL.neobee.net.



+1 Profil

icon Mastermind... Kako kompjuter da odigra???23.03.2008. u 00:23 - pre 195 meseci
Poceo sam da pravim igru MasterMind ali sam naisao na problem kako naterati kompjutera da misli. Kompjuter uvek zna koja je dobitna kombinacija a bilo bi glupo da kompjuter u prvom potezu napise resenje. Da li neko moze da mi pomogne kako to da napravim? Treba da u 6 pokusaja, od 6 ponudjenih znakova (neka budu 1, 2, 3, 4, 5 i 6) dodjem do resenja koje se sastoji od 4 znakova. Nadam se da me razumete. Potrebna mi je pomoc pls.

Pozz
 
Odgovor na temu

vlaiv
Vladimir Vlaisavljevic
Novi Sad

Član broj: 15993
Poruke: 352
212.200.249.*



+1 Profil

icon Re: Mastermind... Kako kompjuter da odigra???25.03.2008. u 14:42 - pre 195 meseci
Probaj nekim "tezinskim" sistemom, odnosno sistemom verovatnoce.

recimo da si izbacio kombinaciju

1,2,3,4

i dobio 2T i 1P (dva tacna i jedan prisutan)

svakom od brojeva 1,2,3,4 dodeljujes odgovarajuce verovatnoce (verovatnocu da je prisutan i verovatnocu da je na tacnoj poziciji)

Sledece sto trebash da uradish jeste da smislis nacin provere da li si bio u pravu odnosno korekcije verovatnoca (dok ih ne doterash do jedan)
tako sto ces u sledecem potezu neke ostaviti a neke druge brojeve ubaciti.

Nivo tezine mozes da organizujes tako sto ces ubaciti randomnes u procesu dodeljivanja verovatnoce (recimo 80% ce tacno dodeliti verovatnocu
a 20% slucajeva ce nesto prevideti)

Naravno sve na kraju ide na empirijsku proveru.

Nadam se da sam ti dao bar neke kvalitetne smernice.
 
Odgovor na temu

Nikolavlasotince
Nikola Stojiljkovic
Vlasotince/Beograd

Član broj: 139391
Poruke: 109
79.101.212.*



+1 Profil

icon Re: Mastermind... Kako kompjuter da odigra???28.03.2008. u 11:26 - pre 195 meseci
OK. Thanks. Pomoglo mi je dosta. Sad cu pokusati da napravim nesto.
 
Odgovor na temu

Fitopatolog
Dušan Marjanov
Novi Sad

Član broj: 90936
Poruke: 683
79.101.252.*



+3 Profil

icon Re: Mastermind... Kako kompjuter da odigra???22.06.2008. u 12:03 - pre 192 meseci
Proveren algoritam je sledeći:
1. korak: nasumice generišeš četvorocifren broj (umesto cifara možeš koristiti i boje, ali da se zadržimo na ciframa), npr 4223. Ovaj broj ćemo zvati "tekući".
2. korak: igrač unosi ocenu (broj belih i broj crnih poena). Ako je broj crnih poena 4 - pogodio si, kraj programa.
3. korak: povećaš tekući broj za jedan.
4. korak: proveriš da li novi tekući broj može da dobije svaku od ocena koje je do sada dobio (crne i bele poene). Ako može, izbaciš ga na ekran kao predlog za sledeće rešenje i ideš na korak 2. Ako si došao do broja 4222 (jedan manje od broja generisanog u koraku 1), igrač je negde uneo pogrešnu ocenu (rešenje nije nađeno) i zbog toga izlaziš iz programa. Ako tekući broj ne može da dobije sve do sada dobijene ocene, ideš na korak 3.

Za početak možeš da u prvom koraku kreneš od 0000, ali je interesantnije ako se ovaj broj generiše na slučaj. Mislim da je srednji broj pokušaja (do tačnog rešenja) (za četvorocifrene brojeve) u tom slučaju oko 5.
 
Odgovor na temu

Fitopatolog
Dušan Marjanov
Novi Sad

Član broj: 90936
Poruke: 683
93.86.124.*



+3 Profil

icon Re: Mastermind... Kako kompjuter da odigra???26.10.2008. u 13:33 - pre 188 meseci
Evo i demo-verzije programa. Ne zaboravite da između ocene za bele i ocene za crne poene ubacite bar jedan blank!
Prikačeni fajlovi
 
Odgovor na temu

Fitopatolog
Dušan Marjanov
Novi Sad

Član broj: 90936
Poruke: 683
93.87.155.*



+3 Profil

icon Re: Mastermind... Kako kompjuter da odigra???05.09.2009. u 18:30 - pre 178 meseci
Nikola, kako napreduje igrica?
 
Odgovor na temu

Fitopatolog
Dušan Marjanov
Novi Sad

Član broj: 90936
Poruke: 683
109.93.67.*



+3 Profil

icon Re: Mastermind... Kako kompjuter da odigra???10.01.2010. u 00:16 - pre 173 meseci
Poboljšana verzija...
Prikačeni fajlovi
 
Odgovor na temu

Fitopatolog
Dušan Marjanov
Novi Sad

Član broj: 90936
Poruke: 683
*.dynamic.isp.telekom.rs.



+3 Profil

icon Re: Mastermind... Kako kompjuter da odigra???13.11.2023. u 19:57 - pre 5 meseci
// prilagodjeno za gcc

#include <stdio.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>

const char *kraj="9999";

class komb {
char broj[5];
int crno;
int belo;
komb *sled;
public:
komb () { strcpy ( broj, "0000"); belo=0; crno=0; sled=NULL;};
komb ( char *a, komb *k) { strcpy (broj, a); belo=0; crno=0; sled=k;}
void ubaci_ocenu ( int icr, int ibe ) { crno=icr; belo=ibe;};
komb *uzmi_sled () { return sled; };
int oceni ( char [5] );
};

int komb::oceni ( char aa[5]) {
int cr=0;
int be=0;
int i;
int j;
char b[5];
char a[5];

strcpy ( b, broj);
strcpy ( a, aa);
for ( i=0; i<4; i++) { if (a==b) { cr++; a=' '; b=' ';};};
for ( i=0; i<4; i++) {
if ( a==' ' ) continue;
for ( j=0; j<4; j++) {
if (b[j]==' ') continue;
if (i==j) continue;
if (a==b[j]) { be++; a=' '; b[j]=' '; break;};
};
};
// cout << "KKKK" << broj << '$' << aa << '$' << cr << crno << be << belo << "***\n";
if ( (be==belo) && ( cr==crno)) return 0; else return 1;

};

int povecaj ( char *a )
{
char aa[5];

if (strcmp (a,kraj)==0) {
std::cout << " **** Negde je pogreseno kod ocenjivanja! ***\n";
exit (0);
};
strcpy (aa,a);
int prenos=0;
for ( int i=3; i>-1; i--) {
aa++;
if(aa>'9') {prenos=1; aa-=10;} else prenos=0;
if (prenos==0) break;
};

strcpy ( a,aa);
return prenos;
};

int main ( )
{
komb *tek=new komb;
komb *prvi=tek;
char a[5]="0000";
int icr;
int ibe;
int ok;

std::cout << "------- Wellcome to DULE's MASTER MIND -------\n\n\n";

std::cout << a << "<---PREDLOG (ocenite prvo crne pa bele!) ";
std::cin >> icr >> ibe;
tek->ubaci_ocenu ( icr, ibe);
if (icr==4) exit(0);

do {
while ( tek->oceni(a)!=0) povecaj(&a[0]);
do {
if (tek=tek->uzmi_sled()) {
ok=tek->oceni(a);
if ( ok!=0) break;} else ok=0;
} while (tek);
if (ok!=0) { tek=prvi; povecaj(&a[0]); continue;};
prvi=tek=new komb(&a[0], prvi);
std::cout << a << "<---PREDLOG (ocenite prvo crne pa bele!) ";
std::cin >> icr >> ibe;
tek->ubaci_ocenu ( icr, ibe );
} while (icr<4);

return 0;

}
 
Odgovor na temu

[es] :: Veštačka inteligencija :: Mastermind... Kako kompjuter da odigra???

[ Pregleda: 6425 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.