O sa ma uit asa de curiozitate si la alti algoritmi, desi poate ca un cod Perl mi-ar fi mai greu de inteles, mai ales ca sunt obisnuit cu tipuri statice.
Pana la urma am ajuns la concluzia ca singura metoda eficienta in cazul de fata ar fi prin concatenarea numerelor rezultate in urma efectuarii unui radical pe fiecare, acestea rotunjite la o zecimala, apoi inmultite cu 10. Ar fi astfel toate valorile din doua cifre, iar pentru Full s-ar ajunge la o valoare din 4 cifre..
Un Full este o mana de carti cu trei valori egale si altele doua egale. De exemplu 3 septari si doi nouari dau un ful de septari.
Metoda de care ziceam, cu crearea unui numar din doua cifre pentru fiecare carte ar fi buna chiar si pentru compararea unor maini in care nu sunt nici macar perechi, si unde se ia ca fiind castigatoare cea cu valoarea mai mare. Daca acea valoare cea mai mare ar fi egala, se compara urmatoarea valoare etc.
Creand un numar intreg din toate cele 5 carti, de la mare la mic, din cate doua cifre pentru fiecare, ar iesi un int de 10 cifre. problema este insa ca nu ar fi de ajuns un simplu int de 32 de biti, numarul care reprezinta valoarea relativa a unei maini de 5 carti diferite fiind mai mare de doua miliarde. Ar trebui sa folosesc long-ul sau, ca sa raman in ceea ce am pana acum, int ca valoare finala, sa mai aplic un radical si pe numarul ala, astfel incat functia care calculeaza sa returneze tot un int in urma rotunjirilor.
Asadar, mana cu nimic in ea, cea numita si No-pair ramane cea problematica, aici fiind necesare in total 6 operatii de scoatere a radacinii patrate.
Am citit ca problema delimitarii mainilor de Poker este destul de complexa in general, se cauta tot timpul algoritmi buni, mai ales pentru serverele care au multi jucatori, conteaza acolo cat de rapid si compact se reusesc astfel de comparatii.
Ca sa nu mai citesc cine stie cate coduri, eu am decis sa fac sub o forma sau alta codul meu. Pana la urma, daca nu gasesc alta solutie, cea cu radicalii e ok.
Nu prea stiu matematica, decat pe cea elementara sau pe cea deductibila usor din cea elementara.
