Tablica int jako klucz HashMap

Odpowiedz Nowy wątek
2014-12-11 21:23
Krwawy Krawiec
0

Witam, potrzebuję zrobić HashMape z tablicą int jako klucz i mam problem ponieważ gdy próbuję wyszukać jakąś tablicę w mapie to porównuje referencje. Próbowałem opakować tą tablicę w jakąś klasę i przeciążyć equals ale nic z tego.
Z góry dzieki za pomoc

Pozostało 580 znaków

2014-12-11 21:26
0

Z zasady używanie obiektów które są mutable jako kluczy to pomysł poroniony. Niemniej jednak mozesz to zrobić tak jak napisałeś -> opakować to sobie w klasę i przeładować dla niej equals i hashCode gdzie będziesz porównywał sobie elementy tablicy. Ale weź pod uwagę że będą się działy cuda jak włożysz coś takiego do mapy a potem zmienisz wartości w tablicy...
Napisz co chcesz osiągnąć, bo myśle że błąd popełniłeś wcześniej...


Na PW przyjmuje tylko (ciekawe!) zlecenia. Masz problem? Pisz na forum, nie do mnie.
edytowany 1x, ostatnio: Shalom, 2014-12-11 21:26

Pozostało 580 znaków

2014-12-11 21:35
Krwawy Krawiec
0

tablice raz włożone do do tej mapy nie będą zmieniane. Muszę zrobić to w hashmapie ponieważ potrzebuje szybkiego wyszukiwania. Ta hashmapa to bedzie tablica przejść do gry kółko i krzyżyk(będą tam zapisywane stany gry i wartosci określonego stanu)

Pozostało 580 znaków

2014-12-11 21:49
0

No to możesz to zrobić tak jak napisałem wyżej. Twój błąd polegał na tym że przeciązyłeś pewnie tylko equals albo tylko hashCode a wszędzie jest jasno zawsze napisane że MUSISZ przeciązać obie że to działało. Akurat hashCode może tu łatwo napisać skoro to kółko i krzyżyk, bo możesz wyliczać jednoznacznie wartość każdej konfiguracji.


Na PW przyjmuje tylko (ciekawe!) zlecenia. Masz problem? Pisz na forum, nie do mnie.

Pozostało 580 znaków

2014-12-11 21:54
Krwawy Krawiec
0

A mógłbyś mi mniej więcej podpowiedzieć jak wyliczać ten hashcode bo będzie to się wykonywało kilka tyś. razy na sek i chcę żeby to w miarę szybko działało?
tablica int 0-puste pole 1 i 2 odpowiednio kółko i krzyżyk

Pozostało 580 znaków

2014-12-11 22:25
0

Tablica dwuwymiarowa jak rozumiem? Wykorzystaj tu cechę kodowania binarnego, tzn traktuj te pola tak jak kolejne bity liczby binarnej. Więc w przypadku planszy 3x3 miałbyś np. pole (0,0) to jest 1, pole (0,1) 2, pole (0,2) to 4, pole (1,0) to 8 itd. W ten sposób uzyskujesz jednoznaczną liczbę poprzez zsumowanie pól gdzie masz kółko. Z krzyżykiem może być dokładnie to samo ale "przesunięte" o maksymalną wartość planszy po prostu. Inty sie nie skończą.


Na PW przyjmuje tylko (ciekawe!) zlecenia. Masz problem? Pisz na forum, nie do mnie.

Pozostało 580 znaków

2014-12-11 22:38
Krwawy Krawiec
0

a co jak plansza bedzie np 20x20 lub wieksza?

Pozostało 580 znaków

2014-12-11 22:55
0

To wtedy będziesz miał 2199023255552 możliwości dla takich plansz więc i tak ani tego nie policzysz ani nie przechowasz w pamięci. Obawiam się że źle w ogóle podszedłeś do problemu który chcesz rozwiązać. Bo rozumiem że wpadłeś na genialny pomysł wygenerowania sobie wszystkich możliwych plansz i wyliczenia ruchów raz a potem rozgrywania wielu gier w oparciu o taką tablicę? Przykro mi, ale nic z tego ;] Polecam na przyszłość nie spać na zajeciach z matematyki dyskretnej i teori złożoności obliczeniowej.


Na PW przyjmuje tylko (ciekawe!) zlecenia. Masz problem? Pisz na forum, nie do mnie.

Pozostało 580 znaków

2014-12-11 23:15
Krwawy Krawiec
0

Az tak szalony to nie jestem :D
Otóż tak. Mam algorytm minimax i on bierze pod uwagę tylko 5 ruchów do przodu i przy pierwszym ruchu analizuje ok 1000000 mozliwości wiec nie jest źle. Dodatkowo przy nastepnych wywolaniach nie bierze wszystkich wolnych pol tylko te kolo ktorych juz jest postawiony jakis znak. Chce zeby zapisywal wlasnie te stany plansz, bo niepotrzebnie przeszukuje te galezie, ktore prowadza do tego samego stanu ale roznymi sekwencjami ruchow

Pozostało 580 znaków

2014-12-11 23:49
0

No i policzyłeś ile takich mozliwosci będzie dla planszy 20x20 o która pytałeś? Bo chyba nie...


Na PW przyjmuje tylko (ciekawe!) zlecenia. Masz problem? Pisz na forum, nie do mnie.

Pozostało 580 znaków

2014-12-12 11:16
Krwawy Krawiec
0

Sam tego nie wymyslilem, tu jest to opisane: http://www.cs.put.poznan.pl/amichalski/search/si2006.rgb2pp.pdf(s. 28)
Sam algorytm alpha-beta działający mam tylko chciałem go zoptymalizować tak jak tu jest opisane.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0