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

Algoritam za prepoznavanje Ful kombinacije (Yamb)

[es] :: Art of Programming :: Algoritam za prepoznavanje Ful kombinacije (Yamb)

Strane: 1 2

[ Pregleda: 7150 | Odgovora: 30 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

boyan3001
BG

Član broj: 284396
Poruke: 424
*.dynamic.sbb.rs.

Sajt: rs.linkedin.com/pub/bojan..


+647 Profil

icon Algoritam za prepoznavanje Ful kombinacije (Yamb)27.06.2012. u 15:25 - pre 143 meseci
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.
Realno...
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Algoritam za prepoznavanje Ful kombinacije (Yamb)27.06.2012. u 15:40 - pre 143 meseci
Ideš kroz niz brojeva i brojiš iste brojeve. Imaš sa strane jedan niz čiji su elementu brojači, a indeks elementa je broj istih brojeva. Recimo da se taj niz zove GroupCounter. Kad brojiš iste brojeve inkrementiraš neki privremeni brojač ThisGroupCount. Kad naletiš na broj koji je različit od ong što trenutno brojiš onda inkrementiraš jedan od elemenata u GrupiCounter, konkretno GroupCounter[ThisGroupCount]++, i zatim postavljaš ThisGroupCount = 1, jer si naleteo na prvi broj nove grupe. Kad dođeš do kraja niza, to jest šeste kockice pravi se da si naleteo na novu grupu, da bi uračunao i tu poslednju.

Kada imaš ful? Onda kada je GroupCounter[2] >= 1 && GroupCounter[3] >= 1.

Dva para? GroupCounter[2] >= 2
Kare? GroupCounter[4] >= 1
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Algoritam za prepoznavanje Ful kombinacije (Yamb)27.06.2012. u 15:47 - pre 143 meseci
alternativno,
Mozes da grupises dobitke po broju i onda da sortiras po broju pogodaka (npr 113333 dobijes 4x"3" i 2x"1") nek je niz dobiataka s

jamb - s[0] >= 5
kare - s[0] >= 4
full - s[0] >= 3 && s[1] >=2

itd.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

boyan3001
BG

Član broj: 284396
Poruke: 424
*.dynamic.sbb.rs.

Sajt: rs.linkedin.com/pub/bojan..


+647 Profil

icon Re: Algoritam za prepoznavanje Ful kombinacije (Yamb)27.06.2012. u 16:21 - pre 143 meseci
Hvala, ukapirao sam obe ideje i rade ono sto treba. Ali ima tu jos jedna kvaka, zaboravio sam da je napomenem. Posto je Yamb u pitanju, po identifikaciji kombinacije, potrebno je i sabrati poene za nju, sto znaci da moram znati i od kojih vrednosti je nastala Ful kombinacija, jer broj bodova je zbir kockica koje su dale Ful, plus bonus od 30 bodova. A ovde (ako sam vas dobro skapirao na kraju), ne znam koji su brojevi dali Ful, znam samo da ista postoji u datoj kombinacji.

Ja sam mehaniku igre ovako zamislio. Kad igrac dobije kombinaciju, koju zeli da upise u tabelu, klikne samo na zeljeno polje u tabeli, nakon cega igra proverava i identifikuje kombinacju, kako se uklapa u to polje. Ako se ne uklapa nikako, upisace nulu, ako se uklapa, mora da sabere kockice, doda odgovarajuce bonuse i upise u polje tabele.
Realno...
 
Odgovor na temu

Mihajlo Cvetanović
Beograd

Moderator
Član broj: 37636
Poruke: 1249



+96 Profil

icon Re: Algoritam za prepoznavanje Ful kombinacije (Yamb)27.06.2012. u 17:24 - pre 143 meseci
Ja sam već zaboravio koje sve kombinacije idu jamb, pa sam lupio ono "dva para". Ako ne postoji kombinacija u kojoj nam trebaju dve grupe sa istim brojem članova onda onaj niz GroupCounter ne mora da bude brojač, nego maksimalna vrednost. Umesto da se zove GroupCounter mogli bi da je nazovemo štajaznam, GroupValue, i da se postavlja sa GroupValue[ThisGroupCount] = max(GroupValue[ThisGroupCount], ThisGroupValue), gde je ThisGroupValue vrednost te grupe čiji je broj članova ThisGroupCount. Svako ispitivanje je onda ispitivanje da li je različito od nule, pa ako jeste onda računaš ukupnu vrednost.

Za ful bi recimo broj poena bio 30 + GroupValue[3]*3 + GroupValue[2]*2.
 
Odgovor na temu

boyan3001
BG

Član broj: 284396
Poruke: 424
*.dynamic.sbb.rs.

Sajt: rs.linkedin.com/pub/bojan..


+647 Profil

icon Re: Algoritam za prepoznavanje Ful kombinacije (Yamb)27.06.2012. u 18:18 - pre 143 meseci
Da, skontao sam, to je to, hvala ;)
Za ostale kombinacije nije tesko napraviti daleko jednostavnije ispitivanje. Kombinacije su sledece:
Kenta - niz po redu, od 1 do 5 ili od 2 do 6. Sortira se dobijena kombinacija i trazi da li postoji vise od dve iste kockice, ako ne postoji, to je Kenta;
Triling - tri iste. Prosto sortiranje od najvece ka najmanjoj. Ako su prve tri iste, to je to;
Ful - tri iste, plus dve iste;
Kare/Poker - 4 iste, ista prica kao sa Trilingom;
Yamb - 5 istih, kao i Kare i Triling.

