Pravim neki Yamb u C#, za svoj grosh i ucenje. Programiranje znam, ali nisam profesionalac i nisam radio nikad ozbiljnije poslove i projekte. U realizaciji Yamba za sad nisam nasao ni na kakvu specijalnu prepreku, ali sam se zapitao da li neke stvari radim racionalno, odnosno onako kako bi profesionalni programer pristupio. Dilema mi se javila kod algoritma za prepoznavanje dobijene Ful kombinacije.
Dakle od 6 bacenih kockica (za sad mi kockice baca obican pseudo-random generator na osnovu nekog prostog seed-a, tipa datum i vreme), ful cine 3 iste plus 2 iste kockice. E sad, dok za druge kombinacije nije bilo problem napisati kratku logiku, kod Fula je stvar malo drugacija. Ja sam pristpio nekom prilicno ociglednom (da ne kazem seljackom) logikom, gde se proverava da li su prva tri elementa ista, pa ako jesu, da li su i naredna dva ista. Medjutim, ovde se stvar komplikuje za pisanje, kad se uzme u obzir da je u igri 6, a Ful cine 5 kockica. Te kombinacije mogu pasti u nekoliko razlicitih oblika, tipa 111223, 112223, 113222, 311122... itd.
Ja sam pisanju pristupio vezivajuci if/else if nizove, ali to rezultuje izuzetno nezgrapnim kodom i za pisanje i za pracenje. Algoritam uprosceno receno izgleda ovako nekako:
Ako su prvi i drugi element isti i ako su drugi i treci isti, ispitaj da li su cetvrti i peti isti i to onda znaci Ful.
Ako nisu, da li su drugi i treci isti i da li je treci i cetvrti isti, ako jeste da li su i peti i sesti isti, ako jesu, to je onda Ful.
itd...
Nadam se da ste me skapirali?
Dakle, moje pitanje je, kako bi ovo eventualno moglo da se napise na elegantniji i efikasniji nacin (ili bar jedan od ova dva da se postigne)?
E da... sve ovo podrazumeva da su elementi prethodno sortirani.
Dakle od 6 bacenih kockica (za sad mi kockice baca obican pseudo-random generator na osnovu nekog prostog seed-a, tipa datum i vreme), ful cine 3 iste plus 2 iste kockice. E sad, dok za druge kombinacije nije bilo problem napisati kratku logiku, kod Fula je stvar malo drugacija. Ja sam pristpio nekom prilicno ociglednom (da ne kazem seljackom) logikom, gde se proverava da li su prva tri elementa ista, pa ako jesu, da li su i naredna dva ista. Medjutim, ovde se stvar komplikuje za pisanje, kad se uzme u obzir da je u igri 6, a Ful cine 5 kockica. Te kombinacije mogu pasti u nekoliko razlicitih oblika, tipa 111223, 112223, 113222, 311122... itd.
Ja sam pisanju pristupio vezivajuci if/else if nizove, ali to rezultuje izuzetno nezgrapnim kodom i za pisanje i za pracenje. Algoritam uprosceno receno izgleda ovako nekako:
Ako su prvi i drugi element isti i ako su drugi i treci isti, ispitaj da li su cetvrti i peti isti i to onda znaci Ful.
Ako nisu, da li su drugi i treci isti i da li je treci i cetvrti isti, ako jeste da li su i peti i sesti isti, ako jesu, to je onda Ful.
itd...
Nadam se da ste me skapirali?
Dakle, moje pitanje je, kako bi ovo eventualno moglo da se napise na elegantniji i efikasniji nacin (ili bar jedan od ova dva da se postigne)?
E da... sve ovo podrazumeva da su elementi prethodno sortirani.
Potpis
Realno...