Mathematica 188 185 170 115 130 46 48 karakter
Penjelasan
Dalam versi sebelumnya, saya membuat grafik posisi yang memiliki jarak papan catur 1 dari satu sama lain. GraphComponentskemudian terungkap jumlah pulau, satu per komponen.
Versi yang sekarang digunakan MorphologicalComponentsuntuk menemukan dan menentukan jumlah cluster yang ada di array - region 1yang berdekatan secara fisik. Karena grafik tidak diperlukan, ini menghasilkan ekonomi kode yang sangat besar.
Kode
Max@MorphologicalComponents[#/.{"."->0,"*"->1}]&
Contoh
Max@MorphologicalComponents[#/.{"."->0,"*"->1}]&[{{".", ".", ".", ".", ".", ".", ".", ".", ".", "*", "*"}, {"*", "*", ".", ".", ".", ".", ".", ".", "*", "*", "*"}, {".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."}, {".", ".", ".", "*", ".", ".", ".", ".", ".", ".", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", "*", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", ".", "*"}}]
5
Bagaimana itu bekerja
Data dimasukkan sebagai array; di Mathematica, ini adalah daftar daftar.
Dalam larik input, data dikonversi menjadi 1dan 0oleh penggantian
/.{"."->0,"*"->1}
di mana /.bentuk infix ReplaceAlldiikuti oleh aturan penggantian. Ini pada dasarnya mengubah array menjadi gambar hitam dan putih. Yang perlu kita lakukan adalah menerapkan fungsi Image,.
Image[{{".", ".", ".", ".", ".", ".", ".", ".", ".", "*", "*"}, {"*", "*", ".", ".", ".", ".", ".", ".", "*", "*", "*"}, {".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."}, {".", ".", ".", "*", ".", ".", ".", ".", ".", ".", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", "*", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", ".", "*"}} /. {"." -> 0, "*" -> 1}]

Kotak putih sesuai dengan sel yang memiliki nilai, 1.
Gambar di bawah ini menunjukkan beberapa langkah yang digunakan pendekatan. Matriks input hanya berisi 1'dan 0'. Matriks keluaran memberi label setiap gugus morfologis dengan angka. (Saya membungkus matriks input dan output MatrixFormuntuk menyoroti struktur dua dimensi mereka.)
MorphologicalComponentsmenggantikan 1s dengan integer yang sesuai dengan nomor cluster setiap sel.

Max mengembalikan nomor cluster terbesar.
Menampilkan Kepulauan
Colorize akan mewarnai setiap pulau secara unik.
