Bei dieser Herausforderung müssen Sie Leichenschauhausdateien aus dem schurkenhaften Spiel Dungeon Crawl Stone Soup analysieren und an STDOUT ausgeben.
Was sind diese Leichenschauhausdateien?
Wenn du stirbst, wird eine Textdatei mit den Daten dieses Charakters generiert. Sie können sehen, welche Ausrüstung der Charakter hatte, was in den letzten Runden passiert ist und wie viele Monster er getötet hat.
Eine Beispiel-Leichenschauhausdatei finden Sie hier
Die Herausforderung
Ihre Aufgabe ist es, ein Programm zu erstellen, das eine dieser Dateien aus STDIN entnimmt, analysiert und die Daten an STDOUT ausgibt.
Um diese Herausforderung etwas zu vereinfachen, müssen Sie nur den ersten Textblock analysieren. (bis zuThe game lasted <time> (<turns> turns).
Sie müssen die folgenden Informationen analysieren und ausgeben:
- Die Versionsnummer.
- Die Punktzahl.
- Der Charaktername, Titel, Rasse und Klasse.
- Die Charakterebene.
- Die Todesursache / der Sieg.
- Die Anzahl der Umdrehungen, die der Lauf dauerte.
Beispiel:
Dungeon Crawl Stone Soup version <version number> character file.
<score> <name> the <title> (level <level>, 224/224 HPs)
Began as a <race> <class> on Mar 16, 2015.
Was the Champion of the Shining One.
<cause of death/victory>
The game lasted 16:11:01 (<turns> turns).
Testfälle
Testfall 1 - Sieg
Beispielausgabe - Sieg:
Version: 0.16.0-8-gd9ae3a8 (webtiles)
Score: 16059087
Name: Ryuzilla the Conqueror
Character: Gargoyle Berserker
Level: 27
Cause of Death/Victory: Escaped with the Orb and 15 runes on Mar 17 2015!
Turns: 97605
Testfall 2 - Tod
Beispielausgabe - Tod:
Version: 0.16-a0-3667-g690a316 (webtiles)
Score: 462
Name: 8Escape the Ruffian
Character: Bearkin Transmuter
Level: 6
Cause of Death/Victory: Slain by an orc wielding a +0 trident (3 damage) on level 4 of the Dungeon.
Turns: 3698
Regeln
- Dies ist Code-Golf, also gewinnt der kürzeste Code.
- Bei einem Unentschieden gewinnt die älteste Antwort.
- Keine Standardlücken.
- Die Dateieingabe muss von STDIN stammen
- Die Ausgabe muss an STDOUT gesendet werden
- Die Beschriftungen vor der Ausgabe (z. B.
Turns:
) sind optional.
Version:
oder reicht aus, um die Informationen in derselben Reihenfolge auszugeben, eine pro Zeile?Antworten:
Perl, 151 Bytes
148 Code + 3 Schalter (
-0, -l, -p
). Ich bin sicher, das kann verbessert werden :)Nimmt Eingaben von STDIN entgegen und druckt das Ergebnis beim Empfang von EOF.
Ungolfed:
ideone.com
quelle
F #, 377 Bytes
quelle
Javascript (ES6),
297230 BytesIm Moment ist dies ein testgetriebener regulärer Ausdruck.
Es ersetzt einfach die unerwünschten Informationen und behält die wichtigen Dinge.
Es wird eine anonyme Funktion erstellt, die einfach den gewünschten Text zurückgibt.
Ist es nicht ein Tier?
Vielen Dank für den Tipp von sysreq , dass die Etiketten optional sind. Das hat mir 67 Bytes erspart !
Sie können den resulgaren Ausdruck unter folgender Adresse testen: https://regex101.com/r/zY0sQ0/1
quelle
_=>_.replace(/^.+version(.*) character file\.([\n\r]+)(\d+)([^\(]+) \([^\d]+( \d+),.+\n\s+.+as a(.+) on.+\n\s+(?:Was.+One\.\n)?((?:.|\n)+[!.])\n(?:.|\n)+\((\d+)(?:.|\n)+$/,'$1\n$3\n$4\n$6\n$5\n$7\n$8').replace(/\s+(\.{3} ?)?/,' ')
ist eine akzeptable Lösung bei nur 230 BytesPython3, 472 Bytes
Ich dachte, ich könnte so viel kürzer werden. Kein Wunder, dass ich meine eigene Vorlage geschlagen habe. Führen Sie es wie
python3 dcss.py morgue-file.txt
.quelle
Go,
589502489487 Bytesnach dem Laufen
go fmt
,go fix
undgo vet
hier ist die "ungolfed" Version:Bearbeiten: Die Verwendung von Punktimporten hilft sehr.
Ziemlich selbsterklärend, aber ich kann es bei Bedarf erklären. Dies ist mein erstes "echtes" Go-Programm und ich bin noch ein Anfänger bei Codegolf, daher sind Tipps willkommen!
Bearbeiten: Sie sagten "Nehmen Sie eine Datei von STDIN", und Sie können dieses Skript (falls installiert) ausführen, indem Sie
go install <foldername>
und dann<binaryname> morgue-file.txt
oder ausführengo run main.go morgue.txt
quelle