Dans ce défi, vous devez analyser les fichiers de la morgue du jeu roguelike Dungeon Crawl Stone Soup et les exporter vers STDOUT.
Quels sont ces fichiers de morgue ??
Lorsque vous mourez, un fichier texte est généré avec les données de ce personnage à l'intérieur. Vous pouvez voir quel équipement le personnage possédait, ce qui s'est passé au cours des derniers tours et combien de monstres il a tués.
Vous pouvez trouver un exemple de fichier de morgue ici
Le défi
Votre travail consiste à créer un programme qui prend l'un de ces fichiers depuis STDIN, le paralyse et génère les données vers STDOUT.
Pour rendre ce défi un peu plus facile, il vous suffit d'analyser le premier bloc de texte. (jusqu'àThe game lasted <time> (<turns> turns).
Vous devez analyser et produire les informations suivantes:
- Le numéro de version.
- Le score.
- Le nom, le titre, la race et la classe du personnage.
- Le niveau du personnage.
- La cause de la mort / victoire.
- Le nombre de tours que la course a duré.
Exemple:
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).
Cas de test
Cas d'essai 1 - Victoire
Exemple de sortie - Victoire:
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
Cas d'essai 2 - Décès
Exemple de sortie - Décès:
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
Règles
- C'est du code-golf donc le code le plus court l'emporte.
- En cas d'égalité, la réponse la plus ancienne l'emporte.
- Pas de failles standard.
- L'entrée de fichier doit provenir de STDIN
- La sortie doit être envoyée à STDOUT
- Les étiquettes avant la sortie (ex.
Turns:
) Sont facultatives.
Version:
ou suffit-elle pour sortir les informations dans le même ordre, une par ligne?Réponses:
Perl, 151 octets
Code 148 + 3 interrupteurs (
-0, -l, -p
). Je suis sûr que cela peut être amélioré :)Prend l'entrée de STDIN et imprime le résultat à la réception de l'EOF.
Non golfé:
ideone.com
la source
F #, 377 octets
la source
Javascript (ES6),
297230 octetsPour l'instant, il s'agit d'une expression régulière pilotée par les tests.
Il remplace simplement les informations indésirables et conserve les informations importantes.
Il crée une fonction anonyme qui renvoie simplement le texte voulu.
N'est-ce pas une bête?
Merci pour le conseil de sysreq sur les étiquettes en option. Cela m'a fait économiser 67 octets !
Vous pouvez tester l'expression resulgar sur: https://regex101.com/r/zY0sQ0/1
la source
_=>_.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} ?)?/,' ')
c'est une solution acceptable à seulement 230 octetsPython3, 472 octets
Je pensais que je serais en mesure de raccourcir ce délai. Pas surpris cependant d'avoir battu ma propre soumission. Exécutez-le comme
python3 dcss.py morgue-file.txt
.la source
Go,
589502489487 octetsaprès l'exécution
go fmt
,go fix
etgo vet
voici la version "non golfée":Edit: l' utilisation de dot-imports aide beaucoup.
Assez explicite mais je peux expliquer si besoin est. Ceci est mon premier «vrai» programme Go et je suis toujours un débutant au codegolf, donc les conseils sont les bienvenus!
Edit: vous avez dit "prendre un fichier de STDIN", et vous pouvez exécuter ce script (si vous avez installé) en exécutant
go install <foldername>
puis puis<binaryname> morgue-file.txt
ougo run main.go morgue.txt
la source