Permainan video Minecraft adalah tentang menempatkan dan menghapus berbagai jenis blok dalam kisi integer 3D yang membentuk dunia virtual. Setiap titik kisi dapat berisi tepat satu blok atau kosong ( blok " udara " secara resmi). Dalam tantangan ini, kita hanya akan peduli dengan satu bidang 2D horisontal dunia 3D, dan satu jenis blok: peti .
Peti memungkinkan pemain menyimpan item. Ketika dua peti berdekatan secara orthogonal dalam bidang horizontal yang sama, teksturnya saling terhubung dan dada ganda dengan dua kali kapasitas terbentuk. Tidak ada yang lebih besar dari dada ganda yang bisa dibuat; tidak ada peti tiga atau peti empat.
Balok dada hanya dapat ditempatkan di titik kisi kosong jika empat titik yang berdekatan secara orthogonal semuanya kosong, atau jika persis satu berisi blok dada yang belum menjadi bagian dari peti ganda. Aturan penempatan ini memastikan bahwa tidak akan pernah ada ambiguitas tentang blok dada mana yang terhubung untuk membentuk peti ganda.
Misalnya, anggaplah .ruang kosong dan Csebuah peti: (Angka-angka juga ruang kosong dan hanya untuk tujuan identifikasi.)
.......C..
.1.C2.C3..
........5C
.CC4..CC..
..........
- Sebuah peti dapat ditempatkan di tempat 1 karena 4 tetangganya kosong.
- Sebuah dada dapat ditempatkan di tempat 2 karena dada tetangga belum menjadi bagian dari dada ganda.
- Dada tidak bisa diletakkan di posisi 3 karena akan ada ambiguitas tentang bagaimana bentuk dada ganda.
- Dada tidak dapat ditempatkan di tempat 4 karena dada tetangga sudah merupakan bagian dari dada ganda.
- Sebuah dada dapat ditempatkan di tempat 5. Dada ganda diagonal tetangga tidak mempengaruhi apa pun.
Dengan asumsi area di luar grid kosong, mengubah setiap .di grid menjadi *jika peti dapat ditempatkan di sana menghasilkan ini:
******.C**
***C**C.**
*..***..*C
.CC.*.CC.*
*..***..**
Tidak semua *ruang dapat ditempati dengan peti pada saat yang bersamaan, tetapi jika Anda hanya memiliki satu peti, itu bisa ditempatkan di salah satu dari mereka.
Tantangan
Tulis program atau fungsi yang menggunakan a .dan Ckisi, dan ubah setiap .menjadi *jika peti dapat ditempatkan di sana, mencetak atau mengembalikan kisi yang dihasilkan.
Input dapat dari stdin atau file atau sebagai argumen string ke suatu fungsi.
Anda dapat mengasumsikan input terbentuk dengan baik - yaitu kotak teks persegi panjang yang sempurna, setidaknya 1 karakter lebar dan tinggi, hanya berisi
.danCAnda dapat secara opsional mengasumsikan ada baris tambahan setelah baris terakhir (dan mungkin ada satu di output ).Anda bisa menganggap susunan peti di input konsisten dengan aturan di atas. Tidak akan pernah ada ambiguitas tentang peti mana yang membentuk peti ganda.
Jika diinginkan, Anda dapat menggunakan tiga yang berbeda ASCII printable karakter di tempat
.,Cdan*. Anda tidak boleh menggunakan sesuatu yang lain sebagai pengganti baris baru.Semua peti adalah peti normal. Tidak terjebak dada atau dada ender .
Mencetak gol
Pengajuan dengan byte paling sedikit menang.
Untuk tantangan terkait Minecraft yang sedikit lebih menantang, coba Nether Portal Detection .