Im Spiel Stratego ist die Hauptspielmechanik, wenn Sie die Figur eines Gegners mit Ihrer angreifen. Bei dieser Herausforderung besteht Ihre Aufgabe darin, eine dieser Schlachten zu simulieren und zu sagen, wer überlebt.
Technische Daten
Sie erhalten als Eingabe ein Zeichenfolgenpaar, das Strategostücke darstellt. Die Stücke sind eines von "S 1 2 3 4 5 6 7 8 9 10 B"
( S
ist der Spion und B
sind Bomben). Der erste des Paares ist der Angreifer und der zweite der Angreifer.
Hier sind die Regeln zur Bestimmung der Ergebnisse eines Kampfes:
- Die höhere Zahl schlägt die niedrigere Zahl :
["4", "6"] -> ["6"]
. - Wenn beide gleich sind, sterben beide :
["7", "7"] -> []
. - Spione sind unten, darunter sogar
1
:["S", "2"] -> ["2"]
. - Wenn jedoch ein Spion den angreift
10
, gewinnt der Spion :["S", "10"] -> ["S"]
. - Es gelten jedoch weiterhin die normalen Regeln, wenn
10
derjenige angreift :["10", "S"] -> ["10"]
. - Wenn etwas eine Bombe angreift, gewinnt die Bombe :
["5", "B"] -> ["B"]
. - Ein Bergmann (a
3
) kann jedoch eine Bombe entschärfen :["3", "B"] -> ["3"]
. - Eine Bombe wird niemals der Angreifer sein.
- Ein Spotter (a
1
) kann mit dem normalen Mechanismus angreifen, aber er kann auch versuchen, den Rang des anderen Spielers zu "erraten", was mit jeder vernünftigen Notation angegeben werden kann. - Wenn sie richtig raten, stirbt das andere Stück :
["1(5)", "5"] -> ["1"]
. - Wenn sie falsch raten, passiert nichts :
["1(3)", "5"] -> ["1", "5"]
. - Spotter können Bomben erkennen :
["1(B)", "B"] -> ["1"]
.
Dies ist Code-Golf , also gewinnt der kürzeste Code in Bytes !
(Sie können die Beispiele dort oben als Testfälle verwenden, da ich zu faul bin, um sie alle in einer Liste zusammenzufassen.)
code-golf
game
board-game
Maltysen
quelle
quelle
"Victory!"
für sie zu haben, wollte aber die Dinge nicht zu kompliziert machen2
s, und es gab keine1
s in meinem Stratego-Spiel ... (oder werden sie nur zum Zweck der Herausforderung modifiziert?)Antworten:
Haskell, 131 Bytes
Diese Lösung hat die Form einer Infix-Funktion
#
mit TypString -> String -> String
Die Eingabe wird über die beiden Zeichenfolgenargumente akzeptiert. Das Format für die Spotter-Eingabe ist,
1 x
wox
die Vermutung ist. Die Ausgabe wird als Zeichenfolge angegeben. Wenn beide Einheiten überleben, enthält die zurückgegebene Zeichenfolge beide durch ein Leerzeichen getrennt.Meine ursprüngliche Lösung war leider fehlerhaft und der Fix hat mich ein paar Bytes gekostet.
quelle
Python,
180153 BytesDie Funktion verwendet den Angreifer, den Verteidiger und optional die Vermutung des Spotters (wenn der Angreifer der Spotter ist) als Argumente. Es gibt ein Array zurück, das die verbleibenden Live-Teile enthält.
Ungolfed
Demo
https://repl.it/C6Oz/2
quelle
([a,d],[a])[g==d]
->[a,d][:(g!=d)+1]
Javascript ES6,
9886 BytesAkzeptiert 3 Argumente (Angreifer, Verteidiger, Spotter-Vermutung).
Beispielläufe:
quelle
f("1","10") -> ["1","10"]
eher als"10"
.Javascript,
179166160 BytesDiese Funktion benötigt 3 Argumente - das erste ist Angreifer, das zweite wird für Spotter verwendet (ihre Vermutung) und das dritte ist Verteidiger.
Code-Snippet anzeigen
Das Schwertsymbol stammt von cliparts.co
quelle
TSQL,
162124 BytesGolf:
Ungolfed:
Geige
quelle