Stvar je u tome da sam program tako pisao da svako polje razlicitog tipa (Yamb, Kare, Ful...) ima svoj algoritam koji ispituje samo svoj domen i ako dobije pozitivnu identifikaciju, upisuje sta treba. Cini mi se da je ovo jednostavnije, jer se poziva samo ono sto treba, zavisno od toga na koje je polje igrac kliknuo. Nema potrebe da igra skonta da u kombinacji postoji i Yamb i Kare i Triling, ako igrac ionako upisuje samo Yamb.
Realno...
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2789 Profil

icon Re: Algoritam za prepoznavanje Ful kombinacije (Yamb)27.06.2012. u 19:14 - pre 143 meseci
Triling ti ne valja. Ako tako radiš i poker i jamb, ne valjaju ni oni.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

boyan3001
BG

Član broj: 284396
Poruke: 424
*.dynamic.sbb.rs.

Sajt: rs.linkedin.com/pub/bojan..


+647 Profil

icon Re: Algoritam za prepoznavanje Ful kombinacije (Yamb)27.06.2012. u 19:47 - pre 143 meseci
Pogresno sam napisao. Traze se iste u nizu, a ne prve u nizu, moja greska.
Realno...
 
Odgovor na temu

Srđan Pavlović
Specijalna Edukacija i Rehabilitacija MNRO
Vojvodina, Bačka Palanka

Član broj: 139340
Poruke: 5571
*.static.abakusbp.net.

Sajt: www.oligofrenolog.com


+382 Profil

icon Re: Algoritam za prepoznavanje Ful kombinacije (Yamb)28.06.2012. u 14:27 - pre 143 meseci
Kad se vec igras, mogao si skinuti Android SDK (pises u Javi),
pa napraviti taj jamb da mozemo da ga igramo na smartfonovima

http://developer.android.com/guide/components/fundamentals.html
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12848



+4784 Profil

icon Re: Algoritam za prepoznavanje Ful kombinacije (Yamb)28.06.2012. u 14:30 - pre 143 meseci
Covek rece da radi u C#
Ali da, mogao si da uzmes WinPhone SDK i...
 
Odgovor na temu

Srđan Pavlović
Specijalna Edukacija i Rehabilitacija MNRO
Vojvodina, Bačka Palanka

Član broj: 139340
Poruke: 5571
*.static.abakusbp.net.

Sajt: www.oligofrenolog.com


+382 Profil

icon Re: Algoritam za prepoznavanje Ful kombinacije (Yamb)28.06.2012. u 14:56 - pre 143 meseci
Naravno, mislio sam ako zna Javu, uglavnom ko zna C, zna i Javu... bar toliko da se napise program za jamb :)
 
Odgovor na temu

boyan3001
BG

Član broj: 284396
Poruke: 424
*.dynamic.sbb.rs.

Sajt: rs.linkedin.com/pub/bojan..


+647 Profil

