using System.Collections.Generic;
public static int[][] map = new int[][] {
public static void Main()
var islands = new List<Island>();
var island = new Island();
for(var r =0; r < map.Length; r++){
for(var c = 0; c < map.Length; c++){
AddCoordinate(island, r,c);
Console.WriteLine("The number of islands is "+islands.Count() +":");
for(var i =0; i < islands.Count(); i++){
var coordinates = string.Join(",", islands[i].Coordinates.Select(c => "("+c.Latitude+", "+c.Longitude+")"));
Console.WriteLine("Island #"+i+" = ["+coordinates+"]");
public static void AddCoordinate(Island island, int r, int c){
island.Coordinates.Add(new Coordinate(r,c));
AddCoordinate(island, oneUp,c);
AddCoordinate(island, r,oneLeft);
if(map.Length > oneDown &&
AddCoordinate(island, oneDown,c);
if(map[r].Length > oneRight &&
AddCoordinate(island, r,oneRight);
if(oneUp >= 0 && oneLeft >= 0 &&
map[oneUp][oneLeft] == 1){
AddCoordinate(island, oneUp,oneLeft);
if(oneUp >= 0 && map[r].Length > oneRight &&
map[oneUp][oneRight] == 1){
AddCoordinate(island, oneUp,oneRight);
if(map.Length > oneDown && map[r].Length > oneRight &&
map[oneDown][oneRight] == 1){
AddCoordinate(island, oneDown,oneRight);
if(map.Length > oneDown && oneLeft >= 0 &&
map[oneDown][oneLeft] == 1){
AddCoordinate(island, oneDown,oneLeft);
Coordinates = new List<Coordinate>();
public List<Coordinate> Coordinates {get;set;}
public Coordinate(int lat, int lon){
public int Latitude {get;set;}
public int Longitude {get;set;}