Jeg har prøvet at lave en hashcode funktion i Java til at kunne beregne om 2 arrays er ens, evt. roteret og med tal byttet om.
1234
2413
4321
3142
2413
1234
3142
4321
4312
3124
2431
1243
3421
1342
4213
2134
2134
1423
4312
3241
Disse 5 arrays er alle ens. Nummer 2, 3 og 4 er blot nummer 1 der er roteret. Og nummer 5 er nummer 1, hvor alle forekomster af 1 og 2 er byttet om.
Meningen er så at jeg får et array som input, beregner dets hashcode, og tjekke om det findes i en Hashmap med arrays.
Jeg kan nemt tjekke det femte array og lignende, ved simpelthen at bytte om på alle tallene således at den øverste linje er 1234, og så har jeg array 1.
Men mit problem ligger i at beregne en hashcode så alle 4 rotationer af et array vil give mig den samme hashcode. Og jeg foretrækker også hvis det er muligt med en hashcode der giver samme hashcode for det femte array, således at jeg ikke behøver at bytte om på tal.
Jeg vil jo umiddelbart mene at det godt kan lade sig gøre, da det jo bare drejer sig om mønster genkendelse. Men jeg kan ikke finde en funktion, der giver samme hashcode beregnet ud fra tallene i mine arrays.