icon Re: Algoritam za prepoznavanje Ful kombinacije (Yamb)28.06.2012. u 15:24 - pre 143 meseci
Ova ideja Yamba na kompu je u stvari rekreacija one jedne prastare domace verzije, koja je kruzila netom pre 10tak i vise godina, od nekog GD Softa iz Kragujevca valjda. Zvala se Yamb98. Ja imam jos uvek taj .exe i radi bez problema na Win7-ici, bez potrebe za modovima kompatibilnosti. Ali za danasnje vreme izgleda strasno skrnavo, najvise zbog upotrebe posebnih YU fontova, koji danas daju neke pogresne karaktere.
Takodje, ta verzija je sa mogucnostima bila relativno jednostavna. Ja sam imao ideju da omogucim izbor razlicitih kolona za igru, mogucnost cuvanja rezultata i liste kombinacija, zarad analize, kao mozda i neke statisticke alatke, hot-seat i mrezni multiplayer za single ili okrsaje u parovima... itd. Uglavnom, da pokrije sve varijacije i modove igranja u novom modernom ruhu. Razmisljao sam i o tome, da bi ovakav tip igre vrhunski legao na mobilne uredjaje.
Moje primarno programersko znanje je peceno na C/C++, pa tek onda na C# i nesto malko Javi. No znam, da su koncepti C# i Jave relativno slicni, te da nije neki problem prilagoditi se. Meni je Java nesto oduvek bila malo mrska, pa sam je nekako izbegavao, ali kontam da se bez Jave danas ne moze, tako da bi mi u jednom trenutku neka Java gimnastika kroz ovaj Yamb dobro dosla svakako. Kad osposobim ovu Windows .NET verziju, okacicu je ovde svakako ;)
Realno...
 
Odgovor na temu

Srđan Pavlović
Specijalna Edukacija i Rehabilitacija MNRO
Vojvodina, Bačka Palanka

Član broj: 139340
Poruke: 5571
*.static.abakusbp.net.

Sajt: www.oligofrenolog.com


+382 Profil

icon Re: Algoritam za prepoznavanje Ful kombinacije (Yamb)28.06.2012. u 15:39 - pre 143 meseci
https://play.google.com/store/...LDEsImNvbS52aXNjb2RlLnlhbWIiXQ

Ovako nesto :)
 
Odgovor na temu

boyan3001
BG

Član broj: 284396
Poruke: 424
*.dynamic.sbb.rs.

Sajt: rs.linkedin.com/pub/bojan..


+647 Profil

icon Re: Algoritam za prepoznavanje Ful kombinacije (Yamb)28.06.2012. u 16:11 - pre 143 meseci
Tako nesto, samo jos bolje =)
Sad vidim da u toj verziji tu postoji kombinacija 2 para, a nema trilinga. Ono malo sto sam istrazivao pre nego sto sam poceo ovo da radim, nisam video jos verziju koja nudi mogucnost da se sama igra konfigurise u smislu polja koja ucestvuju u igri, kao i kolona sa razlicitim pravilima popunjavanja (najava, dojava, iz sredine, ka sredini, maksimumi... itd, svasta sam video dosad) ili ekstra bonusima, kao npr, ako padne kompletna kenta, od 1 do 6, dobija se bonus od +10 ili ako padne npr Yamb od svih 6 kockica. Ideja je da se sve te varijacije implementiraju kao konfigurabilne opcije, znaci neki ultimate Yamb koji ce moci svako da igra kako je naucio i najvise mu godi ;)
Realno...
 
Odgovor na temu

Srđan Pavlović
Specijalna Edukacija i Rehabilitacija MNRO
Vojvodina, Bačka Palanka

Član broj: 139340
Poruke: 5571
*.static.abakusbp.net.

Sajt: www.oligofrenolog.com


+382 Profil

icon Re: Algoritam za prepoznavanje Ful kombinacije (Yamb)28.06.2012. u 16:24 - pre 143 meseci
Da, tako nešto bi bilo odlično :)

Ja najvolim da igram onaj jamb sa 10 kolona, ima blokčić da se kupi na trafikama...
 
Odgovor na temu

boyan3001
BG

Član broj: 284396
Poruke: 424
*.dynamic.sbb.rs.

Sajt: rs.linkedin.com/pub/bojan..


+647 Profil

icon Re: Algoritam za prepoznavanje Ful kombinacije (Yamb)28.06.2012. u 17:22 - pre 143 meseci
Cek da vidim da se prebrojimo:

1. Opadajuca - popunjava se redom odozgo na dole;
2. Rastuca - redom odozdo na gore;
3. Slobodna - slobodna;
4. Iz sredine - od polja maksimum i minimum, na gore, odnosno dole;
5. Ka sredini - od prvog i poslednjeg polja (ovde moze da postoji opciono ogranicenje da ne moze da se predje sredina, ako jedan niz stigne pre do iste);
6. Najava - najava odredjenog polja;
7. Dojava - naredni protivnik mora da ponovi najavu koja je odigrana prethodno;
8. Slobodna najava - najava kolone, ali su sva slobodna polja u igri za upis (vidjenu u pomenutom Yambu98 i nigde vise, malo mi deluje bezveze);
9. Rucno - upis je moguce samo, ako su izrucene sve kockice. Opciono ogranicenje samo na prvu ruku ili bilo koju, pod uslovm da su sve kockice bacene;
10. Maksimum - upisuje se maksimum iz svake kategorije (reda). Opciono upisivanje samo ako je apsolutni maksimum, odnosno sledi nula usled nedostatka istog;
11. Poslednja - ili "Last Man Standing / Ko prezivi pricace" kako je ja jos zovem :D, popunjava se redom, tek kad se sve ostale popune do kraja. Ovo je za prave kockare varijanta.

