4-osobowa rozgrywka
Opis
Jakoś znalazłeś się w czterokierunkowej walce. Załadowana broń spoczywa w twoich rękach, a niektóre granaty są zaczepione o pasek.
Celem jest zdobycie jak największego zdrowia po zakończeniu pojedynku. Występuje koniec, gdy co najwyżej jedna osoba ma pozytywny poziom zdrowia.
Każdy gracz ma 5
zdrowie i umiera, gdy jego zdrowie spadnie do / poniżej 0
. Tura, w której umiera gracz, jest ostatnią turą, w której gracz może otrzymać obrażenia.
Jeśli na końcu meczu jest gracz na żywo, ten gracz wygrywa. W przeciwnym razie wygrywa gracz o najmniej ujemnym zdrowiu.
działania
Strzelaj : zastrzel kogoś.
2
obrażenia, jeśli zastrzelisz żywego wroga0
obrażenia, jeśli strzelasz do martwego wrogahealth_at_start_of_turn+2
obrażenia, jeśli zastrzelisz siebie. (Zauważ, że to pozostawi Cię w stanie NAJBARDZIEJ-2
zdrowia).- Jeśli jeden wróg strzela do ciebie w tej samej turze, w której strzelasz, zakończysz dystans z -4 pkt. Zdrowia (nadal otrzymujesz obrażenia od innych graczy w kolejce, w której się zabijesz).
- Twoje działanie w następnej turze zostanie zignorowane (i będzie to miało miejsce
Nothing
).
Unik : Postaraj się uniknąć strzału jednego przeciwnika.
Przygotuj : Odczep granat i przygotuj się do jego rzucenia.
- Masz tylko trzy tury, aby go rzucić, zanim zostaniesz wysadzony w powietrze (
6
obrażenia zadane sobie,3
obrażenia wszystkich żywych wrogów) - Umieranie z nie rzuconym granatem jest równoznaczne z nie rzucaniem granatu przez trzy tury.
- Masz tylko trzy tury, aby go rzucić, zanim zostaniesz wysadzony w powietrze (
Rzuć : rzuć granatem w stronę kogoś i miej nadzieję na najlepsze.
- Cel otrzymuje
8
obrażenia, jeśli żyje - Wszyscy inni (łącznie z tobą) otrzymują
3
obrażenia, jeśli żyją
- Cel otrzymuje
Nic : stój bezczynnie przez kolej i obserwuj, jak wszyscy umierają.
Wejście
Twój program otrzyma następujące informacje:
- Zdrowie każdego gracza
Lista działań podjętych przez tego gracza od początku pojedynku Poniżej znajduje się format informacji przekazywanych na gracza:
[Health],[Action 1],[Action 2],[Action 3],...
Działania będą podawane w formacie określonym w sekcji Wyjście .
Otrzymasz 4 takie ciągi znaków, oddzielone spacją i przekazane jako pojedynczy argument. Kolejność tych ciągów jest następująca:
[Player Info] [Opponent 1 Info] [Opponent 2 Info] [Opponent 3 Info]
Ciągi znaków są przekazywane jako drugi argument. Pierwszy argument zawiera liczbę całkowitą, która jednoznacznie identyfikuje wprowadzany odstęp. Gwarantowane odległości między tym samym zestawem graczy nie są równoczesne. Jednak wiele standoffs będzie występować w tym samym czasie.
Na przykład:
$./Player.bash 5 "3,S2,N 5,P,N 3,S0,N -2,S3,N"
Obecnie gracz i drugi przeciwnik mają 3 zdrowie, pierwszy przeciwnik ma 5 zdrowia, a trzeci przeciwnik -2 zdrowie i nie żyje.
W pierwszej turze:
- Gracz 1 zastrzelił wroga 2
- Wróg 1 przygotował granat
- Gracz Enemy 2 strzał
- Wróg 3 zastrzelił się
W drugiej turze:
- Wszyscy gracze nic nie zrobili. (Gracz i wróg 2 nie mogą nic zrobić, ponieważ strzelili w poprzedniej turze. Wróg 3 nie żyje: zrobi to
Nothing
do końca dystansu.)
Drugi argument na początku jest patowa: 5 5 5 5
.
Wynik
Polecenie powinno zostać wypisane w poniższym formacie. Niepoprawne wyjście jest interpretowane jako „Nic”. Polecenie wymagające docelowego powinno nastąpić całkowitą ( 0-3
z 0
reprezentujący odtwarzacz i 1-3
stanowiących wrogów 1-3).
S[target]
: Strzela [cel].D[target]
: Próbuje uniknąć [cel].P
: Przygotuj granat.T[target]
: Rzuć granat w [cel].N
: Nic nie robić.
Komenda że potrzebuje cel, ale jest podawany cel nie między 0
i 3
czy nie karmiono cel zakładany w całości będzie kierować 0
(gracza).
Punktacja
Na koniec każdego pojedynku gracze otrzymują wynik obliczony według następującego wzoru:
35 + health at end of standoff
W przypadku, gdy gracz kończy impas z negatywnym dla zdrowia, to będzie otrzymać wynik poniżej 35 . Następujące punkty są również nagradzane jako bonus:
- Najwięcej zdrowia: +4 punkty
- Drugie pod względem zdrowia: +2 punkty
- Trzecie miejsce pod względem zdrowia: +1 punkt.
W przypadku remisu przyznawana jest niższa premia (jeśli dwie osoby wiążą się z największą ilością zdrowia, obie mają przyznane +2; jeśli są 3 osoby z największą ilością zdrowia, +1, a jeśli wszyscy kończą się równo, +0).
Ostateczny wynik ustala się, obliczając średnią wszystkich indywidualnych wyników.
Zasady / Szczegóły
- Kolejność wydarzeń w ramach tury jest następująca:
- Wszyscy gracze wykonują swoje działania.
- Gracze, którzy mają 0 lub mniej zdrowia, giną.
- Nie rzucone granaty, które muszą eksplodować, wybuchną (gracze, którzy właśnie zginęli, nadal są ranni, ponieważ to jest kolej na ich śmierć).
- Brak współpracy między wpisami.
- Trzy * odstępy wystąpią między każdym zestawem 4 graczy. (Kolejność graczy może się różnić przy każdym pojedynku).
- Wpisy zajmujące nadmierną ilość miejsca na dysku zostaną zdyskwalifikowane.
- Czytanie lub modyfikowanie plików innych niż Twój wpis zdyskwalifikuje Twój wpis.
- Ciężarówka, prowadzona przez pijaka, przejedzie po wszystkich żyjących graczach po
50th
turze, jeśli nie dojdzie jeszcze do końca tej50th
tury.- Ta ciężarówka zadaje 20 obrażeń wszystkim żyjącym graczom.
- Występy zdarzają się szybko. Programy są odcinane po 1 sekundzie.
- Twój program będzie wywoływany co turę, nawet po twojej śmierci.
- Możesz odczytywać lub zapisywać pliki tylko w swoim katalogu (jeśli twój wpis nazywa się JohnDoe, możesz zapisywać pliki w katalogu odtwarzacze / JohnDoe /); jednak NIE będzie to bieżący katalog podczas działania skryptu.
- Awantury odbędą się na komputerze z systemem Arch Linux (wydanie 2014.08.01).
Kontroler jest dostępny na GitHub .
W swoim poście umieść następujące informacje:
- Nazwa twojego bota
- Polecenie powłoki do uruchomienia bota (np.
java Doe.java
) Dane wejściowe będą przekazywane przez wiersz polecenia jako pojedynczy argument (java Doe.java 5 "-2,S0 -2,S1 -2,S2 5,N"
) - Kod twojego bota
- Jak należy skompilować bota (jeśli dotyczy)
- Język (i wersja, jeśli dotyczy, szczególnie dla Pythona)
* Kontroler trwa zbyt długo przez sześć.
Tablica wyników
Observer 43.280570409982
MuhammadAli 43.134861217214
Osama 43.031983702572
LateBoomer 42.560275019099
SimpleShooter 42.412885154062
LessSimpleShooter 42.3772
Neo 42.3738
Scared 42.3678
Richochet 42.3263
Equivocator 42.2833
TwentyFourthsAndAHalfCentury 42.2640
Darwin 42.1584
HanSolo 42.1025
Coward 42.0458
ManipulativeBastard 41.8948
Sadist 41.7232
Aggressor 41.7058
CourageTheDog 41.5629
Grenadier 40.9889
Bomberman 40.8840
Spock 40.8713
Sniper 40.6346
DONTNUKEMEBRO 39.8151
PriorityTargets 39.6126
Hippolyta 39.2480
EmoCowboy 39.2069
Zaenille 39.1971
AntiGrenadier 39.1919
PoliticallyCorrectGunman 39.1689
InputAnalyzer 39.1517
Rule0Bot 39.1000
BiasedOne 39.0664
Pacifist 39.0481
StraightShooter 39.0292
Ninja 38.7801
MAD 38.2543
Monkey 37.7089
Label1Goto1 36.2131
Generated: 2014/08/22 03:56:13.470264860 UTC
Logi: na GitHub
źródło
Odpowiedzi:
Obserwator
Ten facet analizuje swoich wrogów. Celem jest przetrwanie, dopóki nie pozostanie tylko jeden „agresywny” przeciwnik, a następnie zabicie go w epickiej walce.
Kompiluj:
javac Observer.java
Uruchom:java Observer arg0 arg1
źródło
!player.contains("S" + id)
czy jest to warunek konieczny w funkcji „isAggressive”? Samobójczy gracz i tak będzie martwyGrenadier
Pistolety są przereklamowane. A prawdziwy impas Szkota idzie tak:
Chociaż wydaje się to trywialne, prawdopodobnie nie jest to okropna strategia. Ponieważ oba pistolety i granaty mają cykl dwóch tur, jest to zdecydowanie bardziej skuteczny 1 sposób zadawania obrażeń.
Oczywiście, jeśli wszyscy trzej przeciwnicy zastrzelą mnie w pierwszej rundzie, to nie będzie dobrze. Ale niewiele więcej też by było.
Skompiluj / uruchom w standardowy sposób Java:
1 Bezsensowny przypis
źródło
Zasada Asimowa Numer 0 Bot - Python
Całkiem prosto zaatakuje pierwszego gracza, którego widzi, trzymając granat, aby chronić większość ludzi. Jeśli nikt nie stanowi zagrożenia dla większości ludzi, nic nie zrobi.
Uruchom to jak:
źródło
Han Solo - Python
Han strzelił pierwszy. W takim przypadku najpierw strzela, wybierając najbliższy żywy cel.
Uruchom to jak:
Uwaga : jest to pierwsza rzecz, jaką napisałem w Pythonie, więc jeśli zauważysz jakieś złe praktyki specyficzne dla Pythona, daj mi znać.
źródło
is_alive
EmoCowboy
Po co czekać na śmierć? Po prostu zabij się teraz. Mam nadzieję, że reszta głupców wysadzi się nawzajem do mniej niż -2.
Wynik zwykle wynosi -2. Czasami -4, jeśli ludzie decydują się mnie zestrzelić. Rzadko więcej, co oznacza, że powinno to pokonać kilka z bieżących zgłoszeń.
Pyton
EDYCJA: To nie jest żart, i generalnie dlatego te emo są odrzucane. To uzasadniona strategia. Bycie żywym jest śmiertelne!
źródło
Pacyfista
To prawdziwy, spuchnięty facet, właśnie złapał niewłaściwy tłum.
Uruchom jako
runghc pacifist.hs
, ale możesz chcieć skompilować go z opcją -O3, jeśli wydajność stanowi problem.źródło
-O3
robi dziwną różnicę.runghc
. W rzeczywistości jest 10 razy wolniejszy na moim Linux-ie.Monkey - Python (pierwszy w historii!)
Monkey see, monkey do. Powtórzy dokładnie ostatnią akcję wykonaną przez losowego gracza.
Można uruchomić w następujący sposób: „python monkey.py args” Nie są wymagane dodatkowe kroki.
źródło
-1
bezpośrednio.argv[2]
przejrzeć historię graczy.Simple Shooter - Perl (naprawiony błąd)
Ten bot strzela do przeciwnika o największym zdrowiu. To bardzo prosta strategia, ale myślę, że ma przyzwoitą szansę na dobre wyniki.
Oto jak uruchomić go za pomocą przykładowych danych wejściowych:
źródło
Spock w Pythonie 3.x
Ten kod jest raczej eksperymentem (stąd jego nazwa pochodzi od Spocka, ponieważ ... jest wulkanem i są całkiem dobrzy w tego typu sprawach), ale mimo to budowanie go było fajne. Głównym powodem tego całego kodu są założenia, które zrobiłby dobry, logiczny byt, jak Spock, gdyby przestrzegał zasad gry:
Celem tej gry jest zmaksymalizowanie wyniku, który byłby wykonywany przez wszystkich stojących w bezruchu, co nie jest możliwe z powodu ciężarówki.
Sposób, w jaki Spock gra w pozostałej części gry, można podsumować jego słynnym cytatem: „ Potrzeby wielu przeważają nad potrzebami niewielu ”. Innymi słowy, Spock musi zadbać o to, aby doznał jak najmniejszej szkody, zabijając tych, którzy to robią. Jak on to robi:
Powodem jest to, że atakując najsłabszych graczy, eliminujemy źródła obrażeń. Granaty leżą u podstaw tego, że niezależnie od tego wybuchają i zadają mniej obrażeń, jeśli nie zostaną rzucone.
I tak działa ten bot. Nie testowałem dokładnie pod kątem błędów wejściowych (więc proszę ostrzegaj mnie, jeśli coś pójdzie nie tak), ale jestem pewien, że udało mi się rozwiązać większość problemów. Oparłem niewielką część kodu z bota HanSolo, ale w większości jest to splątany bałagan kodu. Cieszyć się.
Uruchom to jak:
2014-08-12 - Drobne poprawki błędów w wykrywaniu granatów
14.08.2014 - Drobne poprawki błędów w grze końcowej, dzięki isaacgowi za wskazanie tego wcześniej
źródło
Traceback (most recent call last):
File "./players/Spock/Spock.py", line 87, in <module>: Endgame(current_turn)
File "./players/Spock/Spock.py", line 79, in Endgame: if IsTarget(player, target_health):
File "./players/Spock/Spock.py", line 4, in IsTarget: return int(player[1].split(",")[0]) < target_health
TypeError: unorderable types: int() < str()
player[1][1]
powinno byćint(player[1][1])
.Politycznie poprawny bandyta
Bardzo politycznie poprawne, ponieważ niczego nie dyskryminuje. Dlatego nie jest zbyt mądry.
To ... nie ma znaczenia, jakie argumenty zostaną mu przekazane.
python politicallycorrectgunman.py
źródło
random.choice(array)
?Straight Shooter
Jest wyszkoloną częścią kawalerii i mówi w wielu językach, ale mrugając, Straight Shooter widzi tylko jednego wroga przed sobą. Będąc koniem, nie rozumie, że musisz czekać między strzałami.
Perl, Python 2/3, Ruby: ten koń naprawdę jest poligonem.
Aby uzyskać odpowiedź, która zawiera nieco więcej przemyślenia (i paradygmatu funkcjonalnego), zobacz Dwudziesty Czwarty i Pół wieku .
źródło
Przeciw grenadierowi
Granaty są złe. Bardzo źle. Więc jeśli ktoś je przygotowuje, najlepiej jest je zastrzelić. W przeciwnym razie po prostu spędzimy wolny czas.
źródło
Rykoszet - Perl
Proste strategie wydają się sprawdzać w tym wyzwaniu, więc oto kolejne. Strzela losowego żywego gracza. Ma dodatkową funkcję popełnienia samobójstwa na końcu, aby uniknąć ciężarówki.
Uruchom tak:
źródło
Agresor
Ciągnie w pierwszej rundzie, rzuca przeciwnikowi o najwyższym zdrowiu w drugiej rundzie, następnie strzela w przeciwnika o najwyższym zdrowiu.
Uruchom to jak ./agg ID „5 5 5 5”.
źródło
Ninja
Po prostu unika się losowo, próbując uniknąć trafienia.
Uruchom jako
Argumenty są niepotrzebne, ale można je dodać bez problemu.
źródło
Nazwa : PriorityTargets
Polecenie powłoki : ruby PriorityTargets.rb 5 [game_state]
Język : Ruby V2.1.2
Opis : PriorityTargets próbuje znaleźć popularne style gry. Następnie decyduje, na podstawie tych stylów gry, kogo chce zaatakować i jakiej broni użyć.
Uwaga : przesyłanie pierwszego kodu do gry w golfa! Znacznie większy niż inne zgłoszenia, ponieważ trochę oszalałem.
źródło
Tchórz - Perl
Działa bardzo tchórzliwie. Kiedy czuje się zdrowy, wybiera wroga, który tak nie czuje, i strzela do niego. Punkty bonusowe dla tych wrogów, którzy strzelali w ostatniej turze (ponieważ są znani z tego, że wykonują
Nothing
tę turę i dlatego są absolutnie bezbronni). Kiedy nie czuje się tak dobrze, biegnie po kryjówkę, by ocalić swoją skórę, od czasu do czasu zastrzeliwując kogoś.Całkiem standardowy kod Perla; zapisz go w jakimś pliku, a następnie uruchom
perl file argument argument [...]
. Sprawdziłem składnię i było OK, więc mam nadzieję, że nie będzie z tym żadnych problemów.E: wyeliminowano potencjał dzielenia przez błąd 0.
źródło
Bomberman
Bot napisany w R, wiersz poleceń powinien brzmieć:
Rscript Bomberman.R arg0 arg1
po rozpoczęciu pisania tego bota zrozumiałem, że Geobits już zrobił grenadiera, ale myślę, że mój jest znacznie inny, ponieważ sprawdza, czy jego zdrowie jest wyższe niż 3 przed przygotowaniem granatu, rzuca go w ostatni strzelec pierwszy, a najzdrowszy drugi, a jeśli jego zdrowie spadnie poniżej 3, uniknie niebezpiecznego gracza (ani martwego, ani strzelającego w ostatniej rundzie) lub zastrzeli jednego z pozostałych graczy.
Edytować
Wygląda na to, że jest jakiś problem z komunikacją między tym botem a twoim kontrolerem, ponieważ wszystkie logi, które szukałem, pokazały, że mój bot tylko generuje dane wyjściowe
N
. Oto ten sam bot, ale przepisany w Pythonie, w nadziei, że jeśli ten również będzie miał problem z komunikacją, ktoś to zobaczy.Do połączenia z
python Bomberman.py arg0 arg1
.źródło
Neo
Unikaj żyjącego gracza, który nie strzelił w ostatniej turze. Jeśli wszyscy żywi zastrzelili w ostatniej turze, zastrzel losowego żyjącego gracza. Samobójstwo, gdy zobaczysz reflektory.
Nie oczekuję wiele od tego faceta w stosunku do uchwytów granatów, ale w stosunku do strzelców może działać całkiem dobrze. Zobaczymy.
źródło
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
at java.lang.String.charAt(String.java:658)
at Neo.main(Neo.java:17)
Dwudziesty czwarty i pół wieku
Ten wpis w Pythonie uchyla się i unika, dopóki nie pozostaną tylko pasywni gracze lub pojedynczy agresywny gracz, a następnie zacznie strzelać. Ma nadzieję, że przechodzący Marsjanin zajmie się grenadierami i pijanymi kierowcami ciężarówek.
O ile nie zrobiłem czegoś złego, jest to funkcjonalny Python. Z pewnością nie wygląda to na Python, który napisałem, zanim Haskell i przyjaciele mnie odnaleźli, i nie sądzę, żebym coś zmutował. Ale jeśli wiesz lepiej, proszę, powiedz mi.
Uruchom jako:
źródło
Przerażony
To zgłoszenie boi się wszystkich. Ale szczególnie boi się niektórych osób. Więc zastanawia się, kto jest najbardziej niebezpieczny, i strzela do nich. Jeśli wielu wrogów wygląda najbardziej niebezpiecznie, strzela do losowego.
To jest python (2 lub 3, taki sam wynik w obu przypadkach.) Zapisz jako
scared.py
, uruchom zpython3 scared.py
źródło
Manipulacyjny drań - Python
Przygotowuje i rzuca granaty. Jeśli myśli, że nie ma czasu lub jest zbyt mało wrogów, strzela. Jeśli jest sam, próbuje przechytrzyć drugiego faceta.
źródło
Osama
Próbowałem tego przez około dzień, teraz nadszedł czas, aby opublikować i zobaczyć, jak w międzyczasie ewoluowali inni.
Skompiluj
ghc -O2 osama.hs
, a następnie uruchom za pomocą./players/Osama/osama
.źródło
Sniper - Lua
W pierwszej turze zastrzelą losową osobę, a następnie zastrzelą wszystkich graczy, których mogą zabić (2 lub 1 zdrowie). Jeśli żadna z nich nie zadziała, spróbuje zastrzelić gracza, który postrzelił go jako ostatni, w przeciwnym razie zastrzeli losowego gracza. Biegnij z
lua Sniper.lua
źródło
lua Sniper.lua 3 "5,S1 3,D3 5,N 5,P"
. Może być konieczne sprawdzenie swojegoarg
indeksu.lua: ./players/Sniper/Sniper.lua:38: attempt to compare nil with number
./players/Sniper/Sniper.lua:38: in main chunk
[C]: in ?
Darwin
Przetrwanie najsilniejszych oznacza, że najmniej zdrowi muszą umrzeć.
Racjonalne uzasadnienie
Patrząc na zestaw wyników z wtorku (12), wydaje się, że istnieją trzy odrębne grupy: osoby, które przeżyły; skutecznie samobójcze; i gorsze niż bezużyteczne. Ocalali dzielą proste strategie oparte na strzelaniu. Podczas gdy kilka innych botów ( Spock , Tchórz ) będzie atakowało najmniej zdrowego wroga, komplikują również swoje strategie innymi działaniami. Ten nie. Podobnie jak Simple Shooter , ma jasną definicję celu i trzyma się jej bezlitośnie. Ciekawie będzie zobaczyć, gdzie pasuje do wyników.
To jest okrojona, nieco zmodyfikowana wersja mojego wcześniejszego dwudziestego czwartego i półwiecza , i podziela jej przywołanie:
źródło
Zaenille - C
Priorytety:
Kompiluj z
gcc <filename.c>
.Uruchom z
./a.out <parameters>
.źródło
InputAnalyzer
Kluczem do takiej gry jest analiza, w jaki sposób grają wszyscy przeciwnicy, aby odpowiednio zareagować. Mój bot zrobi to samo, używając skomplikowanych algorytmów, które spowodują użycie moich przeciwników, a moja przewaga da decydujące zwycięstwo!
Edycja: ja teraz
Skompiluj bota za pomocą następującego polecenia (musisz mieć ghc)
Polecenie powłoki do uruchomienia powinno być następujące
Uwaga: Testowałem na Windowsie, więc jeśli masz problemy z kompilacją / uruchomieniem, powiedz to w komentarzu, a ja postaram się znaleźć właściwe polecenie.
źródło
Pies o imieniu Odwaga
Po pierwsze - strzelaj do złych w zasięgu wzroku. Następnie unikaj losowo, aż ktoś przygotuje granat. Potem, kiedy wszyscy do niego strzelą, przygotuj mój granat i rzuć go na każdego. Ale człowiek rozpraszający uwagę.
Edycja: Teraz zaimplementowane tak, jak myślałem, że powinno być. Wcześniej wynik wynosił: 35,9
Zaktualizowano: Czasami strzela zamiast uniku
couragethedog.py
Uruchom jako
źródło
MAD - Java
Bot MAD wierzy w siłę zastraszania poprzez wzajemnie gwarantowane zniszczenie . Ilekroć nie ma gotowego granatu, przygotowuje go. Następnie unika możliwych strzelców, dopóki albo ktoś nie zada mu obrażeń, albo jego granat zaraz wybuchnie. Od momentu zaatakowania rzuca granatami na każdego, kto do tej pory próbował zadać mu więcej obrażeń. Jeśli jego granat ma wybuchnąć, bombarduje wiodącego gracza. MAD nie jest przeciwny strzelaniu do kogoś, kiedy nie ma się czego uchylić ani bezpośrednio rzucić granatem, a jego granat jest nadal dobry na co najmniej jedną turę.
Ten bot prawdopodobnie będzie działał słabo, ale i tak spodobał mi się ten pomysł. MAD prawdopodobnie lepiej poradziłby sobie na polu z inteligentnymi botami, które rejestrują zachowanie innych botów, a więcej dopasowań działa między 4 botami.
źródło
java MAD 43 "5 5 5 5"
wydaje się nic nie dawać.Sadysta
pyton
Jego priorytetem jest spowodowanie bólu i zranienia granatów. Ciągnie pierwszą turę. Lubi zabijać, kiedy nie możesz zaatakować. Bawi się SSS (pojedyncze proste strzelanki), unikając i ciągnąc, aby przedłużyć dominację. On nawet decyduje się zaatakować tych, którzy nic nikomu nie zrobili.
Ponieważ używa granatów, on (i wszyscy inni) zwykle nie przeżyją drugiej lub trzeciej rundy. Jeśli zostanie sparowany z innym granatem, wszyscy zginą. Oznacza to, że nie spodziewam się wygranej, ale napisałem to, aby nauczyć się pytona (nigdy wcześniej go nie używałem i próbuję uzyskać wprowadzenie do wielu nowych języków). Istnieje kilka innych „pull first”, więc jeśli uważasz, że jest to zbyt symetryczne, daj mi znać. Inni nie wydają się jednak gotowi ciągnąć, a następnie unikać.
źródło
raw_input
to zadziałało.sys.argv[2]
wydaje się być konsensusem dla wpisów w Pythonie. Możesz również znaleźć zastosowanie dlapop
, które pozwolą ci skondensowaćthisisme=player[0];player.remove(player[0])
się w prostszethisisme=player.pop(0)
.raw_input
pobiera zSTDIN
, ale historia odtwarzacza jest przekazywana do twojego programu jako argument wiersza poleceń, dlatego potrzebujeszsys.argv
. Dla celów testowych możesz ustawić go ręcznie za pomocąsys.argv = ["sadist.py", "0", "5 5 5 5"]
. Powinieneś być w stanie zadzwonićplayer=sys.argv[2].split()
. Jeśli importowaniesys
jest naprawdę niemożliwe, w celu przetestowania możesz nawet upuścić kropkę i wywołać tablicęsysargv
. Tak długo, jak wszystko inne działa, a ty wracasz dosys.argv
swojego zgłoszenia, powinno być dobrze.