{Kurung Kurawal}

Javascript: Menghitung jumlah Pulau

Di group facebook, ada yang bertanya seperti ini di gambar.

Meskipun pertanyaannya di group pemrograman Java, dan tentu saja saya rasa juga ekspektasi solusinya menggunakan Java, saya buatkan versi HTML/Javascript nya, toh hanya bermain algorima dengan array 2d, semua bahasa rasanya kurang lebih sama. Sajiannya sebagai berikut,

Update : Versi Java nya, ada di github.

Klik disini untuk melihatnya lebih luas.

Berikut source code algoritma utamanya

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
var Pulau = function(matrix){
    var n = matrix.length; // kita anggap baris dan kolom jumlahnya sama, kan dari 1 isian aja.
 
    function cek(i, j){
        if(i < 0 || j < 0 || i >= n || j >= n){
            return;
        }
 
        if(matrix[i][j] == 1){
            matrix[i][j] = 0;
 
            /*
                a     b     c
                d     x     e
                f     g     h
 
                posisi saat ini, ada di x
            */
 
            // posisi a
            cek(i-1,j-1);
 
            // posisi b
            cek(i, j-1);    
 
            // posisi c
            cek(i-1, j+1);
 
            // posisi d
            cek(i-1, j);
 
            // posisi e
            cek(i+1, j);
 
            // posisi f
            cek(i+1, j-1);
 
            // posisi g
            cek(i, j+1);
 
            // posisi h
            cek(i+1, j+1);
        }
    }
 
    this.jumlahPulau = function(){
        if(n < 1){
            return 0;
        }
 
        var i, j;
        var result = 0;
        for(i = 0; i < n; i++){
            for(j = 0; j < n; j++){
                if(matrix[i][j] == 1){
                    result += 1;
                    cek(i,j);
                }
            }
        }
 
        return result;
    }
};

Demikian semoga bisa berguna untuk kita semua. Source code HTML nya? Silakan klik kanan, view source.