Tantangan
Tuliskan program / fungsi lengkap untuk Menghancurkan bangunan yang diberikan pada tingkat 1 lantai per detik .
MEMASUKKAN
Input adalah bangunan melalui STDIN (atau apa pun yang disebut dalam bahasa Anda) atau melalui ARGUMEN fungsi. t = 0 dtk
|
|#|
{#}
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
input terdiri dari:
|
tanda awal dan akhir lantai.{
,}
Menandai lantai dengan bahan peledak.#
adalah jendela untuk dekorasi.adalah ruang, yang ada di mana-mana di dalam lantai di mana
#
tidak ada.T
menandai tanah (tidak dapat dihancurkan).*
menandai lantai yang diledakkan.
Aturan input:
- bangunan dimulai dari atas dengan satu
|
dan berakhir di tanah (tanpa (T
) = tidak (char used in ground floor
)). - sebuah jendela
#
ada di setiap tempat aneh di dalam setiap lantai. T
menandai akhir input Anda.- hanya satu lantai yang terdiri dari bahan peledak.
- setiap lantai terbuat dari no aneh . karakter.
- saat Anda naik ke lantai, lantai bisa berukuran sama dengan lantai sebelumnya atau bisa 2 karakter lebih besar.
- Input dapat diambil sebagai array dari
chars
ataustrings
.
Keluaran:
t = 0,5 dtk
|
|#|
***
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 1 dtk
|
|#|
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 1,5 dtk
|
***
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 2 dtk
|
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 2,5 dtk
*
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 3 dtk
|# #|
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 3,5 dtk
*****
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 4 dtk
|# # #|
|# # #|
|# # #|
TTTTTTT
t = 4,5 dtk
*******
|# # #|
|# # #|
TTTTTTT
t = 6,5 s
*******
TTTTTTT
t = 7 dtk
TTTTTTT
Aturan keluaran:
- setiap lantai berakhir dengan satu
newline
karakter. - ground mungkin / mungkin tidak memiliki baris baru.
- output bangunan (atau apa yang tersisa) setiap 0,5 detik.
- Output seperti animasi yang dimodifikasi setiap 0,5 detik dan ditampilkan.
(Juga merasa bebas untuk mengirim GIF dengan jawaban Anda)
Ini adalah Golf-Kode sehingga kode dalam byte terpendek menang!
tanggal pengiriman terakhir adalah tepat 5 hari dari sekarang
(Tapi tahukah Anda? Menang bukanlah segalanya, jangan ragu untuk mencoba tantangan ini dalam bahasa favorit Anda, bahkan setelah pemenang dinyatakan:]).
EDIT: Saya mengubah cara Anda mengambil input (sebenarnya buruk saya).
Jawaban:
Vim,
4138 byteDi sini,
^
digunakan untuk tanda sisipan harfiah; ␍ digunakan untuk CTRL-M.Penjelasan
qw:sl 500m␍q
tidur setengah detik, sementara merekam tidur setengah detik sebagai makro w./{␍
pindah ke lantai dengan bahan peledak.qq
mulai merekam makro q, yang secara rekursif akan memanggil dirinya sendiri.jk
bergerak ke bawah dan ke atas; ini menghasilkan kesalahan jika Anda berada di baris terakhir (ground); kesalahan mengakhiri makro rekursif.^v$r*
mengganti semuanya mulai dari karakter non-spasi pertama hingga akhir baris dengan *.@w
tunggu setengah detik, laludd
hapus lantai saat ini.:-␍
bergerak naik lantai tanpa menghentikan makro jika Anda berada di baris teratas.@w
kemudian tunggu setengah detik lagi, dan@q
panggil q makro (awalnya kosong).q@q
berhenti merekam makro q, lalu memanggilnya, memicu rekursi.Animasi
sumber
my answer could be "golfed" further
... bukankah itu cukup? : PJavaScript (ES6),
208198 bytesumber
Java 7,
589477476 byteOk, ini berantakan / panjang, tetapi tantangan ini memiliki begitu banyak hal yang mengganggu untuk Java .. Mencetak multi-line;
Thread.sleep(500)
yang membutuhkanthrows Exception
: mengganti substring antara dua pembatas dengan jumlah yang sama*
; dll.Semua ini menyebabkan program menjadi cukup besar .. Ini bisa menjadi golf lagi, bahkan mungkin dibelah dua dengan pendekatan yang berbeda, tetapi setidaknya ada jawaban sekarang. ;)
Tidak Disatukan:
Kode uji:
Coba di sini. (Pada ideone itu output sekaligus dan mengabaikan
sleep
..)sumber
try{...}finally{return;}
?throws Exception
Haskell,
245221 byteContoh penggunaan:
Bagaimana itu bekerja:
Catatan: ada juga
threadDelay
dariGHC.Conc
bukanusleep
dariSystem.Posix.Unistd
yang kecil memagut lebih pendek, tetapi hanya bekerja denganGHC
compiler, sehingga tidak akan menjadi generikHaskell
jawaban.sumber
C,
314287281271 byte-10 setelah mengubah
!=
ke-
dan menghindari literal arang bila mungkin, sertaisspace
(banyak terima kasih kepada H Walters). Namun kode yang tidak diubah tetap tidak berubah.-6 byte setelah menerapkan koma dan penghapusan
{}
setelah duaif
.-26 byte setelah sedikit optimasi, menghapus tanda kurung yang tidak perlu, serta mengubah variabel lokal menjadi global (dengan inisialisasi otomatis 0) dan
b[0]
oleh*b
.Kode uji dengan ungolfed
f
:sumber
s,e,t
luar secara global seperti inis,e,t;
i
dengan yang lain.Perl, 153 byte
Ini menggunakan perintah tidur GNU untuk menunggu 500 milidetik.
Versi tidak disatukan
sumber
PHP,
286282274234229 bytemengambil input sebagai daftar string dari argumen baris perintah (tidak ada karakter baris baru!)
simpan ke file, jalankan dengan
php <filename> ' |' ' |#|' ' {#}' ' |# #|' '|# # #|' '|# # #|' '|# # #|' 'TTTTTTT'
kerusakan
sumber