Jaskiniowiec. Inny jaskiniowiec bierze kij, ale kij był dla mnie. Walka jaskiniowców !
Opis
Jaskiniowiec potrzebuje ostrego patyka, aby dźgnąć innego jaskiniowca. Inny jaskiniowiec również próbuje dźgnąć ostrym kijem. Jaskiniowiec może wyostrzyć kij, szturchać kijem lub blokować kijki.
Jeśli jaskiniowiec wbije drugiego jaskiniowca ostrym kijem, inny jaskiniowiec ucieknie, a ja zwycięstwo. Ale jeśli inny jaskiniowiec sprytnie blokuje się podczas szturchania, nic się nie dzieje, z wyjątkiem tego, że mój kij staje się tępy i muszę ponownie wyostrzyć.
Jaskiniowiec leniwy. Poza tym jaskiniowiec głupi. Jaskiniowiec nie wie, co robić, więc jaskiniowiec potrzebuje wymyślnego programu komputerowego techno, aby powiedzieć jaskiniowcowi, co ma robić.
Wejście
Wkład twojego programu będzie historią wydarzeń, które miały miejsce, w których S
oznacza ostrzenie (tj. Jaskiniowiec zaostrzył swój kij), P
oznacza poke i B
blok. Dane wejściowe będą historią obu stron (ciebie i przeciwnika), więc ruchy twojego i przeciwnika zostaną oddzielone przecinkiem ( ,
).
Przykładowe dane wejściowe:
SPB,SBB
Oznacza to, że gracz wyostrzył swój kij, a następnie szturchnął, a następnie zablokował, a przeciwnik wyostrzył, a następnie zablokował, a następnie ponownie zablokował.
Nie otrzymasz żadnych danych wejściowych w pierwszej turze.
Wynik
Wyjście jest bardzo podobne do wejścia (ponieważ jaskiniowiec nie jest zbyt inteligentny). Twój program powinien wyświetlać dane w S
celu wyostrzenia, P
poke i B
bloku. Uwzględniany będzie tylko pierwszy znak wyniku, a wszelkie inne dane wejściowe będą traktowane jako B
polecenie (blok).
S
: wyostrzyćPodczas ostrzenia ostrość kija jaskiniowca wzrasta o 1, a kij dostaje 1 dodatkowe szturchnięcie. Każde dźgnięcie zmniejsza ostrość kija o 1, a jeśli ostrość kija wynosi 0, jest zbyt nudny, aby go szturchać. Ostrość zaczyna się od 0. Jeśli ostrość osiągnie 5, kij jest mieczem! (Patrz poniżej.)
Jeśli przeciwnik szturchnie podczas ostrzenia (i ma ostrość> 0), przeciwnik wygrywa!
P
: szturchaćPodczas szturchania ostrość kija jaskiniowca spada o 1, a ty szturchasz przeciwnika! Jeśli twój przeciwnik ostrzy, wygrywasz! Jeśli przeciwnik szturcha, twój kij uderza w kij przeciwnika i oba stają się matowniejsze (o 1 „jednostkę ostrości”). Jeśli przeciwnik blokuje, nic się nie dzieje poza tym, że twój kij staje się matowy.
Jeśli szturchasz, gdy ostrość twojego kija wynosi 5 lub więcej, twój kij staje się mieczem i zawsze wygrywasz! (Chyba, że twój przeciwnik również ma miecz i również wybrał
P
; w takim przypadku oboje stają się bardziej tępi i mogą powrócić do drążków, jeśli ich ostrość spadnie poniżej 5).Nie możesz szturchać z ostrością 0. Jeśli to zrobisz, nic się nie wydarzy.
B
: blokKiedy blokujesz, nic się nie dzieje, gdy przeciwnik szturcha. Jeśli twój przeciwnik nie szturcha, blok nic nie robi.
Blokowanie nie chroni przed mieczem, nawet jeśli go masz!
Zasady i ograniczenia
Dodatkowe zasady to:
- Twój program może odczytywać i zapisywać pliki we własnym folderze (bez kradzieży!), Jeśli chcesz zapisać dane, ale nie możesz uzyskać dostępu do niczego poza nim (a jaskiniowcy nie mają połączenia z Internetem na pustkowiu).
- Ważna uwaga na temat plików : jeśli zapisujesz pliki, pamiętaj, aby zapisać je w katalogu
players/YourBotsName/somefile.foo
! Bieżący katalog roboczy dla Twojego programu nie będzie należeć do Twojego programu!
- Ważna uwaga na temat plików : jeśli zapisujesz pliki, pamiętaj, aby zapisać je w katalogu
- Jaskiniowcy są uczciwi: jeden program nie może mieć kodu specyficznego dla innego programu, a programy nie mogą sobie nawzajem pomagać. (Możesz mieć wiele programów, ale nie mogą one ze sobą w żaden sposób współdziałać).
- Sędzia jaskiniowca nie jest cierpliwy. Jeśli jaskiniowcy wykonają więcej niż 100 tur w celu wyłonienia zwycięzcy, sędzia się nudzi i obaj jaskiniowcy przegrywają.
Jeśli Twój program złamie regułę lub nie będzie zgodny ze specyfikacją, zostanie zdyskwalifikowany, usunięty playerlist.txt
i wszystkie pojedynki rozpoczną się od początku. Jeśli twój program zostanie zdyskwalifikowany, lider jaskiniowca (ja!) Skomentuje post twojego programu i wyjaśni dlaczego. Jeśli nie łamiesz żadnych reguł, Twój program zostanie dodany do tablicy wyników. (Jeśli twojego programu nie ma na tablicy wyników, nie ma komentarza wyjaśniającego do twojego postu, a opublikowałeś swój program przed czasem „Ostatnia aktualizacja” poniżej, powiedz liderowi jaskiniowców! Może on zapomniał.)
W swoim poście podaj:
- Imię.
- Polecenie powłoki, aby uruchomić program (np.
java MyBot.java
,ruby MyBot.rb
,python3 MyBot.py
, Itd.).- Uwaga: dane wejściowe zostaną do tego dołączone jako argument wiersza poleceń.
- Jaskiniowcy używają Ubuntu 14.04, więc upewnij się, że kod działa (swobodnie) na nim.
- Numer wersji, jeśli kod działa inaczej w różnych wersjach wybranego języka.
- Twój kod (oczywiście).
- Jak skompilować kod, jeśli to konieczne.
Kod kontrolera / testowanie, przykładowy bot
Lider jaskiniowca napisał kod kontrolny w C ++ i opublikował go na repozytorium Github . Możesz tam uruchomić i przetestować swój program.
Bardzo, bardzo prosty program (1 linia!) Jest również zamieszczony w odpowiedziach poniżej .
Punktacja i tabela wyników
Punktacja jest łatwa. Zwycięzca jaskiniowca dostaje punkt. Jaskiniowiec z największą liczbą punktów po 3 pojedynkach z każdym innym jaskiniowcem zostaje nowym przywódcą jaskiniowców!
150 Watson
147 SpeculativeSylwester
146 Gruntt
141 BashMagnon
126 ChargerMan
125 PrisonRules
124 ViceLeader
122 MultiMarkov
122 CaveDoctor
120 RegExMan
120 Hodor
117 FancyTechnoAlgorithm
116 Semipatient
113 Watcher
108 BobCaves
105 MinimaxMan
104 Oracle
102 MaybeMarkov
97 Nash
95 Sicillian
95 Feint
95 Basilisk
94 SharpMan
93 Darwin
91 Nigel
91 JavaMan
88 Entertainer
88 CarefulBot
85 CaveMonkey
84 SSBBP
82 SirPokealot
79 MasterPoker
77 Unpredictable
76 IllogicalCaveman
75 SharpenBlockPoke
75 HuddleWolfWithStick
72 WoodenShield
68 PokeBackBot
68 PatientBlacksmith
66 PatientWolf
58 MonteCarloMan
58 BlindFury
56 BinaryCaveman
55 PokeBot
55 CavekidBlocks
53 Swordmaster
53 Blocker
52 NakedEarlyNerd
52 ModestCaveman
50 LatePokeBot
40 Trickster
39 SwordLover
38 ForeignCaveman
36 Swordsmith *
28 Touche
27 WantASword
27 FoolMeOnce
24 PeriodicalCavemanCicada
11 Aichmophobic
(ta tabela liderów została wygenerowana automatycznie)
Gracze oznaczeni *
w pewnym momencie rzucili jakiś błąd lub wyjątek; ci gracze mają również komentarz do swoich postów.
Gracze, którzy nie mogą być zawarte w testach z jakiegokolwiek powodu (ci gracze będą mieć komentarz na swoich stanowiskach wyjaśniając problem): Monkey
, Elephant
, FacileFibonacci
, StudiousSylwester
.
Ostatnia aktualizacja: 3 sierpnia 00:15 (UTC).
źródło
Odpowiedzi:
Darwin - C
W każdym razie, kto potrzebuje strategii? Poproś grupę jaskiniowców, aby poszli na siebie i pozwól, aby dobór naturalny zajął się resztą!
Używamy bardzo prostego modelu dla prymitywnego mózgu jaskiniowca: nie ma on pamięci i bierze pod uwagę jedynie ostrość kija jego i przeciwnika. Są one używane jako zmienne dla binarnego wielomianu o pewnym skończonym porządku. Każda akcja (blok, wyostrzenie i zaczepienie) ma przypisany wielomian, którego wynik określa względne prawdopodobieństwo wyboru tej akcji. To prawie wszystko - zacznij od niektórych losowych współczynników i zoptymalizuj iteracyjnie.
Bot:
Skompilować z:
gcc darwin.c -odarwin -w -O3
. Uruchom z:./darwin <history>
.Bot odczytuje współczynniki z pliku o nazwie podanej
program
wplayers/Darwin
katalogu (inny plik może być określony jako drugi argument wiersza poleceń). Ten program wydaje się dobrze:Zapisz jako
players/Darwin/program
.Poniżej znajduje się program, który generuje
program
pliki, które mogą być używane przez bota (nie trzeba go kompilować, jeśli używaszprogram
powyższego pliku):Skompilować z:
gcc genprog.c -ogenprog -w -O3
. Uruchom z:./genprog [output-filename]
.Watson
Jakie jest DNA zwycięskiego jaskiniowca? Być może ten koleś ma odpowiedź:
Biegnij z:
python Watson.py
Watson jest produktem algorytmu genetycznego. W przeciwieństwie do Darwina, tym razem genetyczny układ odniesienia jest faktycznym programem napisanym w małym, specyficznym dla domeny języku (tutaj przetłumaczonym na Python).
Prosta sekwencja pokonuje dużych graczy
Ta mała koleżanka robi zaskakująco (a może nie tak zaskakująco) dobrze, szczególnie przeciwko liderom:
Biegnij z:
python SSBBP.py
źródło
players/Darwin
katalogu.undefined reference to `fmax'
. - Edytuj-- Nieważne, naprawdę potrzebowałem-lm
.Nieprzewidywalny jaskiniowiec
Jaskiniowiec wybiera losowo każdą rundę, ale wyjaśniłem mu bardzo prosto, że niektóre działania po prostu czasem nie mają sensu. Skopiuj ten kod, jeśli chcesz wyrazić inną logikę.
To jest Ruby, zapisz jako „nieprzewidywalny.rb” i uruchom z
ruby unpredictable.rb
źródło
no 'Block'
też powinno być, jeśli mój przeciwnik ma miecz.unless
instrukcjino 'Block'
ino 'Poke
? (no 'Block' unless he.has_pointy_stick
)Cave Doctor - Lua
„Przegrywam z nowymi obcokrajowcami, znokautowałem ich na studia”
Kiedy zobaczysz tylu pacjentów, co lekarz jaskiniowy, zaczynasz naprawdę rozumieć psychikę jaskiniowca (a przynajmniej tak mam nadzieję). Gra w jaskiniowego doktora jest czystą strategią, czeka na zaczepy, które blokuje, próbując rozbroić swojego przeciwnika, ale nie pozwala temu przeciwnikowi zbliżyć się do wykonania miecza. Próbuje przewidzieć, kiedy można bezpiecznie wyostrzyć, aby nie stracić przewagi.
Biegnij z:
lua CaveDoctor.lua
źródło
ForeignCaveman
ForeignCaveman nie ma pojęcia, co właśnie powiedziałeś. On po prostu ... robi rzeczy.
javac ForeignCaveman.java
następniejava ForeignCaveman
źródło
Wice lider
Klamka ♦ jest liderem. Chcę być liderem! Śledź super inteligentny program, aby stać się liderem!
Skompilować:
javac ViceLeader.java
Uruchom:java ViceLeader
.źródło
if (enemySharpness <= 4 || mySharpness >= 5)
vs==
?Może Markov 2.1
Myślę, że używa Łańcuchów Markowa do przewidywania, co zrobi drugi jaskiniowiec, ale tylko krótko spojrzałem na stronę wikipedii o Łańcuchach Markowa i zdecydowałem, że ma za dużo tekstu.
Próbuje pozostać przy życiu przez 30 rund, a następnie buduje stół ze zmianami stanu obecnego i następnego i reaguje na to, co myśli inny jaskiniowiec.
Kod zawiera wiele niepotrzebnych instrukcji, ale działa całkiem dobrze.
EDYTOWAĆ
Wykryto lukę w logice. Teraz robi coś, gdy ma miecz.
$ python3 players/MaybeMarkov/MaybeMarkov.py
źródło
PeriodicalCicadaCaveman
Ten raczej sprytny jaskiniowiec zbadał pewnego robaka i zdał sobie sprawę, że nikt nie może dostosować swojego stylu życia, aby skorzystać z pierwszej liczby cykady.
Ukrywa / blokuje przez większość swojego życia, ale czasami szturcha. Jasne, że jest wrażliwy na Miecze i spędza cały cykl z nieostrym kijem, ale ostrzenie kija, gdy jest całkowicie tępe? Dokładnie tego oczekują inni ... nie ta Cykada
do kompilacji: mcs program.cs, aby uruchomić mono program.exe
Edycja: Zmieniono ostrość - kod ... jeśli szturchnę albo wygram, albo mój kij stanie się ciemniejszy
Edycja2: Dodano w sugestii Bobs
Edycja: Zmieniono tak, aby szturchać tylko przy ostrości 2, jeśli drążek ma zawsze zero, drugi facet może zrobić miecz.
źródło
mcs program.cs
go skompiluje,mono program
uruchomi, ale musisz zastąpićfoo.Dump();
sSystem.Console.WriteLine(foo);
(lub dodać metodę rozszerzeniapublic static void Dump(this string value) { System.Console.WriteLine(value); }
).mcs
generuje to<filename>.exe
, np.program.cs
Stałaby sięprogram.exe
. Tak więc polecenie uruchomienia byłobymono program.exe
. (Nie miałem dostępu do mono w momencie mojego wcześniejszego komentarza.)FancyTechnoAlgorytm
Fantazyjny algorytm techno dla fantazyjnego programu komputerowego techno.
Jaskiniowiec wciąż przegrywa bitwę. Jaskiniowiec zły. Więc jaskiniowiec idzie do szkoły komputerowej i uczy się algorytmu.
Program Python 2. Biegać:
python fancytechnoalgorithm.py
źródło
python StickSharpener.py
).Obserwator
Obserwuje ruchy przeciwnika, zawsze pozwalając mu pokazać rękę, zanim uderzy. Jest szczególnie przygotowany dla tych, którzy zaniedbują pracę nad mieczem.
Nazwa pliku:
watcher.py
Biegać:
python watcher.py
Bazyliszek
Stara się zniszczyć tych, którzy patrzą na niego zbyt uważnie. Konsekwentnie pokonuje Strażnika, ale prawdopodobnie ogólnie będzie gorzej.
Nazwa pliku:
basilisk.py
Biegać:
python basilisk.py
Nash
Stara się, aby wybory przeciwnika były nieistotne, wybierając każdy ruch z prawdopodobieństwem uwzględniającym ryzyko i nagrody
To nie jest równowaga Nasha (mój generator strategii ma pewną niestabilność), ale jest blisko.
Dla ciekawości, oto szacunki prawdopodobieństwa wygranej tego bota w każdym stanie gry:
Nazwa pliku:
nash.py
Biegać:
python nash.py
Zwód
Otwiera się szybkim atakiem, aby przetestować obronę przeciwnika.
Nazwa pliku:
feint.py
Biegać:
python feint.py
LatePokeBot
Młodszy brat PokeBota. Nigdy nie wykazuje słabości, ale próbuje walczyć jak jego starszy brat.
Nazwa pliku:
latepokebot.py
Biegać:
python latepokebot.py
źródło
:
bazyliszka; Naprawiłem to dla ciebiePokeBot
Napisane w Ruby.
Uruchom z
ruby pokebot.rb
.Ten bot nie jest zbyt inteligentny; i tak robi to, co przeciętny jaskiniowiec zrobiłby sam.
źródło
PatientWolf v2.0
Ostrzy, jeśli jest tępy, szturcha, jeśli w następnej turze wróg będzie miał miecz lub jeśli wróg jest tępy, blokuje inaczej.
Biegnij z
EDYCJA: dzięki @sylwester za wskazanie błędu
źródło
PatientWolf.pl SB,SP
robi,P
ponieważ uważa, że ma ostry kij.perl patientwolf.pl "SB,SP"
. Powinieneś zrobićmy($me,$him) = split/,/ $ARGV[0];
iif( @ARGV ) {print "S";exit}
.Binary Caveman
Wyostrz, dźgnij, powtórz
Opierając się na pomyśle, że blokowanie jest dla maminsynek, ten jaskiniowiec na przemian między dwiema pozostałymi opcjami.
Połącz z
javac BinaryCaveman.java
Biegnij z
java BinaryCaveman
EDYCJA: Przygody w tablicach łańcuchowych ..... args.length () generuje błąd. args.length zawsze zwraca 1. args [0] .length () zwraca długość pierwszego łańcucha w tablicy.
EDYCJA 2: Zaktualizowano dzięki pomocy Doorknob, Brilliand i Sylwester. Dzięki chłopaki.
źródło
P
lubS
robi coś przeciwnego. A jeśli nie ma jeszcze historii, udaje, że historia byłabyP,
(co następnie prowadzi go do zrobienia wS
pierwszej kolejności).args[0].length()
, nieargs.length
.CavekidBlocks
Płaczący i przestraszony jaskiniowiec może wyglądać na łatwą zdobycz. Nie daj się zwieść jego ładnej twarzy, bo on umie blokować.
Biegnij z
python3 cavekidblocks.py
ChargerMan
Ten jaskiniowiec jest bardzo konserwatywny. Spróbuje naładować swoją broń i atakuje tylko w razie potrzeby.
Biegnij z
python3 chargerman.py
Oszust
Trickster nie wie, jak walczyć, więc próbuje zmylić innego jaskiniowca.
Biegnij z
python3 trickster.py
Niestety, po zatwierdzeniu acc74 , Trickster nie działa już zgodnie z planem.
źródło
Hodor
Hodor nie jest bardzo agresywny. Lubi pozostać w tarczy, chyba że istnieje dobra okazja do ataku.
skompiluj z:
javac Hodor.java
i uruchom z:java Hodor
kod:
Edycja: drobna aktualizacja kodu
źródło
SB,BB
. Kiedy inni jaskiniowcy źle zachowują się w pierwszej turze, Hodor też źle się zachowuje.Spekulacyjny Sylwester - Perl5
Spekulacyjny Sylwester chce wyeliminować poszukiwaczy miecza, patrząc na wzory i szturchać, gdy istnieje szansa, że przeciwnik wyostrzy się i wyostrzy, gdy przeciwnik najprawdopodobniej zablokuje. Nie zrobi tego jednak, jeśli istnieje szansa, że zgadłby, że on sam wyostrzy się w następnym ruchu, a my będziemy jeszcze bardziej ostrożni, kiedy zdecydujemy się na wyostrzenie.
Jeśli zaś przeciwnik jest tępy, stara się być agresywny, ale w końcu zacznie oszczędzać na miecz, gdy wydaje się to bezowocne.
Aby uruchomić na Linuksie, po prostu dodaj to w playerlist.txt:
Facile Fibonacci - R6RS Schemat
Oprócz pierwszego ruchu Facile Fibonacciego blokuje, gdy turą jest liczba Fibonacciego (zaczynając od 0) i wypełnia resztę
PPSS..
i zmienia się, gdy przechodzi 8 do nieskończonej sekwencjiPSS
wygranych mieczem.Aby uruchomić wystarczy zainstalować ikarus
apt-get install ikarus
i dodać to w playerlist.txt:Studious Sylwester - Perl5
Ostrożny Sylwester stosuje tę samą taktykę jak Spekulacyjny Sylwester, ale analizuje także poprzednie gry, aby ustalić, gdzie mógł wybrać zły wybór.
Aby uruchomić na Linuksie, po prostu dodaj to do playerlist.txt
Ostrożna edycja
Nie mogę odtworzyć problemów, które miałeś z
$0
tym, że nie byłeś pełną ścieżką do skryptu perl, gdy jest on uruchamiany z perlem. Wyciągnąłem również twoje zmiany i nie widzę żadnych zmian w CavemanDuels src i tak samo działam ponad 20 razy bez zgłaszanego problemu. Zaczynam się obawiać, że skrypt mógł zostać pobrany jako skrypt bash zamiast uruchamiać go podczas wykonywania lub jako argument dla Perla. Potrzebuję więcej informacji, aby wiedzieć na pewno. Jako test zrobiłem to i możesz zrobić to samo, aby zobaczyć, czy uzyskasz ten sam wynik:źródło
$0
jestbash
wywoływany z linii poleceń bash (co robi kontroler). Możesz jednak po prostu kodowaćplayers/StudiousSylwester/foo.txt
.ikarus
i dodałem swoje przemyślenia$0
do Studious.Miecznik
Potrzebujesz ostrego kija. Jeśli masz ostry kij, szturchnij. Nie odczuwam bólu.
Zapisz jako
swordsmith.f90
i skompilowaćgfortran -o swordsmith swordsmith.f90
, uruchomić tak jak każdy normalny wykonywalnego:./swordsmith
.źródło
PacjentBlackmith
Ten bot jest napisany w języku R, użyj go,
Rscript PatientBlacksmith.R
aby go uruchomić.Mierzy ostrość drążka przeciwnika: blokuje, gdy jest ostry, w przeciwnym razie poświęć trochę czasu. Kiedy własna ostrość osiągnie 5, szturchaj, aż ostrość zniknie.
źródło
Reguły więzienne, Haskell
Jaskiniowiec uważa, że jaskiniowiec i inny jaskiniowiec powinni rozmawiać, dzielić kij. Ale, hej ho, jeśli trzeba walczyć, walcz z więziennymi zasadami. Znajdź bossa i zaatakuj.
ViceLeader Alpha Caveman teraz; z którym jaskiniowiec musi walczyć. Inni jaskiniowcy walczą później. Jeśli mój jaskiniowiec przegra, nie martw się; i tak jest owłosiony.
Napisane w Haskell (przejdź do programowania funkcjonalnego!), Więc zapisz jako prisonrules.hs , a następnie skompiluj z:
I działaj jako:
źródło
Nazywam go JavaMan
Uwaga: Nie zamierzam grać w golfa kodowego ... ale jeśli jesteś golfistą, a spacje / dodatkowe linie powodują krwawienie oczu .. możesz to zmienić
źródło
Głębokie myśli, C.
Kod jaskiniowca. Jaskiniowiec myśli. Jaskiniowiec zrobić.
Ja robię testy. Więcej myśli lepiej.
źródło
Nigel
Nigel jest cierpliwym, defensywnym starym jaskiniowcem, który wolałby być taktyczny niż walczyć w ataku.
To skrypt PHP, zadzwoń z
php nigel.php
źródło
Aichmophobic - Lua
Czasami cię szturcha, ale tylko do momentu, gdy jakiś kij stanie się zbyt ostry. Kiedy to nastąpi, wpadnie w panikę i zwinie się w pozycję embrionalną.
Uruchom z:
lua aichmophobic.lua
źródło
Bob Caves
Bob Caves jest jednym z najmądrzejszych facetów w jego jaskini. Nauczył się liczyć jedną ręką (druga zajmuje się trzymaniem kija). Znał Olimpiadę Epoki Kamienia i chciał wziąć udział.
Jego główną strategią jest blokowanie i wyostrzanie kija, aż będzie miał fajny, ostry patyk lub inny jaskiniowiec też będzie ostry. W tym przypadku Bob Caves próbuje go szturchnąć!
Kompiluj
javac BobCaves.java
i uruchamiaj zjava BobCaves
Edycja: Bob liczy się teraz, gdy jest jakiś blok! (dzięki Mikey Mouse ). Ostrzy też kij, gdy drugi kij jaskiniowca jest tępy.
Edycja 2: Ulepszona metoda liczenia (ponownie dzięki Mikey).
Edycja 3: Uczynienie Boba nieco bardziej agresywnym.
źródło
Gruntt
Gruntt jest defensywny. Gruntt analizuje inne ruchy jaskiniowców, aby wiedzieć, jak je szturchać. Potem szturcha je prosto w oko. Gruntt nie jest miłym jaskiniowcem.
Kompiluj
javac Gruntt.java
i uruchamiaj zjava Gruntt
źródło
ArrayOutOfBoundsException
w pierwszej turze, a czasami generuje wiele akcji w innych turach.Czy to ptak? Czy to samolot? To RegExMan!
Próbuje analizować twoje super nudne sekwencje za pomocą swojej wyjątkowej mocy RegEx!
Napisane w Pythonie 2.7, uruchamiane z
python RegExMan.py [history]
źródło
Sycylijski
Ale to takie proste! Wszystko, co muszę zrobić, to boskość z tego, co wiem o innym jaskiniowcu: czy to taki jaskiniowiec, który blokuje, wyostrza lub szturcha? Teraz sprytny jaskiniowiec szturchał lub blokował, ponieważ wiedziałby, że tylko wielki głupiec wyostrzy się i wystawi na atak. Nie jestem wielkim głupcem, więc wyraźnie nie mogę wyostrzyć. Ale inny jaskiniowiec musi wiedzieć, że nie jestem wielkim głupcem i liczyłbym na to, więc wyraźnie nie mogę szturchać ani blokować!
Biegnij z:
Kod:
źródło
bash-magnon
Bash-magnony były solidnie zbudowane i potężne. Ciało było ogólnie ciężkie i solidne z silną muskulaturą. Czoło było raczej proste, a nie ukośne, jak u neandertalczyków, z tylko niewielkimi brwiami. Twarz była niska i szeroka. Podbródek był wydatny. Pojemność mózgu wynosiła około 1600 centymetrów sześciennych (98 cu in), więcej niż średnia dla współczesnych ludzi. Jednak ostatnie badania sugerują, że fizyczne wymiary tak zwanego „Bash-Magnon” nie różnią się wystarczająco od współczesnych ludzi, aby uzasadnić odrębne oznaczenie.
Mam mózg, pamiętam.
Jest to plik wykonywalny
./bash-magnon.sh
źródło
PokeBackBot
Po prostu zaadaptowany z PokeBot:
Uruchom z
ruby pokebackbot.rb
.Wykorzystuje następną najprostszą strategię i blokuje „cierpliwie” przez jedną rundę przed atakiem.
źródło
SPS
(co wydaje się rozsądne), ale jak dotąd PokeBot był jedynym w okolicy.Mistrz miecza
Napisane w Python 3.4 (współpracuje z Python 3.x)
Próbuje zdobyć miecz tak szybko, jak to możliwe, ale atakuje, jeśli ma szansę go trafić (ostrość> 0), a wróg może go zranić (ostrość wroga> 0).
Blokuje tylko wtedy, gdy nie ma ostrości, a wróg może atakować.
Zacząć od:
(zakładając, że zapiszesz jako
swordmaster.py
)Szybki i brzydki kod:
(Ustaw,
dg
abyTrue
włączyć wiadomości debugowania)źródło
S
,P
,S
,P
...FoolMeOnce.py
Zachowaj ruchy każdego gracza na pierwszy pojedynek, a następnie powtórz dokładnie te same ruchy. Jeśli algorytm wroga nie jest przypadkowy, możemy przewidzieć ten sam wynik i uderzyć tylko wtedy, gdy wiemy, że wygramy.
Napisane w Pythonie 3, więc najprawdopodobniej będziesz musiał użyć python3 FoolMeOnce.py W pierwszej rundzie nie jestem pewien, czy otrzymamy pusty ciąg, czy tylko przecinek, więc mogą być potrzebne poprawki.
źródło