Witaj, dzielny golfista! Dziś staniesz w środku wielkiej bitwy między goblinem a elfem!
goblin attacks elf!
elf dodges!
elf attacks goblin!
elf hits goblin for 13 damage!
goblin has 37 health left.
goblin attacks elf!
goblin hits elf for 1 damage!
elf has 49 health left.
elf attacks goblin!
elf hits goblin for 19 damage!
goblin has 18 health left.
goblin attacks elf!
goblin hits elf for 26 damage!
elf has 23 health left.
elf attacks goblin!
elf hits goblin for 20 damage!
goblin has been slain!
Wyzwanie
Twoim wyzwaniem jest symulacja bitwy, takiej jak powyższa. Otrzymasz dane wejściowe w tym formularzu:
creatureName health strength defense accuracy agility
Na przykład bitwa między goblinem a elfem byłaby następująca:
goblin 50 40 35 3 2 elf 50 35 30 4 5
Pierwsze i drugie stworzenie będzie naprzemiennie atakowało.
- Drukuj „creatureName atakuje otherCreatureName!”
- Sprawdź, czy stwór unika. Stworzenie uniknie ataku, jeśli (jego czas zręczności rand () podzielony przez 2) jest większy niż (razy celność atakującego rand ()).
- Jeśli stwór uchyli się, wypisz „creatureName unika!”
- W przeciwnym razie obliczyć zadane obrażenia, odejmując (razy siła atakującego rand ()) i (czas obrony obrońcy rand () podzielony przez 2). Minimalne obrażenia to 1. Wydrukuj „creatureName uderza otherCreatureName dla (x) obrażeń!” Następnie wydrukuj „creatureName ma (x) zdrowia.” chyba że zdrowie stworzenia wynosi 0 lub mniej, w takim przypadku ...
- Jeśli zdrowie stwora wynosi 0 lub mniej, wydrukuj „creatureName zostało zabite!” i zakończ program.
Zasady
- Najkrótszy kod wygrywa.
- Nie drukuj dosłownie „creatureName”, lecz zamień go na nazwę stworzenia. Nie drukuj „(x) obrażeń” lub „(x) zdrowia;” zastąp je rzeczywistą kwotą. (Muszę to określić, ponieważ niektórzy ludzie są bardzo kreatywni w naginaniu reguł.: P)
code-golf
simulation
Klamka
źródło
źródło
goblin 50 40 18 3 2 elf 50 35 15 4 5
?Odpowiedzi:
APL (
249244242)Tym razem styl proceduralny, więc (przynajmniej w Dyalogu) musisz wkleić to do okna edytora. Nazwałem go
G
(pierwszy wiersz to nazwa, załączyłem go, ponieważ tak pokazuje się w oknie edytora, więc prawdopodobnie należy go policzyć).(edytuj: używane numeryczne GOTO zamiast etykiet linii. Okazuje się, że (przynajmniej w Dyalogu) wszystko, co
X:
robi etykieta , jest ustawioneX
na numer linii, więc równie dobrze można użyć liczb bezpośrednio.)źródło
Perl, 254 + 1
Uruchom z
perl -nM5.010
(lubperl -nE '<code>'
). Za meta , to-n
liczy się jako jeden dodatkowy przełącznik charakteru. Żadnych fantazyjnych sztuczek golfowych w tym kodzie, z wyjątkiem użycia$=
jako zmiennej obrażeń do uratowaniaint
.Edycja: Mam nadzieję, że obliczanie obrażeń jest teraz prawidłowe.
źródło
CoffeeScript
454432Przekaż ciąg znaków,
b
aby uzyskać wyniki. Pomyślałem, że fajniej byłoby mieć animowaną grafikę, więc przygotowałem demo. Wystarczy zmienić pole wprowadzania, aby zmienić statystyki i nazwy. Zdjęcia z jpg.to, który jest nieoficjalnym API Google-images.Super Action Demo
Zalecane dane wejściowe (zaproponuj własne):
źródło
voldemort 9999
haha: D10e42
, ale twoja przeglądarka może się zawiesić ...Ruby,
292264Mój pierwszy wpis do golfa; jak ta definicja metody analizuje jest poza mną :)
Czy można odczytać dane wejściowe z parametrów wiersza polecenia (np.
ruby battle.rb goblin 50 40 35 3 2 elf 50 35 30 4 5
)?Ideone run
źródło
JavaScript;
347341333Jak zawsze, zacznę od własnego rozwiązania:
EDYCJA: najwyraźniej przypisywanie
console.log
do zmiennej przerywa w niektórych przeglądarkach, więc oto ten sam kod z deklaracją funkcji:Myślałem o zmianie na
alert
, ale byłoby to po prostu złe: Pźródło
Uncaught TypeError: Illegal invocation
powodua=console.log
. czy nie musiałbyś powiązaćconsole
obiektu jako kontekstu, np.a=console.log.bind(console)
?alert
, ale byłoby to bardzo denerwujące: PPython: 393
Ścisnąłem trochę mocniej, gdybym miał 3, prawdopodobnie mógłbym to zrobić,
print = p
aby skrócić go o kilka więcej, ale nie sądzę, żeby zostało w tym wiele.393:
399:
Myślę, że ludzie pomijają to, że jeśli masz dobry stan w pętli, nie musisz sprawdzać, czy cel jest poniżej zdrowia.
źródło
JavaScript:
340306339:
306:
Przykładowe dane wyjściowe:
Edytuj notatki: znak +1, brakowało mi „!” po „uchyla się”
Oh i zapomniałem faktycznie wstawić wyjście po „Przykładowym wyjściu”
Zmieniłem nagłówek na JavaScript, jak sugeruje @tbodt
źródło
R: 387 znaków
Lub w pełni rozwinięty, z wcięciami i komentarzami, aby wszystko było bardziej zrozumiałe:
źródło
C # -
464453 znakówPo kilku nocach nie wydaje mi się, aby zbliżyć się do innych wpisów (co nie jest zaskakujące dla C #). Podejrzewam, że wciąż jest miejsce na ulepszenia. Żadnych szczególnie sprytnych sztuczek.
Skomentowano:
źródło
Python 3, 314
źródło