Pomoc oko izrade custom funkcije za hesiranje matrice u Pythonu

Pomoc oko izrade custom funkcije za hesiranje matrice u Pythonu

online
  • Pridružio: 31 Dec 2015
  • Poruke: 1269

Pozdrav!

Imam projekat za koji mi je potrebna funkcija za hesiranje matrice. Projekat je vezan za igru Othello (Reversi), sto znaci da treba da hesiram matricu 8x8.

Ovako izgleda inicijalizacije table:
board = [['.' for x in range(8)] for y in range(8)]

Evo i jedan primer kako tabla izgleda.
[ ['.', '.', '.', '.', '.', '.', '.', '.'], ['.', '2', '1', '.', '.', '.', '.', '.'], ['.', '.', '2', '.', '.', '.', '.', '.'], ['.', '.', '1', '2', '1', '.', '.', '.'], ['.', '.', '.', '1', '2', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.'], ['.', '.', '.', '.', '.', '.', '.', '.'] ]
Kao sto se moze videti, jedan igrac je 1, a drugi je 2, a prazna mesta su oznacena sa tackom.

Moja sadasnja hash funkcija izgleda ovako:
def hesiraj(self, board):         string = ''         for y in range(8):             for x in range(8):                 string += board[y][x]         broj = 0         for index, znak in enumerate(string):             broj += (index + 1) * ord(znak)         return broj
Funkcija prihvata tablu (matricu) i od nje prvo napravi string koji sadrzi sva polja table onakva kakva jesu i onda taj string hesiram u broj po formuli iz for petlje. Funkcija ord vraca ASCII vrednost karaktera.

Svestan sam da ovo nije dobra hash funkcija, pa me interesuje da li imate neku ideju kako bih mogao da je poboljsam ili da implementiram neku skroz drugaciju. Video sam na internetu neku ideju gde stanje table predstavim kao dva 64-bitna binarna broja gde jedan sadrzi jedinice na mestima gde igrac 1 ima figure, a na ostalim mestima nule, a drugi sadrzi jedinice na mestima gde igrac 2 ima figure. Kada to napravim onda odradim neku operaciju nad ta dva broja (cini mi se da je bila XOR), ali iskreno, nisam siguran da bi ispala dobra hash fukcija i nisam siguran kako bih je implementirao.

Napomenuo bih da je potrebno da ja napravim svoju hash funkciju, sto znaci da ne smem da koristim python hash fukciju ili funkcije iz neke biblioteke.

Unapred hvala.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
Ko je trenutno na forumu
 

Ukupno su 1165 korisnika na forumu :: 50 registrovanih, 3 sakrivenih i 1112 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 357magnum, _Sale, A.R.Chafee.Jr., airsuba, aleksmajstor, AleksSE, alkatraz080, armor, babaroga, Bobrock1, bojank, bojcistv, BRATORIII, cemix, cifra, CrazyDiablo, DH, elenemste, GORDI, jukeboxer, Kubovac, kybonacci, Lucky_Bastard, M1los, Miki01, milenko crazy north, Milometer, Milos ZA, MilosKop, MiroslavD, nemkea71, nenad81, nikoladim, pein, Polemarchoi, proka89, raketaš, rovac, ruseskij, ser.hill, Smajser, sosko, Srky Boy, stegonosa, vathra, VJ, Vlada1389, VP6919, yrraf, zdrebac