Mathematica 188 185 170 115 130 46 48 karakter
açıklama
Daha önceki sürümlerde, birbirlerinden 1'er satranç tahtası olan bir pozisyon grafiği çizdim. GraphComponentsdaha sonra, her bileşen için bir tane olan ada sayısını ortaya çıkardı.
Bu sürüm , fiziksel olarak bitişik MorphologicalComponentsolan dizi bölgelerindeki kümeleri bulmak ve numaralandırmak için kullanılır 1. Grafikleme gereksiz olduğundan, bu büyük bir kod ekonomisi ile sonuçlanır.
kod
Max@MorphologicalComponents[#/.{"."->0,"*"->1}]&
Örnek
Max@MorphologicalComponents[#/.{"."->0,"*"->1}]&[{{".", ".", ".", ".", ".", ".", ".", ".", ".", "*", "*"}, {"*", "*", ".", ".", ".", ".", ".", ".", "*", "*", "*"}, {".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."}, {".", ".", ".", "*", ".", ".", ".", ".", ".", ".", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", "*", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", ".", "*"}}]
5
Nasıl çalışır
Veri dizi olarak girildi; Mathematica'da, bu listelerin bir listesidir.
Giriş dizisinde, veriler değiştirme ile 1've 0' lere dönüştürülür.
/.{"."->0,"*"->1}
burada /.bir çatı ve çatı formudur ReplaceAlldeğiştirme kuralları takip eder. Bu esas olarak diziyi siyah beyaz bir resme dönüştürür. Yapmamız gereken tek şey fonksiyonu uygulamak Image.
Image[{{".", ".", ".", ".", ".", ".", ".", ".", ".", "*", "*"}, {"*", "*", ".", ".", ".", ".", ".", ".", "*", "*", "*"}, {".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."}, {".", ".", ".", "*", ".", ".", ".", ".", ".", ".", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", "*", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", ".", "*"}} /. {"." -> 0, "*" -> 1}]

Beyaz kareler 1 değerine sahip hücrelere karşılık gelir.
Aşağıdaki resimde, yaklaşımın kullandığı bazı adımlar gösterilmektedir. Giriş matrisi sadece 1's ve 0' ler içerir. Çıktı matrisi, her morfolojik kümeyi bir sayı ile etiketler. (Hem girdi hem de çıktı matrislerini MatrixFormiki boyutlu yapılarını vurgulamak için içine sardım.)
MorphologicalComponents1s'yi, her hücrenin küme numarasına karşılık gelen bir tamsayı ile değiştirir .

Max en büyük küme numarasını döndürür.
Adaların görüntülenmesi
Colorize Her adayı benzersiz şekilde renklendirir.
