Dalam tantangan ini, Anda perlu mengurai file kamar mayat dari game roguelike Dungeon Crawl Stone Soup dan meng -output-nya ke STDOUT.
Apa file kamar mayat ini ??
Ketika Anda mati, file teks dihasilkan dengan data karakter di dalamnya. Anda dapat melihat peralatan apa yang dimiliki karakter, apa yang terjadi selama beberapa putaran terakhir, dan berapa banyak monster yang telah dia bunuh.
Anda dapat menemukan contoh file kamar mayat di sini
Tantangan
Tugas Anda adalah membuat program yang mengambil salah satu file dari STDIN, mem-parsingnya, dan menampilkan data ke STDOUT.
Untuk membuat tantangan ini sedikit lebih mudah, Anda hanya perlu menguraikan blok teks pertama. (hinggaThe game lasted <time> (<turns> turns).
Anda perlu mengurai dan menampilkan informasi berikut:
- Nomor versi.
- Nilai.
- Nama karakter, judul, ras, dan kelas.
- Tingkat karakter.
- Penyebab kematian / kemenangan.
- Jumlah putaran proses berlangsung.
Contoh:
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).
Uji Kasus
Uji kasus 1 - Kemenangan
Contoh hasil - Kemenangan:
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
Uji kasus 2 - Kematian
Contoh output - Kematian:
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
Aturan
- Ini adalah kode-golf sehingga kode terpendek menang.
- Dalam hal seri, jawaban tertua menang.
- Tidak ada celah standar.
- Input file harus diambil dari STDIN
- Output harus dikirim ke STDOUT
- Label sebelum output (mis.
Turns:
) Adalah opsional.
Version:
atau cukup untuk menampilkan potongan-potongan informasi dalam urutan yang sama, satu per baris?Jawaban:
Perl, 151 byte
148 kode + 3 sakelar (
-0, -l, -p
). Saya yakin ini bisa diperbaiki :)Mengambil input dari STDIN dan mencetak hasilnya saat menerima EOF.
Tidak Disatukan:
ideone.com
sumber
F #, 377 byte
sumber
Javascript (ES6),
297230 byteUntuk saat ini, ini adalah ekspresi reguler yang digerakkan oleh tes.
Itu hanya menggantikan info yang tidak diinginkan dan menyimpan hal-hal penting.
Ini menciptakan fungsi anonim yang hanya mengembalikan teks yang diinginkan.
Bukankah itu binatang buas?
Terima kasih atas tip sysreq tentang label yang opsional. Itu menyelamatkan saya 67 byte !
Anda dapat menguji ekspresi resulgar di: https://regex101.com/r/zY0sQ0/1
sumber
_=>_.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} ?)?/,' ')
adalah solusi yang dapat diterima hanya dengan 230 bytePython3, 472 byte
Saya pikir saya bisa mendapatkan ini jauh lebih pendek. Tidak heran saya mengalahkan kiriman saya sendiri. Jalankan seperti
python3 dcss.py morgue-file.txt
.sumber
Pergi,
589502489487 bytesetelah berjalan
go fmt
,,go fix
dango vet
ini adalah versi "ungolfed:Sunting: menggunakan dot-impor sangat membantu.
Cukup jelas tetapi saya bisa menjelaskan jika perlu. Ini adalah program Go 'nyata' pertama saya dan saya masih pemula di codegolf sehingga tipsnya dapat diterima!
Sunting: Anda mengatakan "ambil file dari STDIN", dan Anda dapat menjalankan skrip ini (jika sudah diinstal) dengan menjalankan
go install <foldername>
lalu<binaryname> morgue-file.txt
ataugo run main.go morgue.txt
sumber