W 1997 roku DeepBlue (IBM) wygrał z mistrzem szachowym Garri Kasparowem.
W 2011 roku Watson (IBM) wygrał w Jeopardy! z dwoma mistrzami Bradem Rutterem i Kenem Jenningsem.
W 2016 roku AlphaGo (Google) wygrał w go z jednym z najlepszych graczy Lee Sedolem.
A w tym semestrze, pod przykrywką zajęć z programowania w R i wizualizacji danych, studenci z MIM UW walczą z grą SuperFarmer. Szukamy strategii wygrywającej (w jakimś sensie).
SuperFarmer to gra wydana przez Granna na bazie gry Hodowla Zwierzątek, którą opracował matematyk, Karol Borsuk, profesor Uniwersytetu Warszawskiego. Zasady są dosyć proste, przez co można grać nawet z małymi dziećmi. Gra jest bardzo dynamiczna i przyjemna nawet dla wytrawnych / starszych graczy.
Póki co, najlepsza znaleziona przez studentów strategia ma medianowy czas gry 34 kroki (tj. w grze jednoosobowej dla najlepszej strategii, połowa gier kończy się zwycięstwem przed 34 krokiem).
Jeżeli chcielibyście poszukać własnej lepszej strategii, to przygotowałem małą aplikację shiny, pozwalającą na przetestowanie jak dobra jest Wasza strategia. W grze SuperFarmer strategia sprowadza się do określenia jak wymieniane są zwierzątka przed rzutem kostką. Wymiana to jedyne miejsce, gdzie gracz ma wpływ na losy gry.
Można więc opisać strategię gry jako funkcje wymieniającą zwierzątka (stan stada przed -> stan stada po).
Pod tym adresem znajduje się aplikacja, do której można wkleić przykładowy kod strategii i wysymulować rozkład czasów gry dla określonej strategii.
Znajdziecie strategię o medianie niższej niż 50 kroków?
(domyślnie wpisana strategia jest bardzo prymitywna, która ma medianowy czas gry ~100 kroków).
Komentarz ,,Z pamiętnika nauczyciela akademickiego”
Studenci w ramach projektu mieli do przygotowania pakiet R, który implementuje zarówno silnik gry, jak i kilka wybranych strategii. Początkowo pomysł ten wydawał się ryzykowny, ale wypadł całkiem dobrze.
Aby napisać strategię do gry lub silnik gry studenci musza sprawnie posługiwać się pętlami i instrukcjami sterującymi. Do pakietu trzeba dodać winietkę, testy, funkcje muszą być udokumentowane, czytelne. Kod trzeba zoptymalizować aby analiza gry nie trwała zbyt długo. Taki projekt daje dużo miejsca do oceny, które zagadnienia są juz świetnie opanowane, a nad którymi jeszcze warto popracować.
Takich pakietów powstało kilka, do każdego powstał filmik instruktażowy jak z pakietu korzystać. Poniżej, za zgodą autorek, umieszczam jeden z ciekawszych filmików.
Komentarz ,,Programowanie w szkołach”
SuperFarmer jest grą bardzo popularną w szkołach. Nawet z tego co wiem, w niektórych szkołach organizowane są turnieje SuperFarmer.
Ale na ile o wyniku decyduje szczęście a na ile strategia?
Dzieciaki potrafią zawzięcie dyskutować różne pomysły na strategię, ale nie mają jednak jak zbadać na ile ich pomysły są dobre. Fizycznie nie są w stanie przeprowadzić wielu gier.
A mając już napisane silniki do gry (co jest dosyć złożone), można teraz nawet pokazywać dzieciakom podstawy programowania na przykładach budowania własnych strategii w SuperFarmera.
Proste strategie są proste, zazwyczaj można opisać strategię jako serię if’ów ew. prostych pętli.
Może da się to zrobić nawet w gimnazjum, zawsze to jakaś alternatywa dla Scratcha.
(złożone strategie mogą być złożone, ale można z dzieciakami zacząć od prostszych rzeczy).
Optymalna strategia winna brać też pod uwagę stan posiadania przeciwnika. Np. gdy mam przewagę, bardziej mogę pozwolić sobie na luksus kupienia psa.