Sementara kami menggunakan tendangan grid segitiga , saya ingin menunjukkan bahwa ada yang setara dengan polyomino pada grid segitiga. Mereka disebut poliamond , dan mereka adalah bentuk yang dibentuk dengan menempelkan segitiga sama sisi di sepanjang tepinya. Dalam tantangan ini, Anda akan menentukan himpunan bagian dari kisi segitiga yang merupakan poliamond, dan apakah ada lubang di dalamnya. Karena hanya membutuhkan 9 segitiga untuk membuat polyiamond dengan lubang di dalamnya, kode Anda harus sesingkat mungkin.
Grid
Kami akan menggunakan tata letak kotak segitiga Martin untuk input:
Perhatikan fakta bahwa pusat-pusat segitiga membentuk kotak persegi panjang kasar dan bahwa segitiga kiri atas "menunjuk" ke atas. Kita dapat menggambarkan subset dari kisi ini, kemudian, dengan memberikan "peta bintang" persegi panjang yang mengindikasikan segitiga mana yang dimasukkan dan mana yang tidak termasuk. Misalnya, peta ini:
** **
*****
sesuai dengan poliamond terkecil yang mengandung lubang:
Lubang
Sebuah polyiamond yang berisi sebuah lubang seperti contoh di atas (daerah bukan bagian dari polyiamond, yang dikelilingi oleh daerah yang berada ) tidak, topologi berbicara, hanya terhubung .
Tantangan
Tulis fungsi atau program yang mengambil input "peta bintang" seperti yang dijelaskan di atas dan menampilkan kebenaran jika dan hanya jika subset yang ditunjukkan dari grid segitiga adalah poliamond yang terhubung sederhana .
Lebih banyak contoh
*** ***
*******
sesuai dengan polyiamond
yang hanya terhubung.
* *
** **
***
sesuai dengan polyiamond
yang hanya terhubung.
** **
*** **
****
sesuai dengan non- polyiamond
yang tidak akan hanya terhubung bahkan jika itu adalah polyiamond.
Input Spec
- Input hanya akan terdiri dari tanda bintang, spasi, dan umpan baris.
- Karakter input pertama akan selalu berupa spasi atau tanda bintang (sesuai dengan segitiga pengarah ke atas di sudut kiri atas kisi).
- Akan selalu ada setidaknya satu tanda bintang di baris pertama dan terakhir.
- Tidak ada jaminan bahwa baris setelah baris pertama tidak akan kosong. Dua umpan baris dalam satu baris dapat muncul di input yang sah.
- Panjang garis tidak harus sama.
Kondisi Menang
Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Uji Kasus
Peta Truthy:
1) *
2) *
*
3) **
4) *** ***
*******
5) * *
** **
***
6) *
**
*
7) **
***
****
8) ****
** *
*****
9) ***********
** ** **
**** ** **
**
************
Peta Falsy:
1) *
*
*
2) * *
3) *
*
4) **
**
5) ***
***
6) ** **
*****
7) ** **
*** **
****
8) *
*
9) *****
** *
*****
sumber
AV VA\nVAVAV
alih-alih** **\n*****
karena memudahkan manusia untuk memvisualisasikan. Saya sudah melakukan edit ke salah satu diagram ASCII Martin.Jawaban:
Siput , 95 byte
Ini benar-benar menderita duplikasi, karena saya belum menerapkan makro atau referensi balik apa pun. Apa yang dilakukannya adalah memeriksa bahwa untuk setiap bintang, ada jalur ke bintang paling kiri di baris atas; dan untuk setiap ruang, ada jalur ke tepi kisi.
sumber
CJam,
10198 byteCobalah online.
Saya akhirnya mengatasi ketakutan saya menerapkan banjir mengisi CJam. Ini tentang jelek seperti yang saya harapkan, dan itu pasti bisa golf.
Gagasan umumnya adalah melakukan dua pengisian banjir (yang sebenarnya diimplementasikan sebagai pemindahan dari daftar sel yang belum dikunjungi). Lulus pertama akan menghapus semua ruang yang dapat dijangkau dari tepi. Lulus kedua kemudian akan memilih yang pertama
*
dalam urutan membaca dan menghapus semua segitiga yang bisa dijangkau dari itu. Jika dan hanya jika daftar yang dihasilkan kosong, poliamond itu hanya terhubung:sumber