2023.01.22 16:46
Strategie grania w "Chińczyka"
Nieraz grając w Chińczyka ( https://pl.wikipedia.org/wiki/Chi%C5%84czyk_(gra_planszowa) ) zastanawiałem się, jak lepiej grać: czy lepiej przy każdej okazji wyprowadzać pionki z bazy i iść do mety wszystkimi naraz, czy też lepiej wyprowadzić jednego, dojść nim do mety jak najszybciej i dopiero wtedy wyprowadzać kolejnego. Dziś przetestowałem te dwie strategie. Napisałem w scratchu program, który gra w Chińczyka kilkoma graczami tak, że każdy gracz może używać innej strategii. I puściłem go, żeby grało dwu graczy: żółty i czerwony. W mojej symulacji gracz żółty jeśli ma wybór, którym pionkiem ruszyć, to rusza tym o wyższym numerze - w efekcie kiedy tylko się da, wyprowadza z bazy kolejnego pionka i prze nim do przodu. A gracz czerwony jeśli ma wybór, którym pionkiem ruszyć, to rusza tym o niższym numerze - w efekcie nie wyprowadza kolejnych pionków dopóki poprzedni pionek jest jeszcze w drodze do mety.
W mojej symulacji przeprowadziłem 100 gier - w efekcie 48 razy wygrał czerwony, a 52 razy wygrał żółty.
Symulację można obejrzeć na youtubie:
https://youtu.be/s4ollaawaR0
A oto program napisany w Scratchu:
https://scratch.mit.edu/projects/791760609/
komentarze:
2023.02.07 10:55 nb
hej, ciekawa analiza. Wyniki w granicach błędu.
Dlaczego akurat scratch i jaki był czas implementacji?
propozycja rozszerzenia:
trzeci gracz powinien używać strategii mieszanej: gra tym pionkiem, od którego dystans do najbliższego pionka przeciwnika jest najmniejszy (licząc w przód - zgodnie z kierunkiem w którym możliwy jest ruch). Zwiększa to szansę na wyeliminowanie pionka przeciwnika poprzez zajęcie tego samego pola - wtedy pionek przeciwnika na powrót trafia do bazy.
Z drugiej strony - taka strategia zwiększa ryzyko że pionek tegoż właśnie gracza zostanie 'zbity'.
Jestem ciekawy jak wyniki kształtowały by się przy takiej modyfikacji.
2023.02.07 10:58 nb
Swoją drogą 'zabił mnie' komentarz pod projektem na scratch.mit.edu :) umiejętność czytania ze zrozumieniem staje się powoli towarem deficytowym. Zawsze zaskakuje mnie w pracy jak nieumiejętnie ludzie czytają błędy. Po dwudniowej analizie w końcu dzwonią z prośbą o pomoc, pokazują ekran, a tam - czarno na białym (albo szarym) - co, gdzie, jak i dlaczego
2023.02.10 17:46 P.
Akurat w scratchu dlatego, że czasem programuję w scratchu, żeby dzieciom dawać przykład - żeby mogły popatrzeć przez ramię, jak programuję, i potem też spróbować tak samo. Co zresztą całkiem nieźle działa.
Poza tym czasem jak doradzam komuś, jak nauczyć się programować, to mówię, że niezłym pomysłem jest zaczęcie od scratcha. I zaimplementowanie tego programu w scratchu dało mi kolejne doświadczenie, którym mogę się podeprzeć - uważam, że jeśli ktoś nauczy się programować w scratchu na tyle, żeby napisać taki program jak ten symulator Chińczyka, Javy nauczy się w tydzień-dwa. A co jeszcze mówić o snapie ( https://snap.berkeley.edu/ )!
Tak, planuję jeszcze popróbować jeszcze sporo różnych strategii.
W sprawie komentarza - no cóż, scratch jest dla dzieci i małolatów, a ten projekt nie jest łatwą rozrywką. Więc nie mam do dzieci żalu, że nie zawsze go doceniają.
powrót na stronę główną
RSS