Memasukkan:
Sebuah NxM
jaringan atau multi-string line (atau wajar input-format lain), yang berisi hanya dicetak ASCII (kisaran unicode [32,126]
).
Keluaran:
Jumlah poligon tertutup dengan karakter yang sama yang dapat ditemukan, dengan dua aturan khusus:
- Spasi adalah wildcard dan dapat digunakan (beberapa kali) untuk karakter apa pun
o
,,O
dan0
dihitung sebagai poligon tertutup sendiri
Aturan tantangan:
- (Anti-) Koneksi diagonal antara karakter (atau spasi) yang sama dimasukkan untuk membentuk poligon tertutup.
- Anda tidak dapat membahas karakter lain (kecuali ruang wild-card). (Yaitu dalam kasus uji pertama / contoh di bawah ini, Anda tidak dapat membentuk dua segitiga dengan tanda
A
's dengan melewatix
.) Jadi semua karakter yang digunakan untuk poligon tertutup harus terhubung (horizontal, vertikal, dan / atau (anti-) secara diagonal ). - Poligon setidaknya tiga karakter (termasuk karakter tunggal
o
,O
,0
). - Garis-garis karakter yang berdekatan bukan poligon tertutup.
- Karakter yang sama tidak dapat digunakan untuk beberapa poligon, tidak termasuk ruang wildcard.
- Ruang wildcard tidak dapat dihitung sebagai
o
,O
, atau0
. - Tiga atau lebih spasi saja tidak dapat membentuk poligon tertutup. Itu harus selalu memiliki setidaknya satu karakter non-spasi (dan non
o
/O
/0
). - Input dapat dalam format apa pun yang masuk akal. Dapat berupa karakter-matriks, string pembatas baris baru, string-array, karakter-array dengan penambahan bilangan bulat, dll.
- Input akan selalu menjadi persegi panjang N oleh M (atau persegi), jadi tidak ada bentuk input yang aneh
- Karena karakter yang sama tidak dapat digunakan lebih dari sekali dan kami ingin memiliki banyak poligon tertutup, menggunakan beberapa karakter untuk membentuk dua (atau lebih) poligon tertutup, bukan satu poligon yang lebih besar tentu saja tujuan yang dimaksudkan dalam penghitungan (yang juga merupakan mengapa poligon tertutup dibentuk oleh
o
,,O
atau0
tidak akan pernah dihitung, karena mereka sudah tertutup poligon secara terpisah). - Huruf besar dan huruf kecil tentu saja dihitung sebagai karakter individu.
Aturan umum:
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang.
Jangan biarkan bahasa kode-golf mencegah Anda memposting jawaban dengan bahasa non-codegolf. Cobalah untuk memberikan jawaban sesingkat mungkin untuk bahasa pemrograman 'apa pun'. - Aturan standar berlaku untuk jawaban Anda dengan aturan I / O default , sehingga Anda diizinkan untuk menggunakan STDIN / STDOUT, fungsi / metode dengan parameter yang tepat dan tipe pengembalian, program penuh. Panggilanmu.
- Celah default tidak diperbolehkan.
- Jika memungkinkan, silakan tambahkan tautan dengan tes untuk kode Anda (yaitu TIO ).
- Juga, menambahkan penjelasan untuk jawaban Anda sangat dianjurkan.
Contoh / Kasus Uji:
Memasukkan:
AAAw
AxA4
'AoQ
Output:, 2
karena poligon ini dapat dibentuk:
Memasukkan:
1822uaslkoo
12*2sl ljoo
a* 0a91)j$*
()*#J9dddj*
*Q#ID dJj!"
*UJD SO&*93
Output:, 12
karena poligon ini dapat dibentuk:
Perhatikan bahwa:
- Yang kuning di bawah ini bukan poligon, karena o
sudah dihitung sebagai poligon yang terpisah
- Yang ungu dan coklat tidak tertutup
- Yang merah, abu-abu, hijau, dan biru muda menggunakan satu atau lebih non karakter spasi-yang sudah digunakan untuk poligon tertutup lainnya
Input (dimensi 2x4
):
3 3
2
Output:, 3
karena poligon ini dapat dibentuk:
Memasukkan:
AAAA
AAAA
AAxA
Output:, 3
karena poligon ini dapat dibentuk:
Tentu saja poligon lain dimungkinkan di sini, tetapi tidak lebih dari 3. Berikut contoh lain yang valid dengan 3
poligon:
Memasukkan:
0QoO
Output:, 3
karena poligon ini dapat dibentuk:
Memasukkan:
W w
Ww
Output:, 3
karena poligon ini dapat dibentuk:
Perhatikan bahwa ruang lapisan atas digunakan untuk ketiga poligon. Berikut adalah tiga poligon yang disorot secara individual:
Memasukkan:
W W
WW
Keluaran:, 3
karena tiga poligon yang sama seperti pada tes sebelumnya dapat dibentuk. Jadi tidak, tidak 2
dengan dua poligon ini:
Memasukkan:
abcdQefg
hQiQjQQk
QlQmnopQ
QqrstQQu
QvQQQwxy
QQz0QQQQ
+1
ini, tetapi saya benar-benar tidak melihat apa khusus casingo
s,O
s &0
s menambah tantangan.o
,O
,0
menjadi lingkaran sebagai poligon individu, tetapi solusi itu tidak menambahkan banyak, kecuali bahwao
,O
,0
harus dihindari ketika membentuk poligon yang lebih besar, dan menambahkan hitungan bagi mereka. Terlambat untuk mengubahnya sekarang.Jawaban:
Python 2 , 714
737821byteCobalah online!
Untuk setiap huruf
A
(kecualio
,,O
dan0
) kode membangun grafik yang mewakili kedekatan dari berbagai kejadian hurufA
dan ruang dalam matriks awal yang diberikan. Kemudian ia menghitung himpunan siklus semi-terpisah yang menutupi grafik ketika memaksimalkan jumlah siklus (pemisahan hanya didasarkan pada hurufA
, ruang yang sama dapat digunakan untuk beberapa siklus).Kode lulus semua tes.
Input: daftar garis matriks.
sumber