Wskazówka: Ta king-of-the-Hill wyzwanie zakończyła. Oznacza to, że zielony znacznik wyboru, który został przyznany C5H8NNaO4 za ich wejście Obserwator nie zostanie przeniesiony do żadnej nowej odpowiedzi.
Nadal możesz przesyłać nowe zgłoszenia, ale mogą występować opóźnienia w nowych turniejach, ponieważ nie sprawdzam już aktywnie nowych zgłoszeń.
Wprowadzenie
W tym wyzwaniu grasz w grę zręcznościową zatytułowaną The Ultimate Samurai Showdown Ultimate Edition Special Version 2.0 X Alpha Omega Turbo (lub po prostu Ultimate Samurai Showdown ). Twoi przeciwnicy? Nikt inny niż inni członkowie Programming Puzzles & Code Golf!
Jak można się spodziewać po zręcznościowej grze PPCG, nie grasz bezpośrednio w Ultimate Samurai Showdown , ale raczej piszesz program, który zagra dla Ciebie. Ten program będzie walczył z programami przesłanymi przez innych użytkowników w pojedynkach jeden na jednego. Najbardziej wykwalifikowany program zostanie ukoronowany Ostatecznym Samurajem PPCG i otrzyma zielony tyk legendy.
Opis gry
W tej części opisano mechanikę gry.
Warunek zwycięstwa
Mecz składa się z dwóch samurajów , które są skierowane przeciwko sobie nawzajem. Każdy samuraj rozpoczyna każdy mecz 20 punktami wytrzymałości i 1 honorem . Samuraj wygrywa, jeśli jego przeciwnik nie żyje i nadal żyje. Istnieją dwie metody śmierci samuraja:
- Jeśli punkty wytrzymałości samuraja spadną do 0, umrze.
- Jeśli samuraj przyniesie swój honor poniżej 0, zostanie on powalony przez bogów za nieuczciwe działanie w pojedynku.
Powalenie przez bogów ma wyższy priorytet niż zmniejszenie punktów życia do 0, więc w sytuacji, gdy jeden samuraj ma 0 punktów zdrowia, a drugi za -1 honoru, samuraj z 0 punktami zdrowia wygra. W sytuacji, gdy obaj samurajowie mają honor -1, obaj zostają powaleni przez bogów, a gra kończy się remisem.
Mecz składa się z maksymalnie 500 tur . Jeśli wszystkie 500 tur minie, a mecz nie zostanie rozstrzygnięty (żaden samuraj nie umarł), bogowie się nudzą i powalają obu samurajów, co powoduje remis.
działania
W każdej turze samuraj musi wykonać dokładnie jedną z następujących czynności:
W
Samurajowie będą czekać i nie wykonywać żadnych działań. To sprawia, że wygląda fajnie, ale nie pomaga mu pokonać przeciwnika. Jest to również akcja domyślna.
B
Samurajowie pokłonią się przeciwnikowi w sposób honorowy. To podoba się bogom, dzięki czemu samurajowie zdobędą 1 Honor. Honor jest niezbędny do sukcesu twojego samuraja, ponieważ Honor jest zasadniczo „zasobem” w tej grze - wszystkie ruchy oprócz B
i W
mogą zmniejszyć Honor. Ponadto, jeśli samuraj zyska 7 Honoru lub więcej, przyznany mu zostanie Miecz Bogów . Konsekwencje tego są opisane poniżej.
Jednak ukłon w stronę przeciwnika pozostawia cię otwartym, jeśli przeciwnik zdecyduje się cię uderzyć mieczem, więc bądź ostrożny, kiedy wybierzesz ukłon.
G
Samurajowie wejdą do pozycji obronnej i będą strzegli się wszelkich uderzeń mieczem. Ten ruch z powodzeniem zablokuje wszystkie ciosy mieczem, nawet te wykonane Mieczem Bogów .
Jednak bogowie patrzą na zbyt defensywnego samuraja, więc ten ruch pochłonie 1 Honor, jeśli akcja samuraja w bezpośrednio poprzedzającej turze również się strzegła. W przeciwnym razie nie konsumuje Honoru.
I
Samuraj spróbuje uderzyć przeciwnika szybkim wyciągnięciem miecza z pochwy. Jeśli samuraj ma 7 Honoru lub więcej, użyje Miecza Bogów zamiast swojego zwykłego miecza. Ten ruch pochłania 1 Honor.
Szybki remis to szybkie uderzenie, które pokona wolniejsze ataki z góry, jednak przegra z parami. Jeśli uderzenie zakończy się powodzeniem, zadaje 1 obrażenie lub 2 obrażenia Mieczem Bogów .
P
Samuraj spróbuje sparować każdy nadchodzący atak, a następnie rozpocznie własny atak. Jeśli samuraj ma 7 Honoru lub więcej, użyje Miecza Bogów zamiast swojego zwykłego miecza. Ten ruch pochłania 1 Honor.
Parowanie jest dobrym manewrem przeciwko szybkim atakom, ale zostanie obezwładnione przez wolniejsze ataki z góry. Jeśli uderzenie zakończy się powodzeniem, zadaje 1 obrażenie lub 2 obrażenia Mieczem Bogów .
O
Samuraj będzie próbował uderzyć przeciwnika wolniejszym atakiem z góry. Jeśli samuraj ma 7 Honoru lub więcej, użyje Miecza Bogów zamiast swojego zwykłego miecza. Ten ruch pochłania 1 honor.
Uderzenie ogólne może obezwładnić parowania, ale przegra z szybkimi uderzeniami. Jeśli uderzenie zakończy się powodzeniem, zadaje 1 obrażenie lub 2 obrażenia Mieczem Bogów .
Miecz Bogów
Samuraj z Honorem, który wynosi 7 lub więcej, zyskuje możliwość użycia Miecza Bogów . Jeśli jego Honor spadnie poniżej 7, umiejętność użycia Miecza Bogów zostanie mu odebrana. Sword of the Gods zajmuje 2 obrażenia zamiast 1.
Sword of the Gods nie pozwala pokonać strajk strajk miecz, że nie będzie zwyczajnie pokonać. Na przykład, sparowanie Miecza Bogów nadal przegrywa ze zwykłym uderzeniem z góry, a szybki los Miecza Bogów nie obezwładni zwykłego szybkiego ciosu . Rzeczywiście, tak zwany Miecz Bogów nie jest tak potężny - być może jest to kosmiczny żart grany przez bogów ...
Tabela interakcji
Poniższy fragment stosu zawiera tabelę, w której wyraźnie wymieniono wszystkie możliwe wyniki różnych kombinacji działań, które może podjąć dwóch samurajów. Aby go wyświetlić, kliknij „Pokaż fragment kodu”, a następnie „Uruchom fragment kodu”.
Komunikacja programowa
Aby ułatwić przeprowadzenie turnieju, napisano program kontrolny, który ma pełnić rolę „bogów” - przechowuje zapisy honoru i zdrowia oraz odpowiednio uderza w samuraja. W tej sekcji opisano, w jaki sposób twój program będzie komunikował się z programem kontrolera.
Opis wejścia
Program kontrolny wywoła twój program z linii poleceń w następujący sposób:
<command> <history> <enemy_history> <your_health> <enemy_health> <your_honour> <enemy_honour>
gdzie:
<command>
to polecenie wymagane do uruchomienia programu. Na przykład, jeśli twój program znajduje się w plikusuper_sentai.pl
, prawdopodobnie jest to polecenieperl super_sentai.pl
.<history>
to historia twoich ruchów. Na przykładWWBP
oznaczałoby to, że czekałeś dwa razy, ukłoniłeś się raz i sparowałeś raz.<enemy_history>
to historia ruchów wykonanych przez twojego wroga. Na przykładBBBI
oznaczałoby to , że twój wróg ukłonił się trzy razy i wykonał jeden szybki remis.<your_health>
jest twoje obecne zdrowie.<enemy_health>
to aktualne zdrowie wroga.<your_honour>
jest waszym obecnym honorem.<enemy_honour>
to obecny honor wroga.
W pierwszej turze znaki history
i enemy_history
będą puste, więc program zostanie wywołany z czterema ostatnimi argumentami:
<command> <your_health> <enemy_health> <your_honour> <enemy_honour>
Przygotuj się na to!
Bystrzy czytelnicy mogą zauważyć, że cztery argumenty zapewniające honor i zdrowie obu samurajów są w pewnym stopniu zbędne; ponieważ jest to doskonała gra informacyjna, honor i zdrowie samurajów można określić tylko na podstawie historii.
Wartości te podano dla wygody, abyś nie musiał analizować argumentów historii. To powinno się przydać przy wdrażaniu prostych strategii, takich jak nie atakowanie, gdy twój Honor wynosi 0.
Opis wyjścia
Aby wybrać akcję, Twój program powinien jedno wyjście W
, B
, G
, I
, P
, lub O
standardowe wyjście, w zależności od tego, co akcja chcesz zrobić. Jeśli twój program nie wypisze niczego w ciągu 1000ms, zostanie zakończony, a twój program będzie traktowany tak, jakby został wypisany W
.
Jeśli twój program wypisuje więcej niż jedną literę, brana będzie pod uwagę tylko pierwsza litera - więc wypisywanie Parry
będzie takie samo jak wypisywanie P
.
Jeśli wynik pierwszej litery programu nie jest żadną z opcji wymienionych powyżej, domyślnie będzie to W
.
Format zgłoszenia
Prześlij program jako odpowiedź na ten post. Możesz przesłać wiele programów. Jeśli przesyłasz wiele prostych programów, zalecamy przesłanie ich jako pojedynczej odpowiedzi; jeśli przesyłasz wiele złożonych programów, zalecamy przesłanie ich jako osobnych odpowiedzi. Po pomyślnym dodaniu twojego programu / programów do turnieju, dokonam zatwierdzenia do repozytorium git z twoim zgłoszeniem (link poniżej).
Jeśli napotkam problemy, które uniemożliwiają dodanie twojego programu do turnieju, zostawię komentarz na temat twojego zgłoszenia wskazujący problem.
W zgłoszeniu należy uwzględnić następujące informacje:
- Czytelna dla człowieka nazwa twojego programu, do użycia w tablicach wyników. Spacje są tutaj dozwolone; przecinki i znaki Unicode nie są.
- Język, w którym napisany jest Twój program. Unikaj pisania w dziwnych, trudno dostępnych językach, takich jak TinyMUSH.
- Krótkie streszczenie twojego programu. Może to być opis działania programu lub po prostu tekst smaku na temat programu (jeśli chcesz być całkowicie tajny), a może jedno i drugie.
- Polecenia wymagane do uruchomienia programu. Na przykład, jeśli piszesz swoje zgłoszenie w Javie o nazwie
example.java
, dostarczasz instrukcji kompilacji,javac example.java
a następnie instrukcji uruchamianiajava example
. - Kod źródłowy programu.
Aby pomóc w przesłaniu, udostępniam szablon zgłoszenia, który można znaleźć tutaj . Szablon sprawia, że przesyłanie wygląda ładniej. Gorąco zachęcam do korzystania z niego.
Podaję również dwa przykładowe wpisy. Mimo że przykładowe zgłoszenia będą brały udział w rundzie robin, ich głównym celem jest wyjaśnienie formatów przesyłania i wprowadzania / wysyłania do turnieju, a nie poważna rywalizacja o tytuł Ultimate Samurai.
Struktura turnieju
W tej części opisano, w jaki sposób odbędzie się turniej między uczestnikami.
Program kontroli
Program sterujący jest napisany w Pythonie 2 i można go znaleźć w repozytorium Ultimate Samurai Showdown Github . Jeśli chcesz go uruchomić samodzielnie, instrukcje, jak go uruchomić, znajdują się w pliku README.md w łączu. Jednak tylko turnieje rozgrywane na moim komputerze będą oficjalne, aby uniknąć różnic sprzętowych wpływających na wyniki turniejów.
Program sterujący zostanie uruchomiony na komputerze przenośnym z systemem Arch Linux. Ma procesor Intel Core i7 i 8 GB pamięci RAM. Spróbuję uruchomić wszystkie wpisy na moim komputerze, ale byłbym bardzo wdzięczny, jeśli unikniesz języków, do których nie można uzyskać swobodnego dostępu (ponieważ nie wiąże się to z żadnymi kosztami pieniężnymi).
System oceniania
System punktacji to okrągły robin. Każdy program rozegra osiem meczów z każdym innym programem. Wygrana daje programowi 1 punkt, strata bez punktów, a remis 0,5 punktu. Program z najwyższym wynikiem wygrywa. Jeśli dojdzie do remisu, pojedynkuję dwa najlepsze programy ze sobą, aby ustalić zwycięzcę.
Liczba odtworzeń każdego programu może zostać zmniejszona z 8, jeśli liczba uczestników jest bardzo duża. Dodam tutaj notatkę, jeśli to nastąpi.
Będę uruchamiał okrągły robin wiele razy, gdy publikowane są nowe zgłoszenia, ale liczy się tylko najnowszy okrągły robin.
Dyskwalifikacje
Możliwe jest, że Twój program zostanie zdyskwalifikowany z turnieju. Dyskwalifikacja może nastąpić, jeżeli:
- Twój program nie kompiluje się ani nie uruchamia;
- Twój program jest strategicznym duplikatem innego programu (tzn. Implementuje dokładnie taką samą strategię jak inny program);
- Twój program próbuje sabotować inne programy, modyfikując kod kontrolera, kod innego programu itp .;
- Twój program próbuje wykorzystać błąd w kodzie kontrolera. Zamiast wykorzystywać błędy, powinieneś otworzyć problem w repozytorium git, skomentować go lub pingować na czacie.
Wcześniejsze wyniki
Szczegółowe wyniki wszystkich turniejów są dostępne na stronie wiki .
Ostatni turniej został ukończony w dniu 17.07.2015, 07:20. Oto podsumowanie wyników:
The Observer: 209.0
Coward: 203.0
Monk: 173.0
Elephant Warrior: 157.0
Iniqy: 157.0
Agent 38: 144.0
Ninja: 138.0
Meiyo Senshi: 138.0
Kakashi: 136.0
Yoshimitsu: 131.0
Hermurai: 121.0
Warrior Princess: 120.0
Gargoyle: 119.5
The Honourable: 119.0
Hebi: 118.5
Predictor: 116.0
Whack-a-mole: 107.0
The Fool: 106.0
The Prophet: 105.0
Copy-san: 97.0
YAGMCSE: 80.0
The Waiter: 66.0
Swordsman: 43.0
Spork Holder: 32.5
Blessed Samurai: 27.5
Attacker: 27.0
The Terminator: 17.0
Master Yi: 16.0
źródło
Odpowiedzi:
The Monk (Java)
Mnich ceni honor i chwali błogosławieństwa bogów. Będąc wyćwiczonym w cierpliwości, spokojnie wysyła swoje modlitwy do nieba, dopóki nie poczuje się uprzywilejowany przez Boga.
Ciesząc się życiem, stara się go chronić. Kiedy traci zdrowie w określonym tempie, broni się najlepiej, jak potrafi.
W nadziei na wsparcie swoich bogów losowo wysyła wytrysk [1] do nieba, w przeciwnym razie walczy najlepiej, jak potrafi.
Jeśli jego przeciwnik jest zmęczony walką, kończy go, wykorzystując swój pozostały honor, aby zapewnić mu szybką i bezbolesną śmierć.
Kompiluj / Uruchom
The Ninja (Java)
Ninja jest szybki i atakuje jeszcze szybciej. Atakuje natychmiast po przyjacielskim oficjalnym powitaniu, dodatkowo myląc wroga, kłaniając się przed i po każdym ataku.
Po otrzymaniu błogosławieństwa ninja podtrzymuje to zachowanie, czekając, aż przeciwnik wykona swój pierwszy ruch (ruchy). Korzystając z okazji, wyzwala serię wybuchów, pobłogosławionych przez boginię ninja, dopóki nie będzie zbyt zmęczony walką. Wykorzystując swój pozostały honor, ukrywa się pod liśćmi poniżej, chroniąc się przed następnym atakiem. Wyskakuje i atakuje swojego przeciwnika od tyłu, znów będąc tak szybko schowanym.
Jeśli otrzyma śmiertelną ranę, idzie na całość, aby zabrać ze sobą życie swojego przeciwnika - oczywiście zachowując odrobinę honoru.
Kakashi, The Copycat Ninja (Java)
Kakashi kopiuje ruchy przeciwnika, losowo wybierając pomiędzy dwoma ostatnimi ruchami wykonanymi przez przeciwnika. Jeśli przeciwnik czeka, kłania się - zachowuje również swój honor.
Chciałbym, aby Kakashi mógł zostać pobłogosławiony przez sharingan. Myślałem o przeczytaniu cast.txt. Symuluj każdą rundę jego historii przeciwko każdemu przeciwnikowi. Spróbuj dowiedzieć się, z którym przeciwnikiem walczy, porównując historię symulowanych wrogów z historią prawdziwych wrogów. Następnie wykorzystaj te informacje, aby przewidzieć następny ruch, który wykona przeciwnik, i wybierz najlepsze przeciwdziałanie ze wstępnie zdefiniowanej listy. Ale wydaje mi się, że może to trochę potrwać, ponieważ mam w tej chwili bardzo wolny Internet i brak znajomości języka Java
The Observer, (node.js)
Obserwator kłania się, zanim spróbuje przewidzieć następny ruch przeciwnika na podstawie ostatnich 5 ruchów, wybierając najlepszy odpowiednik dla przewidywanego ruchu.
Edycja: Podziękowania dla @apsillers za udostępnienie pliku node.js!
Edycja: Miałem poważną wadę u obserwatora, właściwie nie wiem, co myślałem wczoraj wieczorem. Wygląda na to, że spojrzał tylko na dwa ostatnie ruchy wroga. Zaskakująco dobrze mu się to udało.
Jego pamięć jest teraz przeszukiwana przez najdłuższą (końcową) część historii wrogów, którą już widział. Zawiera tablicę ze wszystkimi ruchami, które nastąpiły po historii ruchów. Jeden jest wybierany losowo. Więc jeśli jeden ruch następował częściej, jest również bardziej prawdopodobne, że zostanie wybrany. Coś w rodzaju łańcuchów Markowa.
Obserwator, również teraz strzeże.
[1]: TIL: wytrysk ma znaczenie religijne
źródło
Meiyo Senshi (Java)
Pochodzący z obszaru Haijima niewiele wiadomo o Meiyo. Zwykle nie biorą udziału w grach sportowych, ale wysłali wojownika, aby ocenili swoich rywali.
Są to jednak honorowe grono, więc możesz mieć pewność, że w krótkim czasie ujawni swoją obecność bogom. Gdy zobaczy wystarczająco dużo swojego wroga, aby się zgłosić, użyje otrzymanych błogosławieństw, aby powalić przeciwnika.
Aby skompilować uruchomienie, jest to standardowy sposób Java:
źródło
Uchwyt Spork (Rubinowy)
Spork Holder kłania się w pierwszej turze, a potem losowo zachowuje się. Jest to jeden z dwóch przykładowych wpisów.
Dowództwo:
ruby spork-holder.rb
The Waiter (bash)
Kelner czeka tylko na każdym kroku. Jest to jeden z dwóch przykładowych wpisów.
Dowództwo:
echo W
Nie jest wymagany kod źródłowy.
źródło
Tchórz (Node.js)
BXBXBX
/BBB
wzory cię kłaniają (lub uderzają) podczas kłaniania się.GXGXGX
wzory się kłaniają, gdy się strzeżesz.Jeśli chcesz napisać zgłoszenie Node.js , skorzystaj z mojego kodu typu „kocioł”; wszystko, włącznie z
decide
funkcją, jest w pełni ogólne i bezpłatne.źródło
Whack-a-mole (R)
Uderza, gdy wróg może się ukłonić, w przeciwnym razie strażnicy.
Uruchom za pomocą
Rscript Whack-a-mole.R
.źródło
Elephant Warrior (Java)
Elephant Warrior pochodzi ze starszego, bardziej naturalnego czasu. Wiele widział i pamięta wszystko. Podczas gdy on przygląda się swojemu przeciwnikowi, kibicuje bogom, a potem, gdy bierze je do serca, rozbiera ich na części.
Kompiluj:
javac ElephantWarrior.java
polecenie:
java ElephantWarrior
źródło
args
.Wojownicza księżniczka (Julia)
To pierwsze wyzwanie King of the Hill, w którym brałem udział. Zobaczmy, jak to się potoczy.
Wojownicza księżniczka traktuje priorytetowo atak i honor, aw razie potrzeby ucieka się do samozachowania. Jest raczej chętna i nigdy nie czeka. Starając się zachować zwinność, nie używa również ataku z góry.
Zapisz jako
warrior-princess.jl
i uruchom z wiersza poleceń tak:Jeśli nie masz Julii, możesz pobrać ją tutaj . Aby uniknąć problemów, zalecana jest najnowsza stabilna wersja (tj. Nie wersja rozwojowa).
źródło
Gargulec (Java)
Próbuje użyć ruchu obronnego, nie zużywając honoru.
Ponieważ jest to wpis Java:
źródło
Swordsman (C / Java)
Szermierz kłania się w pierwszej turze i za każdym razem, gdy kończy mu się honor. Następnie sprawdza, czy przeciwnik nie ukłonił się, nie bronił lub nie czekał w poprzedniej turze. Jeśli przeciwnik tego nie zrobił, istnieje duże prawdopodobieństwo, że zrobi jedno z nich w bieżącej turze, a szermierz losowo zaatakuje przeciwnika. Jeśli to nie prawda, broni się, jeśli nie bronił poprzedniej tury. Jeśli tak, kłania się, by zdobyć honor.
Wersja C:
Zainstaluj GCC (kompilator) i zapisz kod w pliku o nazwie „ Swordsman.c ” do kompilacji:
Zostanie utworzony plik wykonywalny o nazwie „ Swordsman ”. Uruchom za pomocą
Wersja Java:
Zainstaluj javac (kompilator) i zapisz kod w pliku o nazwie „ Swordsman.java ” do kompilacji:
Plik klasy o nazwie „ Swordsman.class ” zostanie utworzony. Uruchom za pomocą
Attacker (Java)
Atakujący nie dba o nic poza tym, że chce zabić swojego przeciwnika. Losowo uderza jeden z ruchów ataku, a jeśli ma niski honor, kłania się.
Zainstaluj javac (kompilator) i zapisz kod w pliku o nazwie „ Attacker.java ” do kompilacji:
Plik klasy o nazwie „ Attacker.class ” zostanie utworzony. Uruchom za pomocą
Predyktor (C / Java)
Predyktor przewiduje ruchy wrogów. W pierwszej turze używa losowego ruchu. Kłania się, jeśli jego honor jest niski, uderza, jeśli honor wroga jest niski lub ukłonił się w poprzedniej turze. Jeśli predyktor nie strzegł poprzedniej tury, chroni w obecnej turze. W przeciwnym razie wykonuje ten sam ruch, co wróg wykonał w poprzedniej turze, pod warunkiem, że nie
'W'
w takim przypadku Predictor się kłania.Wersja C:
Zainstaluj GCC (kompilator) i zapisz kod w pliku o nazwie „ Predictor.c ” do kompilacji:
Zostanie utworzony plik wykonywalny o nazwie „ Predictor ”. Uruchom za pomocą
Wersja Java:
Zainstaluj javac (kompilator) i zapisz kod w pliku o nazwie „ Predicator.java ” do kompilacji:
Plik klasy o nazwie „ Predicator.class ” zostanie utworzony. Uruchom za pomocą
Nie jestem pewien, jak skuteczne będą te boty, ponieważ nie mam interpretera python2, aby je przetestować.
źródło
ArrayIndexOutOfBoundsException
w pierwszej turze, co powoduje, że musi czekać w pierwszej turze. Poza tym działa.segmentation fault (core dumped)
po 24 rundzieMaster Yi (Python)
Mistrz zabójców zyskuje dużą przychylność we wczesnej fazie gry, budując ją, aż stanie się niepokonany. Próbuje zaatakować, gdy najmniej tego oczekują.
Aby uruchomić: Zapisz jako
MasterYi.py
źródło
Copy-san (C)
Kopiuje każdy ruch przeciwnika. Jestem pewien, że na pewno przegra. Skompilować:
gcc copy-san.c
źródło
Hebrajski (Java)
Hebi podążają Drogą Węża.
Wąż nie potrzebuje błogosławieństwa bogów.
Wąż ślizga się; jak fale na plaży, to, co nadchodzi, cofa się w taki sposób, w jaki przyszło.
Wąż nigdy nie czeka.
Wąż nie ma poczucia trafności, w przeciwnym razie zostałby napisany w Pythonie.
Instrukcje biegowe:
Kod treści:
źródło
The Honorable (Java)
Honorowe wartości honorują przede wszystkim. To znaczy, jego honor ponad wszystkich innych. Jeśli wrogi samuraj ma większy lub równy honor, kłania się. Nikt nie będzie bardziej honorowy niż on. W przeciwnym razie wykonuje losowy ruch. Nigdy nie strzeże dwa razy z rzędu - byłoby to hańbą!
kompilować:
Źródło:
źródło
Błogosławiony samuraj (Python)
Ten samuraj stara się jak najdłużej zachować przychylność bogów. Pędzi, by zdobyć święty miecz, a następnie naprzemiennie strzeże i atakuje jednym z ciosów, w razie potrzeby uzupełniając honor. Jeśli wygląda na to, że on lub jego przeciwnik może wkrótce upaść, rzuca się na śmierć. Z łatwością spadnie na przeciwnika, który może śledzić jego wzór, ale jego strategia polegająca na atakowaniu zawsze z dwoma obrażeniami powinna być całkiem skuteczna.
Aby uruchomić:
Zapisz jako BlessedSamurai.py
źródło
last
na,self.last
który wydaje się naprawiać problem.Hermurai (C ++)
Podziwia swojego przeciwnika i jest trochę paranoikiem. Chce wiedzieć, czy potrafi robić to, co potrafią inni samurajowie, ponieważ wciąż nie może uwierzyć, że jest samurajem. Jego nigdy nie znikający sen stał się rzeczywistością, zanim się o tym dowiedział. Co może kosztować jego głowę ...
Iniqy (C ++)
Uderza tak mocno, jak to możliwe. Przechodzi w tryb nie do powstrzymania, gdy jest w niebezpieczeństwie.
Oba są napisane w C ++. Kompilować:
Aby uruchomić w systemie Linux:
./iniqy
Aby uruchomić w systemie Windows:
iniqy.exe
źródło
Terminator (rubin)
Terminator nie zwraca uwagi na własne zdrowie. Terminator nie ma pojęcia honoru. Terminator jest wysyłany z przyszłości i po prostu zdecydowany zakończyć wroga. Robi to, obserwując ruchy przeciwników i nic więcej. Próbkuje ruchy i oblicza odpowiednią odpowiedź w tak zawiły sposób, że żadna współczesna technologia nie jest w stanie przewidzieć działań Terminatora. W rzeczywistości dla każdego, kto mieszka w 2015 roku, Terminator może wydawać się nieco przypadkowy ...
źródło
Agent 38 [1] (C)
Jako produkt rozległej manipulacji genetycznej, Agent 38 ma sylwetkę i ostrość psychiczną super [2] samurajów i zdecydowanie przewyższa wszystkich swoich bezradnych [potrzebnych cytatów] wadliwych [potrzebnych cytatów] konkurentów.
[1] Zupełnie nieistotna liczba [2] Gwarantowana prawda przez 1% czasu
YAGMCSE
Metody Monte Carlo wydają się prezentować przyzwoitą zabawę, więc oto jeszcze jedno ogólne wejście do symulacji Monte Carlo!
W przeciwieństwie do większości innych zgłoszeń w tym konkursie, ten wpis wykorzystuje dużą liczbę symulacji gier losowych, a zatem wymaga użycia flagi -O3 dla optymalnej wydajności.
Skompiluj program za pomocą polecenia: gcc monte.c -o monte -O3 -std = c99
źródło
GBWWWWW...
lubBWWWW
Po mojej nieudanej próbie wejścia do Target Dummy, przedstawiam wam mojego następnego bota ...
ScroogeBot - Python 2
Ten bot pokłoni się, jeśli będzie miał jeden honor. W przeciwnym razie rzuci monetą.
Jeśli wyląduje na głowach, wykona losowy atak. Jeśli wyląduje na ogonie, będzie się kłaniał lub strzec.
Dowództwo:
python scroogebot.py
źródło
Yoshimitsu (JS)
Próbuje się nie strzec przez sprawdzenie ostatnich dwóch ruchów, otrzyma odwagę z wyższym honorem. na podstawie wykonanych apsillerów szablonu
źródło
Głupiec (C)
Błazen sugeruje raczej błędną strategię, nigdy nie powtarzając dwukrotnie tego samego ruchu, chyba że zostanie zmuszony przez brak honoru. Jego ruchy są w dużej mierze oparte na przypadkowości, co utrudnia przewidywanie jego działań. Jego dobre samopoczucie jest ostatnią rzeczą w jego umyśle, ponieważ jego myśli skupiają się wyłącznie na rozlewu krwi i ostatecznym zwycięstwie
Prorok (C)
Prorok wykorzystuje wiedzę o 2 poprzednich ruchach przeciwnika, aby przewidzieć następny ruch i zapewnia szybki i śmiertelny kontratak. Poza tym zajmuje się astrologią i tym podobne.
Kompilacja
Oba programy są napisane w C i można je skompilować z
gcc
:Bieganie
*nic
Windows
źródło