matematykaszkolna.pl
q Ambitny: Mariusz implementowałeś grę Go? https://pl.wikipedia.org/wiki/Zasady_go Mam problem z napisaniem algorytmu, który sprawdzi czy przeciwnik otoczył jakąś grupę kamyków gracza. Np. mam tablicę intów 9x9 (plansza 81 pól) : gracz A stawia kamyki '1', gracz B stawia kamyki '2'. Chcę parsować całą tablicę dwuwymiarową i wykrywać czy któryś z graczy otoczył jakąś grupę np. '2' grupą '1', lub na odwrót. Jakiś pomysł na realizację tego w Javie?
25 lis 00:51
Ambitny: znalazłem chyba sposób, ale nie będzie to chyba optymalne
25 lis 01:35
Mac Donald: Mariusz to zwykły klepacz kodu, lol
25 lis 01:35
Ambitny: Mariusz to ktoś kto zna się na algorytmach i programowaniu, i właśnie o to chodzi
25 lis 01:36
Mariusz: O sata tym razem nazwał się Mac Donald Domyśliłem się że piszesz jakąś grę po tym jak pytałeś o ten algorytm co sprawia ze nie jest aż tak łatwo wygrać w tę grę z komputerem Pamiętasz spis tematów który wysłałem w jednej z twoich wiadomości ? Pisałem kod wybranych stamtąd tematów ale to było ok 13 lat temu Do tego dochodzą jakieś programiki matematyczne jak operacje na macierzach , rozwiązywanie równań liniowych , całkowanie numeryczne Kiedyś miałem propozycję aby napisać grę kulki na lekcje informatyki ale jakoś nie skorzystałem Trochę czytałem o silniku graficznym Crystal Space Wprawdzie wpisy tego Pytającego pokazują że wie więcej niż taki sata vel Mac Donald https://matematykaszkolna.pl/forum/353651.html to powyższy wątek wskazuje że często nie chce mu się nawet czytać kodu więc nauczycielem byłby kiepskim (Nie chce mu się czytać kodu więc ci go nie poprawi ani nawet nie wskaże błędu poza tym często wysyła odnośniki zamiast wytłumaczyć temat Jednak wpisy tego Pytającego to coś więcej niż spam sata bo widziałem także wpisy które coś wnoszą do tematu) Może Dziadek będzie wiedział coś więcej Ogólnie na forach internetowych niewiele się dowiesz zwłaszcza jeśli chcesz nauczyć się czegoś nowego albo przypomnieć sobie to co miałeś wykładane w szkole
25 lis 11:01
Mariusz: W temacie o otoczce wypukłej Pytający odpisywał całkiem nieźle jeśli chodzi o algorytm Grahama chociaż gdy zapytałem o inne algorytmy np divide et impera to znowu zaczął mi wysyłać jakieś odnośniki Załóżmy że chcemy sobie przypomnieć wykłady ze wstępu do programowania bądź z algorytmów i struktur danych Na takich stronach jak http://eduinf.waw.pl/inf/prg.php http://www.wozna.org/students/2010-2011/algorytmy2/asd0n.pdf http://ww2.ii.uj.edu.pl/~kawa/epi/asd/materialy/Algorytmy%20i%20struktury%20danych.pdf przykłady zawierają błędy (w przypadku woźnej za n wstawiamy kolejne liczby naturalne) Pewnie znajdzie się jeszcze więcej takich artykułów bądź wykładów z błędnymi przykładami
25 lis 13:37
Ambitny: Dzięki Mariusz, algorytm już prawie napisałem. Gra Go + MCTS. Implementacja toporna, raczej zdecyduje się na przepisanie całości do języka c++.
25 lis 14:08
Ambitny: Mariusz, napisanie takiej gry ,to jest pewne wywanie ale również bardzo interesujące. Obecnie biorę udział w wykładach intela, są omawiane zagadnienia dot. AI − sieci neuronowych. Niestety ubolewam, że większość kodu jest w Pythonie, a ten przedmiot u mnie dopiero się zacznie od nastepnego semestru. I tak mam napięty grafik, bo obecnie uczymy sie kilku języków progr. równolegle i dorzucenie kolejnek jest krótko mówiąc niemożliwe
25 lis 14:21
Ambitny: Co do stron które mi podałeś. Część pozycji i www już przerobilem, bo po prostu musiałem ze względu na przedmiot. Co prawda pobieżnie, ale sprawa jest rozwojowa. Obecnie mam grafy skierowane i nieskierowane, algorytm DFS. W miarę przystępne zagadnienia
25 lis 14:24
jc: Wyobrażam sobie, że trochę pracy przy tym jest (szczegóły z związane z konkretną grą). Czy od razu chcesz pisać MCTS, czy najpierw zwykłe przeszukiwanie? Skąd wybór GO? Nie grałem, choć coś tam słyszałem.
25 lis 14:34
Mariusz: Wyciągnąłeś coś o tym Pythonie z Metisa ? Tzn spawdziłeś czy to co pisał to tylko przechwałki ? Mnie w Pythonie mogą przeszkadzać dziwne pętle, wcięcia zamiast bloków , to że jest to język interpretowany no i jestem przeciwnikiem garbage collectora Jeśli chcesz policzyć ile dni zostało ci do urodzin to wpisz sobie from math import floor def julian(y,m,d,s=1): if(m < 3): y−=1 m+=12 a=floor(y/100) if(s==0): b=0 else: b=2−a+floor(a/4) return floor(365.25*(y+4716))+floor(30.6001*(m+1))+d+b−1524.5 Teraz wystarczy wpisać różnicę między datą urodzin a dzisiejszą datą U mnie zwróci 19 Ostatnio próbowałem też bawić się klasami w Pythonie na przykładzie własnej listy Na Windowsie musisz sobie ściągnąć tego Pythona jeśli chcesz się nim bawić Na Linuksie masz dostęp od razu do czterech języków programowania Pascal (Free Pascal) C/C++ (gcc) Java Python
25 lis 14:44
Ambitny: @jc Zwykłe przeszukiwanie można zeralizować za pomocą chociażby algorytmu minimax. A co jeśli drzewo gry jest zbyt duże i zbyt skomplikowane? Algorytm minimax służy do znalezienia dokładnych wartości dla pozycji tablicy. Zakładamy, że każdy gracz zawsze gra na swojej najlepszej pozycji. Przy takim założeniu, dwie obserwacje prowadzą do algorytmu minimax: mamy dokładną analizę liści, a wartość węzła można dokładnie określić na podstawie jego wartości. Wartość dla liści jest łatwa do ustalenia, ponieważ na tych pozycjach kończy się gra. Powyższy algorytm stosuje się gdy jesteśmy w stanie napisać funkcję oceniającą daną pozycję na planszy, poprzez wygenerowania całego poziomu drzewa. Programy , które grają w GO opierają się głównie na MCTS i jego modyfikacjach. Różnią się miedzy sobą realizowaniem obliczeń równoległych (optymalizacją czasową dostępu do pamięci, wykrywaniem wzorców oraz funkcją oceny). We wspomnianej wyżej grze brakuje funkcji oceny. Kluczowym elementem jest symulacja i wybór węzłów. Dlaczego GO? Uważam to za ciekawe wyzwanie, gra często jest wybierana do eksperymentów nad AI. Ogólnie gra ma proste zasady, kryje jednak dużą złożoność i rozpiętość możliwości.
25 lis 18:00
Ambitny: @Mariusz dzięki , na Pythona przyjdzie czas (od kolejnego sem.), mam strasznie napięty grafik zadań do wykonania i muszę realizować wszystko wg priorytetów, bo się nie wyrobie.
25 lis 18:02
jc: Ambitny, dla dwóch prostych gier napisałem program, oczywiście z obcinaniem gałęzi, ale bez wcześniejszych prób (reversi, kartofle). Dzięki Tobie dowiedziałem się o MCTS. Po prostu, napisanie programu często wymaga niemałej pracy i stąd pytanie o wybór.
25 lis 18:07
sata: Niestety Mariuszku to nie byłem ja i łatwo to sprawdzić ale tego nie zrobisz bo nie umiesz nie wiesz co i gdzie skopiować emotka
25 lis 19:03