Tantangan ini untuk menghormati pemenang kategori Rookie of the Year dari Best of PPCG 2015 : muddyfish (karena saya bukan bahasa yang Anda cari! ) Dan quartata (untuk Implementasikan Mesin Kebenaran ). Selamat!
Latar Belakang
Di parit terdalam samudera, hiduplah seekor ikan berbentuk persegi yang langka dan sulit ditangkap yang disebut ikan quartata . Itu seperti peluncur dari Game of Life, otomat seluler. Berikut adalah dua ikan quartata dengan ukuran berbeda:
-o-
--o
ooo
--oo--
--oo--
----oo
----oo
oooooo
oooooo
Anda telah berhasil mengambil foto ikan quartata, tetapi ikannya agak sulit dilihat karena tertutup lumpur. Sekarang Anda harus menulis sebuah program untuk membersihkan foto.
Memasukkan
Input Anda adalah kotak 2D persegi panjang karakter .-o#
, diberikan sebagai string yang dipisahkan baris baru. Jika Anda mau, Anda bisa menggunakan pipa |
daripada baris baru sebagai pemisah, dan Anda dapat mengasumsikan satu trailing dan / atau pemisah sebelumnya.
Input akan berisi persis satu quartata-fish dengan panjang sisi tertentu 3*n
, di mana n ≥ 1
bilangan bulat positif, dikelilingi oleh periode .
yang mewakili dasar laut. Ikan akan selalu dalam orientasi yang digambarkan di atas. Overlay pada grid ini, akan ada persis satu wilayah hash persegi panjang yang tidak kosong #
, yang mewakili gumpalan lumpur. Gumpalan dapat menutupi ikan quartata sebagian atau seluruhnya. Contoh input akan menjadi
............
..--oo--....
..--oo--....
..---#####..
..---#####..
..ooo#####..
..oooooo....
Keluaran
Output Anda akan dihasilkan dari input dengan mengganti semua hash dengan karakter .-o
, sehingga kisi-kisi berisi persis satu quartata-fish. Akan selalu ada cara unik untuk melakukan penggantian ini dengan benar; khususnya, gumpalan lumpur akan menutupi ikan sepenuhnya hanya jika ukurannya 3x3. Keluaran harus menggunakan pemisah yang sama dengan input. Untuk input di atas, output yang benar adalah
............
..--oo--....
..--oo--....
..----oo....
..----oo....
..oooooo....
..oooooo....
Aturan dan penilaian
Anda dapat menulis program atau fungsi lengkap. Hitungan byte terendah menang, dan celah standar tidak diizinkan. Tidak ada batasan waktu: jika kiriman Anda pada akhirnya akan berhenti karena waktu dan sumber daya yang tidak terbatas, Anda baik-baik saja.
Uji kasus
Input:
.......
...-o-.
...--o.
##.ooo.
##.....
Output:
.......
...-o-.
...--o.
...ooo.
.......
Input:
...-o-.
...-#o.
...ooo.
.......
Output:
...-o-.
...--o.
...ooo.
.......
Input:
.........
.###.....
.###.....
.ooo.....
Output:
.........
.-o-.....
.--o.....
.ooo.....
Input:
.....
.###.
.###.
.###.
Output:
.....
.-o-.
.--o.
.ooo.
Input:
......
......
......
...###
...###
...###
Output:
......
......
......
...-o-
...--o
...ooo
Input:
###o--....
###o--....
###-oo....
###-oo....
###ooo....
###ooo....
###.......
Output:
--oo--....
--oo--....
----oo....
----oo....
oooooo....
oooooo....
..........
Input:
............
..--oo--....
..--oo--....
..---#####..
..---#####..
..ooo#####..
..oooooo....
Output:
............
..--oo--....
..--oo--....
..----oo....
..----oo....
..oooooo....
..oooooo....
Input:
...--oo--....
.#########...
.#########...
.#########...
...oooooo....
...oooooo....
.............
.............
Output:
...--oo--....
...--oo--....
...----oo....
...----oo....
...oooooo....
...oooooo....
.............
.............
Input:
..............
..............
.########.....
.########.....
.########-....
.########-....
.########o....
.########o....
.########o....
.########o....
.########.....
..............
Output:
..............
..............
..............
..............
....--oo--....
....--oo--....
....----oo....
....----oo....
....oooooo....
....oooooo....
..............
..............
Input:
.................
.................
..---ooo---......
..--#########....
..--#########....
..--#########....
..--#########....
..--#########....
..oo#########....
..oo#########....
..oo#########....
....#########....
Output:
.................
.................
..---ooo---......
..---ooo---......
..---ooo---......
..------ooo......
..------ooo......
..------ooo......
..ooooooooo......
..ooooooooo......
..ooooooooo......
.................
Input:
.........................
.........................
....----oooo----.........
....----########.........
....----########.........
....----########.........
....----########.........
....----########.........
....----########.........
....----########.........
....oooo########.........
....oooo########.........
....oooooooooooo.........
....oooooooooooo.........
.........................
Output:
.........................
.........................
....----oooo----.........
....----oooo----.........
....----oooo----.........
....----oooo----.........
....--------oooo.........
....--------oooo.........
....--------oooo.........
....--------oooo.........
....oooooooooooo.........
....oooooooooooo.........
....oooooooooooo.........
....oooooooooooo.........
.........................
......|......|......|...###|...###|...###
(jika suatu solusi mencoba semua koordinat kiri-atas yang memungkinkan, dan mencoba memasukkan 6x6 pada area)Jawaban:
Python 2,
433411 byteKeluar dengan a
NameError
. Membagi pipa input.Saya mencampur tab dan spasi di sini. SE tidak membuat tab dengan benar.
(Perhatikan ruang ekstra di awal hanya untuk kecantikan dan tidak dicetak)
sumber
JavaScript (ES6), 291 byte
Penjelasan
Mengambil kisi masukan sebagai string yang dipisahkan baris baru. Tidak sepenuhnya golf, akan berbuat lebih banyak ketika saya punya waktu.
Ini bekerja dengan:
sumber
Python 2, 325 byte
Solusi golf buruk untuk saat ini - ini
for .. in range(...)
adalah kecelakaan kereta api total. Input / output string yang dipisahkan baris baru.Hitungan byte saat ini mengasumsikan hanya ruang indentasi - saya akan beralih ke tab / spasi campuran nanti ketika saya selesai bermain golf, jika perlu.
sumber