Toán học 188 185 170 115 130 46 48 ký tự
Giải trình
Trong các phiên bản trước, tôi đã tạo một biểu đồ các vị trí có khoảng cách bàn cờ là 1 với nhau. GraphComponentssau đó tiết lộ số lượng đảo, mỗi đảo một thành phần.
Phiên bản hiện tại sử dụng MorphologicalComponentsđể tìm và đánh số cụm của các cụm trong mảng - các khu vực nơi 1tiếp giáp vật lý. Bởi vì đồ thị là không cần thiết, điều này dẫn đến một nền kinh tế mã lớn.
Mã
Max@MorphologicalComponents[#/.{"."->0,"*"->1}]&
Thí dụ
Max@MorphologicalComponents[#/.{"."->0,"*"->1}]&[{{".", ".", ".", ".", ".", ".", ".", ".", ".", "*", "*"}, {"*", "*", ".", ".", ".", ".", ".", ".", "*", "*", "*"}, {".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."}, {".", ".", ".", "*", ".", ".", ".", ".", ".", ".", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", "*", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", ".", "*"}}]
5
Làm thế nào nó hoạt động
Dữ liệu được nhập vào dưới dạng một mảng; trong Mathematica, đây là danh sách các danh sách.
Trong mảng đầu vào, dữ liệu được chuyển đổi thành 1's và 0' bằng cách thay thế
/.{"."->0,"*"->1}
trong đó /.là một hình thức infix ReplaceAlltheo sau bởi các quy tắc thay thế. Điều này về cơ bản chuyển đổi các mảng thành một hình ảnh đen trắng. Tất cả chúng ta cần làm là áp dụng chức năng Image,.
Image[{{".", ".", ".", ".", ".", ".", ".", ".", ".", "*", "*"}, {"*", "*", ".", ".", ".", ".", ".", ".", "*", "*", "*"}, {".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."}, {".", ".", ".", "*", ".", ".", ".", ".", ".", ".", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", "*", "."}, {"*", ".", ".", ".", ".", ".", ".", ".", ".", ".", "*"}} /. {"." -> 0, "*" -> 1}]

Các ô vuông màu trắng tương ứng với các ô có giá trị, 1.
Hình dưới đây cho thấy một số bước tiếp cận sử dụng. Ma trận đầu vào chỉ chứa 1's và 0'. Ma trận đầu ra nhãn mỗi cụm hình thái với một số. (Tôi đã bọc cả ma trận đầu vào và đầu ra MatrixFormđể làm nổi bật cấu trúc hai chiều của chúng.)
MorphologicalComponentsthay thế 1s bằng một số nguyên tương ứng với số cụm của mỗi ô.

Max trả về số cụm lớn nhất.
Hiển thị quần đảo
Colorize sẽ tô màu mỗi hòn đảo độc đáo.
