Mari kita mewakili bata batu standar sebagai [__](dan mengabaikan fakta bahwa bagian atas terbuka). Ketika batu bata ini ditumpuk, setiap lapisan lainnya diimbangi dengan setengah batu bata, seperti biasa dalam konstruksi batu bata:
[__][__][__][__]
[__][__][__][__]
[__][__][__][__]
[__][__][__][__]
Dengan demikian, setiap bata memiliki paling banyak enam tetangga dan tidak mungkin bagi dua batu bata untuk berbaris secara langsung.
Poin kuncinya adalah bahwa pengaturan batu bata ini tidak direkatkan , tetapi hanya disatukan oleh gravitasi. Jadi penting bahwa setiap bata dalam struktur stabil, jika tidak seluruh struktur tidak stabil.
Ada tiga cara batu bata individu menjadi stabil:
- Setiap bata di tanah (garis bata terendah) stabil.
Batu bata yang memiliki dua batu bata tepat di bawahnya stabil:
[__] <- this brick is stable [__][__] <- because these bricks hold it upSetiap bata yang memiliki bata di atas dan di bawahnya di sisi yang sama stabil:
[__] [__] [__] [__] <- these middle bricks are stable [__] [__] because the upper and lower bricks clamp them in [__] [__] [__] [__] <- these middle bricks are NOT stable [__] [__]
Dari aturan-aturan ini kita dapat melihat, misalnya, pengaturannya
[__][__][__][__]
[__][__][__][__]
[__][__][__][__]
[__][__][__][__]
tidak stabil karena batu bata kanan atas tidak stabil, hanya itu yang diperlukan.
Struktur bata hanya stabil jika semua batunya stabil.
Tantangan
Tugas Anda adalah menulis fungsi yang mengambil string struktur bata dan mengembalikan nilai kebenaran jika struktur stabil, dan nilai palsu jika tidak stabil. ( definisi benar / salah )
String input mungkin besar secara sewenang-wenang tetapi akan selalu berupa kotak karakter persegi panjang, dengan ruang yang mengisi area yang kosong dari batu bata. Lebar kisi karakter akan habis dibagi 4 tetapi ketinggiannya mungkin ganjil atau genap.
Kotak bata selalu memanjang ke atas dan ke kanan dari posisi bata kiri bawah:
.
.
.
BRK?BRK?BRK?BRK?
BRK?BRK?BRK?BRK?BRK?
BRK?BRK?BRK?BRK?
BRK?BRK?BRK?BRK?BRK? . . .
BRK?BRK?BRK?BRK?
BRK?BRK?BRK?BRK?BRK?
Tergantung pada strukturnya, masing BRK?- masing mewakili batu bata ( [__]) atau ruang kosong (4 spasi).
Perhatikan bahwa rongga setengah bata diisi dengan ruang untuk memastikan bahwa kotak karakter adalah persegi panjang.
Mencetak gol
Kode terpendek dalam byte menang.
Catatan
- Jika diinginkan, Anda dapat menggunakan
.alih-alih ruang sebagai karakter ruang kosong. - String kosong dianggap stabil.
- Jika bahasa Anda tidak memiliki fungsi, Anda dapat menggunakan variabel string bernama sebagai input dan menetapkan hasilnya ke variabel lain.
- Jika bahasa Anda tidak memiliki string, Anda dapat melakukan apa pun yang tampaknya sesuai untuk input.
Uji Kasus
Berbagai test case, dipisahkan oleh garis kosong. Untuk kejelasan .digunakan bukan ruang untuk ruang kosong.
Stabil:
[__]
..[__]..
[__][__]
........[__]........
......[__][__]......
........[__]........
..[__][__]..
[__][__][__]
..[__][__]..
[__]....[__]
............[__]..
..[__][__][__][__]
[__][__][__][__]..
..[__][__][__][__]
[__][__][__][__]..
..[__]........[__]..
[__][__][__][__][__]
..[__][__][__][__]..
....[__][__][__]....
......[__][__]......
........[__]........
Tidak stabil:
..[__]..
........
..[__]..
[__]....
..[__]..
....[__]
..[__][__]..
[__]....[__]
..[__][__]..
[__]....[__]
..[__][__][__][__]
[__][__][__][__]..
..[__][__][__][__]
[__][__][__][__]..
[__][__][__][__][__]
..[__][__][__][__]..
....[__][__][__]....
......[__][__]......
........[__]........
........[__].... ......[__][__].. ....[__][__].... ..[__][__]...... [__][__]........ ..[__]..........(Anda harus menumpuk mental garis-garis itu di atas satu sama lain. Intinya adalah bahwa aturan Anda memungkinkan struktur yang pusat gravitasinya jauh diimbangi dari titik kontak dengan tanah. Seharusnya mungkin untuk mengencangkannya untuk menghindari hal ini. , tanpa memerlukan mesin fisika, jika Anda menginginkannya.)