Willkommen, mutiger Code-Golfer! Heute stehst du inmitten eines großen Kampfes zwischen einem Kobold und einem Elfen!
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!
Die Herausforderung
Ihre Herausforderung besteht darin, einen Kampf wie den oben genannten zu simulieren. Sie erhalten Eingaben in dieser Form:
creatureName health strength defense accuracy agility
Zum Beispiel wäre der Kampf zwischen dem Kobold und dem Elfen:
goblin 50 40 35 3 2 elf 50 35 30 4 5
Die erste und die zweite Kreatur werden abwechselnd angreifen.
- 'CreatureName attackiert otherCreatureName!'
- Überprüfe, ob die Kreatur ausweicht. Die Kreatur weicht einem Angriff aus, wenn (seine Beweglichkeit mal rand () geteilt durch 2) größer ist als (die Genauigkeit des Angreifers mal rand ()).
- Wenn die Kreatur ausweicht, drucke 'creatureName dodges!'
- Andernfalls berechnen Sie den verursachten Schaden durch Subtrahieren von (Stärke des Angreifers mal rand ()) und (Verteidigung des Verteidigers mal rand () geteilt durch 2). Der minimale Schaden beträgt 1. Drucken Sie 'creatureName trifft otherCreatureName für (x) Schaden!' Dann print 'creatureName hat (x) Gesundheit übrig.' es sei denn, die Gesundheit der Kreatur ist 0 oder weniger. In diesem Fall ...
- Wenn die Gesundheit der Kreatur 0 oder weniger ist, drucke 'kreaturname wurde getötet!' und beenden Sie das Programm.
Regeln
- Kürzester Code gewinnt.
- Drucken Sie nicht buchstäblich 'creatureName', sondern ersetzen Sie es durch den Namen der Kreatur. Gib nicht '(x) Schaden' oder '(x) Gesundheit' aus. Ersetzen Sie sie durch die tatsächliche Menge. (Ich muss das spezifizieren, weil einige Leute sehr kreativ sind, wenn es darum geht, die Regeln zu biegen.: P)
code-golf
simulation
Türknauf
quelle
quelle
goblin 50 40 18 3 2 elf 50 35 15 4 5
?Antworten:
APL (
249244242)Diesmal im prozeduralen Stil, also (zumindest in Dyalog) müssen Sie dies in ein Editorfenster einfügen. Ich habe es benannt
G
(die erste Zeile ist der Name, ich habe ihn eingefügt, weil er so im Editorfenster angezeigt wird, also sollte er wahrscheinlich gezählt werden).(edit: verwendet numerische GOTOs anstelle von Zeilenbeschriftungen. Es stellt sich heraus, dass (zumindest in Dyalog) alles, was eine Beschriftung definiert
X:
,X
auf die Zeilennummer gesetzt ist, daher können die Zahlen auch direkt verwendet werden.)quelle
Perl, 254 + 1
Mit
perl -nM5.010
(oderperl -nE '<code>'
) ausführen . Per Meta zählt der-n
Schalter als ein zusätzliches Zeichen. Keine ausgefallenen Golftricks in diesem Code, außer vielleicht die Verwendung$=
als Schadensvariable zum Speichern einesint
.Edit: Hoffentlich ist die Schadensberechnung jetzt korrekt.
quelle
CoffeeScript
454432Übergeben Sie eine Zeichenfolge
b
, um die Ergebnisse zu erhalten. Ich dachte, es würde mehr Spaß machen, eine grafisch animierte Ausgabe zu haben, also habe ich eine Demo zusammengestellt. Ändern Sie einfach das Eingabefeld, um Statistiken und Namen zu ändern. Die Bilder von jpg.to sind die inoffizielle google-images API.Super Action Demo
Empfohlene Eingänge (schlagen Sie Ihre eigenen vor):
quelle
voldemort 9999
haha: D10e42
, aber Ihr Browser kann einfrieren ...Rubin,
292264Mein erster Code Golf Eintrag; Wie diese Methodendefinition analysiert, ist mir ein Rätsel :)
Ist es in Ordnung, die Eingabe von Befehlszeilenparametern (z. B.
ruby battle.rb goblin 50 40 35 3 2 elf 50 35 30 4 5
) zu lesen ?Ideone läuft
quelle
JavaScript;
347341333Wie immer beginne ich mit meiner eigenen Lösung:
BEARBEITEN: Anscheinend wird die Zuweisung
console.log
einer Variablen in einigen Browsern unterbrochen. Daher hier derselbe Code mit einer Funktionsdeklaration:Ich dachte darüber nach
alert
, es zu ändern , aber das wäre einfach böse: Pquelle
Uncaught TypeError: Illegal invocation
wegena=console.log
. Müssten Sie dasconsole
Objekt nicht als Kontext binden , za=console.log.bind(console)
.alert
, aber das wäre sehr ärgerlich: PPython: 393
Ich drückte etwas fester, wenn ich 3 hätte, könnte ich es wahrscheinlich
print = p
um ein paar mehr verkürzen, aber ich glaube nicht, dass in diesem noch viel übrig ist.393
399
Ich denke, die Leute überspringen, dass Sie nicht überprüfen müssen, ob das Ziel unter dem Gesundheitszustand liegt, wenn Sie einen guten Zustand in der Schleife haben.
quelle
JavaScript:
340306339
306
Beispielausgabe:
Anmerkungen bearbeiten: +1 Zeichen, ich habe das "!" after "dodges"
Oh, und ich habe vergessen, eine Ausgabe nach "Sample output" zu setzen.
Der Header wurde in JavaScript geändert, wie @tbodt vorschlägt
quelle
R: 387 Zeichen
Oder ausgereift, mit Einrückungen und Kommentaren, um die Dinge klarer zu machen:
quelle
C # -
464453 ZeichenNach ein paar Nächten kann ich den anderen Einträgen anscheinend nicht einmal mehr nahe kommen (nicht überraschend für C #). Ich vermute immer noch Raum für Verbesserungen. Keine besonders cleveren Tricks.
Kommentiert:
quelle
Python 3, 314
quelle