To je ono sto je meni poznato. Ako neko zna jos neku nek napise, da je uvrstimo... ili ako ima prosto dobru ideju, da prosirimo jos.
Realno...
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.3gnet.mts.telekom.rs.



+2789 Profil

icon Re: Algoritam za prepoznavanje Ful kombinacije (Yamb)28.06.2012. u 21:45 - pre 143 meseci
off topic

Meni se kod jamba ne sviđa to što igrač ne utiče na igru protivnika. Ladno mogu da se zatvore svako u svoju sobu i da na kraju uporede rezultate.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

Srđan Pavlović
Specijalna Edukacija i Rehabilitacija MNRO
Vojvodina, Bačka Palanka

Član broj: 139340
Poruke: 5571
*.static.abakusbp.net.

Sajt: www.oligofrenolog.com


+382 Profil

icon Re: Algoritam za prepoznavanje Ful kombinacije (Yamb)28.06.2012. u 23:15 - pre 143 meseci
Hehe, pa nije baš skroz tačno to. Prvo, ima faktor nerviranja
protivnika dok igra (pa upisuje rezultate na losija mesta), a drugo,
ima psiholoski faktor kada igras bolje ili losije pored nekoga ko vodi ili gubi...
a naravno i onaj faktor socijalizacije, kada je zovnes na yamb, kafu, i tako to
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Algoritam za prepoznavanje Ful kombinacije (Yamb)29.06.2012. u 00:34 - pre 143 meseci
kontra najava?
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Algoritam za prepoznavanje Ful kombinacije (Yamb)29.06.2012. u 02:59 - pre 143 meseci
Kad se vec radi u c# onda da malo zacinimo

Code (csharp):

var dobitak = new int[] { 3, 2, 5, 5, 3, 5 };
var bacanje = 2;


 var defs = new[] { new { ime = "Jamb", mindef = new[] { 5 }, bonus = 50 },
        new { ime = "Kare", mindef = new[] { 4 }, bonus = 40 },
        new { ime = "Ful", mindef = new[] { 3, 2 }, bonus = 30 },
        new { ime = "Triling", mindef = new[] { 3 }, bonus = 20 } };

 var target = from cifra in Enumerable.Range(1, 6).Reverse()
      join dob in dobitak on cifra equals dob into grupaPogodaka
      select new {cifra, brojPogodaka = grupaPogodaka.Count() };

 var capital = from def in defs
               let grupe = target.OrderByDescending(x => x.brojPogodaka).ThenByDescending(x => x.cifra)
       let mix = def.mindef.Zip(grupe, (minpon, redni) => new { minpon, redni })
       let active = mix.All(e => e.minpon <= e.redni.brojPogodaka)
       let skor = active ? def.bonus + mix.Sum(e => e.minpon * e.redni.cifra) : 0
       select new { def.ime, active, skor };

 var kentatest = target.SkipWhile(e => e.brojPogodaka == 0).TakeWhile(e =>e.brojPogodaka > 0);
 var kenta = new { ime = "Kenta", active = kentatest.Count() >= 5, skor = kentatest.Count() >= 5 ? 76 - bacanje * 10 : 0 };
 var max = new { ime = "Max", active = true, skor = dobitak.OrderByDescending(x => x).Take(5).Sum() };
 var min = new { ime = "Min", active = true, skor = dobitak.OrderBy(x => x).Take(5).Sum() };

 var regular = from pog in target
                   select new { ime = pog.cifra.ToString(), active = true, skor = pog.cifra * pog.brojPogodaka };


 var rezultat = capital.Union(new[] { kenta, max, min }).Union(regular);
 


Izlaz:
Code:

ime       active    skor
-------------------------
Jamb      False     0
Kare      False     0
Ful       True      51
Triling   True      35
Kenta     False     0
Max       True      21
Min       True      18
6         True      0
5         True      15
4         True      0
3         True      6
2         True      2
1         True      0


Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

[es] :: Art of Programming :: Algoritam za prepoznavanje Ful kombinacije (Yamb)

Strane: 1 2

[ Pregleda: 7150 | Odgovora: 30 ] > FB > Twit

Postavi temu Odgovori

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