Misalkan kisi ruang ini dan X
mewakili penampang beberapa nampan es batu berbentuk aneh :
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Kolom tanpa X
mewakili lubang atau celah di baki yang tidak dapat menampung air, mengalir ke wastafel kapasitas tak terbatas. Air yang jatuh dari ujung paling kiri atau paling kanan dari kotak masuk ke bak cuci tanpa akhir ini juga.
Jika kita menempatkan keran di atas nampan dan membiarkannya terisi dengan air sampai permukaan air di semua kompartemen tetap stabil, kompartemen yang tepat yang menjadi terisi akan bergantung pada tempat aliran air diposisikan di atas nampan. (Asumsikan aliran air tipis dan stabil tanpa percikan.)
Misalnya, jika faucet kami F
berada di atas kolom grid paling kiri
F
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
air akan jatuh ke bagian paling atas X
di kolom itu dan menyebar ke kiri dan kanan, separuh kiri tumpah ke wastafel di bawah, dan separuh kanan mengisi kompartemen 2 × 1. Setelah kompartemen terisi, bagian kanan aliran air tidak memiliki tempat untuk mengalir tetapi ke bak cuci dan permukaan air di mana-mana pada dasarnya stabil.
Mematikan faucet, baki sekarang terlihat seperti ini: (dengan ~
air)
X X X
X~~X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Demikian pula jika kita memposisikan faucet seperti ini:
F
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Ini akan mengisi dua kompartemen paling kiri tetapi sisa air akan mengalir:
X X X
X~~X~X XX X XX X
XXXXXX XXXXXXXXXXXXX
Jika kita memposisikan faucet seperti ini:
F
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Setengah bagian kiri aliran akan mengalir ke bak cuci tetapi bagian kanan akhirnya akan mengisi tiga kompartemen paling kanan karena tidak ada batasan seberapa jauh air dapat berjalan secara horizontal di permukaan yang datar:
X X~X
X X X XX~X~~XX~~~X
XXXXXX XXXXXXXXXXXXX
Diposisikan seperti ini, namun:
F
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Semua air mengalir dan tidak ada kompartemen yang terisi:
X X X
X X X XX X XX X
XXXXXX XXXXXXXXXXXXX
Tantangan
Tulis program atau fungsi yang menggunakan kotak spasi persegi panjang X
, satu, dan satu F
. Baris atas akan selalu F
berisi spasi dan sebaliknya hanya berisi spasi. Tanda X
's di setiap kolom (jika ada) akan membentang dalam garis yang solid di atas dasar kisi, yaitu tidak akan ada gua atau gubuk.
Cetak atau kembalikan kisi-kisi setelah faucet F
mengisi apa yang bisa dengan air ~
seperti dijelaskan di atas. Biarkan F
baris atas dari output.
Grid selain dari baris faucet akan minimal 1 × 1 jadi
F X
adalah input terkecil yang Anda butuhkan untuk mendukung.
Input akan muncul sebagai kotak teks lengkap. Ruang-ruang terkemuka dan tertinggal sangat penting dalam input dan output. misal input
F X X XXXX
harus menghasilkan
X~~X XXXX
(perhatikan ruang depan dan belakang)
Memiliki satu trailing newline di input atau output baik-baik saja.
Anda dapat menggunakan empat yang berbeda ASCII printable karakter di tempat ruang,
X
,F
,~
.
Kode terpendek dalam byte menang.
Contoh Besar:
Memasukkan:
F
X X
X X X
X XXX X X X X X
X X XXXXXXX X XXX XXXXXXX X X
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX
Keluaran:
X~~~~~~~~~~~~~X
X~~~~~~~~~~~~~X~X
X~~~~~~~~~~~~XXX~~~~~~~X~~~~X~X~~~~~~~~~~~X X
X~~~X~~~~~XXXXXXX~~~~~~X~~~~XXX~~~~~XXXXXXX X X
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXX
zip()
<3Jawaban:
perl -p0, 204 + 2 byte
IDE
X *X
es denganX~*X
es di pulau itu.X *X
es denganX~*X
selokan di sisi bawah dan titik terdekat dengan F yang lebih tinggi dari atas sisi bawah.Tanah tepat di bawah F dihitung sebagai bagian dari kedua belah pihak di sini.
GOLF
CATATAN
Mungkin sulit untuk mengenali algoritma asli dalam implementasi ini karena Perl tidak mendukung tampilan yang terlihat dari panjang variabel.
sumber
Lua 5.2, 581 Bytes
Sekali lagi, mulai lambat dengan bahasa yang tidak efektif untuk bermain golf dan dengan algoritma yang tidak efektif. Tapi saya akan meningkatkan :)
Test case (dengan sumber air):
dari bash dimungkinkan untuk menguji dengan cara ini, tetapi tidak terlihat bagus:
sumber
Javascript, 460 Bytes
Demo online (di konsol, diuji di Chrome dan Firefox saat ini).
Menantang diri sendiri tidak begitu menyenangkan, tetapi masih memungkinkan. Algoritma yang sama dengan Lua, sekarang dalam javascript.
sumber