Diberikan masukan dari "hotel" dalam seni ASCII dengan satu kamar bertanda, menampilkan nomor kamar sesuai aturan tertentu.
Berikut adalah contoh hotel ASCII:
##
##
##### ##
##### ###### ##
##### ###### ##
##### ###### ##
Berikut beberapa hal lain tentang hotel ASCII:
Setiap "bangunan" diwakili oleh persegi panjang
#
karakter, di mana masing-masing#
mewakili "kamar".Hotel di atas terdiri dari tiga bangunan. Setiap bangunan dipisahkan oleh dua kolom ruang, dan "lantai" terendah akan selalu berada di baris terakhir.
Setiap bangunan akan selalu memiliki 1-9 "lantai" (baris) dan 1-9 "kamar" di setiap lantai. Akan selalu ada 1-9 bangunan.
Kamar nomor sebagai berikut:
[building #][floor #][room on floor #]
. Sebagai contoh, mari kita tandai beberapa kamar pada gambar di atas:## ## ##### ## ##### ####$# ## ##%## ###### ## ##### ###### #@
Ruangan yang ditandai dengan
%
adalah kamar 123 (bangunan 1, lantai 2, kamar ke-3 di lantai). Demikian pula, ruang yang ditandai dengan$
ruang 235, dan@
ruang 312.Bangunan, lantai, dan "kamar ke-lantai" selalu diindeks 1.
Input akan terdiri dari hotel ASCII dengan satu kamar diganti dengan tanda bintang ( *
). Ini adalah ruangan di mana Anda harus menampilkan nomor kamar. Input harus diambil sebagai string tunggal, tetapi Anda dapat menggunakan koma sebagai pemisah baris alih-alih baris baru (jika bahasa pilihan Anda tidak dapat mengambil input multiline atau jika lebih pendek untuk mengambil input baris tunggal). Secara opsional Anda mungkin memerlukan koma / baris tambahan. Anda juga dapat membuat garis dengan spasi tambahan untuk membuat input menjadi persegi panjang lengkap.
Karena ini adalah kode-golf , kode terpendek dalam byte akan menang.
Kasus uji (terkandung dalam satu blok kode tunggal untuk menghemat ruang vertikal):
Input:
*
Output: 111
Input:
# # * # #
Output: 311
Input:
#####
#####
####*
#####
#####
Output: 135
Input:
#####
##### ######
##### ######
# # # ##### # # # ###### *
Output: 911
Input:
#
# #
# # ##
# # ## ###
# # ## ### #####
# # ## ### ##*## ########
# # ## ### ##### ########
Output: 523
Input:
#
*
#
#
#
#
#
#
######### # #
Output: 281
Input:
########*
#########
#########
#########
#########
#########
#########
#########
# # # # # # # # #########
Output: 999
Jawaban:
CJam,
3431 byteIni membutuhkan input untuk diisi ke sebuah persegi panjang dengan spasi.
Cobalah online! Atau, jalankan semua test case.
Penjelasan
sumber
Pyth, 34 byte
Demonstrasi
Ini menggunakan trik golf yang belum pernah saya gunakan sebelumnya: Menetapkan ke variabel (
K
) di dalam fungsi (y
) untuk menyimpan sebagian hasil dari fungsi itu.Penjelasan:
sumber
JavaScript (ES6),
142136 byte6 byte disimpan berkat @nderscore !
Penjelasan
Uji
Tampilkan cuplikan kode
sumber
.map((t,i,l)=>
,slice(0,r=t.indexOf`*`+1)
,o=++b&&s+2
,[b]+f+r
[b]+f+r
tipnya!awk, 70
Contoh:
sumber
C,
131130119113 byteMengambil input pada stdin; input tidak boleh memiliki baris baru yang berhenti. Mengasumsikan komplemen 2.
Tidak Disatukan:
sumber
Stackgoat , 73 byte [tidak bersaing]
Stackgoat adalah bahasa berbasis tumpukan yang tidak ada hubungannya dengan kambing.
Ini bahasa yang cukup baru, jadi beri tahu saya jika ada masalah. Saya membuat diri saya agak pusing memikirkan hal ini jadi ini tentang sebanyak saya bermain golf ini.
Penjelasan
Program ini memiliki 3 bagian untuk setiap 3 digit nomor kamar
sumber
Ruby, 103
Tidak terkurung dalam program uji
sumber
$`
dalam hal ini.JavaScript (ES6), 121
Kurang bermain golf dan menjelaskan
UJI
sumber
Python 2.7,
153168 karakterSaya menyukai tantangan ini! Jika daftar Python tidak apa-apa sebagai input (lihat contoh untuk testuite), solusi ini berfungsi.
Edit 2016-01-05: menambahkan satu baris (10 karakter) untuk membagi string menjadi multiline.
Penjelasan singkat:
t
adalah baris di mana ruangan berada (dihitung dari baris atas sebagai indeks array = 0);i
adalah indeks ruangan di barisnya;i
;t
;i
sampai awal lantai dengan ruangan, ditambahkan oleh spasi putih untuk menutupi kasus bahwa ruangan berada di bangunan pertama.Kode:
Testsuite:
sumber
Siput , 32 byte
sumber
C,
142138137 byte(
123119118 byte + 19 untuk#include
baris)Saya mencuri ide penggabungan nilai dari ecatmur, tetapi saya telah menggabungkannya dengan cara yang sangat berbeda (
menghemat 8 byte pada akhirnya). Ini juga membuat asumsi yang samaEOF == -1
.Input diambil dari stdin, dan tidak boleh memiliki spasi putih atau baris baru setelah bangunan terakhir di baris terakhir, jadi contoh inputnya adalah:
Kerusakan:
sumber
&&(f=p,p=x)
ke?f=p,p=x:0
- operan kedua kondisional ternary memiliki kurung implisit.Haskell,
128125 byteContoh penggunaan:
f "# # * # #"
->311
.Bagaimana itu bekerja:
sumber
Lua, 165 Bytes
Tidak disatukan
sumber
CoffeeScript, 110 byte & JavaScript, 121 byte
Dapat dibaca
Pada dasarnya hal yang sama di Javascript:
sumber
Java, 231 Bytes
De-Golfed
sumber
Powershell, 154 byte
Skrip uji yang kurang golf:
Keluaran:
sumber
05AB1E , 34 byte
Zip dengan daftar string saat ini disadap.
€SζJ
bisa saja hanyaζ
dalam versi lama warisan Python 05AB1E, tetapi untuk beberapa alasan tidak berfungsi dalam versi menulis ulang Elixir lagi.Cobalah secara online atau verifikasi semua kasus uji .
Penjelasan:
sumber
Dart , 165 byte
Cobalah online!
sumber