• Tidak ada hasil yang ditemukan

Lampiran 1 Program DLV, modul pembangkitan.

N/A
N/A
Protected

Academic year: 2021

Membagikan "Lampiran 1 Program DLV, modul pembangkitan."

Copied!
13
0
0

Teks penuh

(1)

16

LAMPIRAN

(2)

17

Lampiran 1 Program DLV, modul pembangkitan.

1 arc(X,Y,1,0,0,0) v arc(X,Y,0,1,0,0) v arc(X,Y,0,0,1,0) v arc(X,Y,0,0,0,1) :-

C(X,Y,1).

2 arc(X,Y,1,1,0,0) v arc(X,Y,0,1,1,0) v arc(X,Y,0,0,1,1) v arc(X,Y,1,0,0,1) v

arc(X,Y,1,0,1,0) v arc(X,Y,0,1,0,1) :- C(X,Y,2).

3 arc(X,Y,1,1,1,0) v arc(X,Y,0,1,1,1) v arc(X,Y,1,0,1,1) v arc(X,Y,1,1,0,1) :-

C(X,Y,3).

4 arc(X,Y,0,0,0,0) :- C(X,Y,0).

5 arc(X,Y,1,0,0,0) v arc(X,Y,0,1,0,0) v arc(X,Y,0,0,1,0) v arc(X,Y,0,0,0,1) v

arc(X,Y,1,1,0,0) v arc(X,Y,0,1,1,0) v arc(X,Y,0,0,1,1) v arc(X,Y,1,0,0,1) v arc(X,Y,1,0,1,0) v arc(X,Y,0,1,0,1) v arc(X,Y,1,1,1,0) v arc(X,Y,0,1,1,1) v arc(X,Y,1,0,1,1) v arc(X,Y,1,1,0,1) v arc(X,Y,0,0,0,0) :- C(X,Y,null).

Modul ini akan membangkitkan kemungkinan solusi dengan melihat angka di dalam

cell slither link

,

baris pertama akan membangkitkan kandidat solusi untuk

cell

yang memiliki nilai 1 ditunjukkan oleh

predikat C(X,Y,1), baris kedua akan membangkitkan kandidat solusi untuk

cell

dengan nilai 2, baris

ketiga untuk

cell

dengan nilai 3, baris keempat untuk

cell

dengan nilai 0, dan baris kelima untuk

cell

dengan nilai

null

.

(3)

18

Lampiran 2 Program DLV,

constraint cell

dengan nilai 0, 1, 2, dan 3.

1 :- arc(X,Y,1,0,0,0), arc(A,Y,_,_,0,_), X=A+1.

2 :- arc(X,Y,0,1,0,0), arc(X,B,_,_,_,0), B=Y+1.

3 :- arc(X,Y,0,0,1,0), arc(A,Y,0,_,_,_), A=X+1.

4 :- arc(X,Y,0,0,0,1), arc(X,B,_,0,_,_), Y=B+1.

5 :- arc(X,Y,1,1,0,0), arc(X,B,_,_,_,0), B=Y+1.

6 :- arc(X,Y,1,1,0,0), arc(A,Y,_,_,0,_), X=A+1.

7 :- arc(X,Y,0,1,1,0), arc(X,B,_,_,_,0), B=Y+1.

8 :- arc(X,Y,0,1,1,0), arc(A,Y,0,_,_,_), A=X+1.

9 :- arc(X,Y,0,0,1,1), arc(X,B,_,0,_,_), Y=B+1.

10 :- arc(X,Y,0,0,1,1), arc(A,Y,0,_,_,_), A=X+1.

11 :- arc(X,Y,1,0,0,1), arc(X,B,_,0,_,_), Y=B+1.

12 :- arc(X,Y,1,0,0,1), arc(A,Y,_,_,0,_), X=A+1.

13 :- arc(X,Y,1,0,1,0), arc(A,Y,_,_,0,_), X=A+1.

14 :- arc(X,Y,1,0,1,0), arc(A,Y,0,_,_,_), A=X+1.

15 :- arc(X,Y,0,1,0,1), arc(X,B,_,0,_,_), Y=B+1.

16 :- arc(X,Y,0,1,0,1), arc(X,B,_,_,_,0), B=Y+1.

17 :- arc(X,Y,1,1,1,0), arc(X,B,_,_,_,0), B=Y+1.

18 :- arc(X,Y,1,1,1,0), arc(A,Y,_,_,0,_), X=A+1.

19 :- arc(X,Y,1,1,1,0), arc(A,Y,0,_,_,_), A=X+1.

20 :- arc(X,Y,0,1,1,1), arc(X,B,_,_,_,0), B=Y+1.

21 :- arc(X,Y,0,1,1,1), arc(X,B,_,0,_,_), Y=B+1.

22 :- arc(X,Y,0,1,1,1), arc(A,Y,0,_,_,_), A=X+1.

23 :- arc(X,Y,1,0,1,1), arc(A,Y,_,_,0,_), X=A+1.

24 :- arc(X,Y,1,0,1,1), arc(A,Y,0,_,_,_), A=X+1.

25 :- arc(X,Y,1,0,1,1), arc(X,B,_,0,_,_), Y=B+1.

26 :- arc(X,Y,1,1,0,1), arc(X,B,_,0,_,_), Y=B+1.

27 :- arc(X,Y,1,1,0,1), arc(X,B,_,_,_,0), B=Y+1.

28 :- arc(X,Y,1,1,0,1), arc(A,Y,_,_,0,_), X=A+1.

29 :- arc(X,Y,0,0,0,0), arc(X,B,_,_,_,1), B=Y+1.

30 :- arc(X,Y,0,0,0,0), arc(X,B,_,1,_,_), Y=B+1.

31 :- arc(X,Y,0,0,0,0), arc(A,Y,_,_,1,_), X=A+1.

32 :- arc(X,Y,0,0,0,0), arc(A,Y,1,_,_,_), A=X+1.

Bagian

B=Y+1 menandakan bahwa posisi B

ada di bawah

Y

, dan bagian

X=A+1

menandakan bahwa

posisi

X

ada di sebelah kanan

A .Baris 1 sampai baris 4 pada lampiran ini menunjukkan

constraint

untuk

cell

bernilai 1, baris 5 sampai baris 16 menunjukkan

constraint

untuk

cell

bernilai 2, dan pada

baris 17 sampai baris 28

constraint

untuk

cell

bernilai 3. Baris 29 sampai baris 32 menunjukkan

constraint

untuk

cell

bernilai 0.

(4)

19

Lampiran 3 Program DLV,

constraint

mencegah

local loop

.

1 :- arc(X,Y,1,1,0,1), arc(A,Y,0,1,1,1), A=X+1.

2 :- arc(X,Y,0,1,1,1), arc(A,Y,1,0,1,1), X=A+1.

3 :- arc(X,Y,1,1,1,0), arc(X,B,1,0,1,1), Y=B+1.

4 :- arc(X,Y,1,0,1,1), arc(X,A,1,1,1,0), A=Y+1.

5 :- arc(X,Y,1,1,1,0), arc(X,B,_,1,_,_), Y = B+1.

6 :- arc(X,Y,0,1,1,1), arc(A,Y,_,_,1,_), X = A+1.

7 :- arc(X,Y,1,0,1,1), arc(X,B,_,_,_,1), B = Y+1.

8 :- arc(X,Y,1,1,0,1), arc(A,Y,1,_,_,_), A = X+1.

Baris 1 sampai baris 4 menunjukkan

constraint

untuk mencegah sebuah

cell

memiliki nilai 4 atau

cell

tersebut memilik 4 buah garis yang mengelilinginya, dan baris 5 sampai baris 8 menunjukkan

constraint

untuk mencegah dua buah

cell

bernilai 3 yang bertetangga dan keduanya membentuk

loop.

(5)

20

Lampiran 4 Program DLV,

constraint

pada

cell

dengan posisi di pojok

grid

.

1 :- arc(1,1,1,0,0,0). 2 :- arc(1,1,0,0,0,1). 3 :- arc(1,1,0,0,1,1). 4 :- arc(1,1,1,1,0,0). 5 :- arc(1,1,1,1,1,0). 6 :- arc(1,1,0,1,1,1). 7 :- arc(1,1,0,1,0,1). 8 :- arc(1,1,1,0,1,0). 9 :- arc(1,#maxint,1,0,0,0). 10 :- arc(1,#maxint,0,1,0,0). 11 :- arc(1,#maxint,1,0,0,1). 12 :- arc(1,#maxint,1,0,1,1). 13 :- arc(1,#maxint,0,1,1,1). 14 :- arc(1,#maxint,0,1,0,1). 15 :- arc(1,#maxint,1,0,1,0). 16 :- arc(1,#maxint,0,1,1,0). 17 :- arc(#maxint,1,0,0,0,1). 18 :- arc(#maxint,1,0,0,1,0). 19 :- arc(#maxint,1,0,1,1,0). 20 :- arc(#maxint,1,1,0,0,1). 21 :- arc(#maxint,1,1,1,1,0). 22 :- arc(#maxint,1,1,1,0,1). 23 :- arc(#maxint,1,0,1,0,1). 24 :- arc(#maxint,1,1,0,1,0). 25 :- arc(#maxint,#maxint,0,1,0,0). 26 :- arc(#maxint,#maxint,0,0,1,0). 27 :- arc(#maxint,#maxint,0,0,1,1). 28 :- arc(#maxint,#maxint,1,1,0,0). 29 :- arc(#maxint,#maxint,1,0,1,1). 30 :- arc(#maxint,#maxint,1,1,0,1). 31 :- arc(#maxint,#maxint,0,1,0,1). 32 :- arc(#maxint,#maxint,1,0,1,0).

Pada baris 1 sampai baris 8 menunjukkan

constraint

untuk

cell

dengan posisi di pojok kiri atas

grid

(1,1), kemudian baris 9 sampai baris 16 adalah

constraint

untuk

cell

dengan posisi di pojok kanan atas

grid

dimana

#maxint

adalah ukuran dari

slither link

, baris selanjutnya yaitu baris 17 sampai baris 24

adalah

constraint

untuk

cell

dengan posisi di pojok kiri bawah

grid

, dan baris 25 sampai baris 32 pada

lampiran menunjukkan

constraint

untuk

cell

dengan posisi di pojok kanan bawah

grid

.

(6)

21

Lampiran 5 Program DLV,

constraint

untuk mengantisipasi cabang dan ketersambungan garis.

1 :- arc(X,Y,1,1,_,_), arc(A,B,_,_,1,_), X=A+1, B=Y+1.

2 :- arc(X,Y,1,1,_,_), arc(A,B,_,_,_,1), X=A+1, B=Y+1.

3 :- arc(X,Y,1,1,_,_), arc(X,B,1,_,_,_), B=Y+1.

4 :- arc(X,#maxint,1,1,_,_), arc(A,#maxint,_,1,_,_), X=A+1.

5 :- arc(X,Y,_,1,1,_), arc(A,B,1,_,_,_), A=X+1, B=Y+1.

6 :- arc(X,Y,_,1,1,_), arc(A,B,_,_,_,1), A=X+1, B=Y+1.

7 :- arc(X,Y,_,1,1,_), arc(X,B,_,_,1,_), B=Y+1.

8 :- arc(X,#maxint,_,1,1,_), arc(A,#maxint,_,1,_,_), A=X+1.

9 :- arc(X,Y,_,_,1,1), arc(A,B,1,_,_,_), A=X+1, Y=B+1.

10 :- arc(X,1,_,_,1,1), arc(A,1,_,_,_,1), A=X+1.

11 :- arc(X,Y,_,_,1,1), arc(A,B,_,1,_,_), A=X+1, Y=B+1.

12 :- arc(X,Y,_,_,1,1), arc(X,B,_,_,1,_), Y=B+1.

13 :- arc(X,Y,1,_,_,1), arc(A,B,_,1,_,_), X=A+1, Y=B+1.

14 :- arc(X,Y,1,_,_,1), arc(A,B,_,_,1,_), X=A+1, Y=B+1.

15 :- arc(X,Y,1,_,_,1), arc(X,B,1,_,_,_), Y=B+1.

16 :- arc(X,1,1,_,_,1), arc(A,1,_,_,_,1), X=A+1.

17 :- arc(X,Y,1,_,_,0), arc(A,B,_,M,N,_), M=N, X=A+1, Y=B+1. %kiri atas

18 :- arc(X,Y,1,0,_,_), arc(A,B,_,_,M,N), M=N, X=A+1, B=Y+1. %kanan atas

19 :- arc(1,Y,1,0,_,_), arc(1,B,0,_,_,_), B=Y+1. %atas -- kanan

20 :- arc(1,Y,1,_,_,0), arc(1,B,0,_,_,_), Y=B+1. %atas -- kiri

21 :- arc(X,#maxint,1,0,_,_), arc(A,#maxint,_,0,_,_), X=A+1. %bagian kanan -- atas

22 :- arc(X,Y,0,1,_,_), arc(A,B,_,_,M,N), M=N, X=A+1, B=Y+1. %kanan atas

23 :- arc(X,#maxint,_,1,0,_), arc(A,#maxint,_,0,_,_), A=X+1. %bagian kanan -- bawah

24 :- arc(#maxint,Y,_,1,0,_), arc(#maxint,B,_,_,0,_), B=Y+1. %bagian bawah -- kanan

25 :- arc(X,#maxint,0,1,_,_), arc(A,#maxint,_,0,_,_), X=A+1. %bagian kanan -- atas

26 :- arc(1,Y,0,1,_,_), arc(1,B,0,_,_,_), B=Y+1. %bagian atas -- kiri

27 :- arc(X,Y,_,_,1,0), arc(A,B,M,N,_,_), M=N, A=X+1, Y=B+1. %kiri bawah

28 :- arc(X,Y,_,0,1,_), arc(A,B,M,_,_,N), M=N, A=X+1, B=Y+1. %kanan bawah

29 :- arc(#maxint,Y,_,0,1,_), arc(#maxint,B,_,_,0,_), B=Y+1. %bawah -- kanan

30 :- arc(#maxint,Y,_,_,1,0), arc(#maxint,B,_,_,0,_), Y=B+1. %bawah -- kiri

31 :- arc(X,Y,0,_,_,1), arc(A,B,_,M,N,_), M=N, X=A+1, Y=B+1. %atas -- kiri

32 :- arc(X,Y,_,_,0,1), arc(A,B,M,N,_,_), M=N, A=X+1, Y=B+1. %bawah -- kiri

33 :- arc(X,1,_,_,0,1), arc(A,1,_,_,_,0), A=X+1. %samping kiri -- bawah

34 :- arc(X,1,0,_,_,1), arc(A,1,_,_,_,0), X=A+1. %samping kiri - atas

35 :- arc(X,1,1,_,_,0), arc(A,1,_,_,_,0), X=A+1. %samping kiri -- atas

36 :- arc(X,1,_,_,1,0), arc(A,1,_,_,_,0), A=X+1. %samping kiri -- bawah

37 :- arc(X,#maxint,1,0,1,0), arc(A,#maxint,_,0,_,_), arc(C,#maxint,_,0,_,_), A=X+1,

X=C+1. %samping kanan -- bawah -- atas

38 :- arc(X,1,1,0,1,0), arc(A,1,_,_,_,0), arc(C,1,_,_,_,0), A=X+1, X=C+1. %samping

kiri -- bawah -- atas

39 :- arc(#maxint,Y,0,1,0,1), arc(#maxint,B,_,_,0,_), B=Y+1. %bagian bawah -- kanan

40 :- arc(#maxint,Y,0,1,0,1), arc(#maxint,B,_,_,0,_), Y=B+1. %bagian bawah -- kiri

41 :- arc(1,Y,0,1,0,1), arc(1,B,0,_,_,_), B=Y+1. %bagian atas -- kanan

42 :- arc(1,Y,0,1,0,1), arc(1,B,0,_,_,_), Y=B+1. %bagian atas – kiri

Pada baris 1 sampai baris 16 menunjukkan

constraint

untuk mencegah terjadinya cabang pada solusi

slither link

, dan pada baris 17 sampai baris 42 menunjukkan

constraint

untuk tetap menjaga agar

solusi

slither link

merupakan sebuah garis yang kontinyu (tidak terputus).

(7)

22

Lampiran 6 Program DLV,

constraint

dari

cell

bernilai 2 yang bersebelahan dengan

cell

bernilai 0.

1 :- arc(#maxint,Y,1,0,1,0), arc(#maxint,B,0,0,0,0), Y=B+1. %bagian bawah -- kiri

2 :- arc(#maxint,Y,1,0,1,0), arc(#maxint,B,0,0,0,0), B=Y+1. %bagian bawah -- kanan

3 :- arc(#maxint,Y,0,1,0,1), arc(#maxint,B,0,0,0,0), Y=B+1. %bagian bawah -- kiri

4 :- arc(#maxint,Y,0,1,0,1), arc(#maxint,B,0,0,0,0), B=Y+1. %bagian bawah -- kanan

5 :- arc(1,Y,1,0,1,0), arc(1,B,0,0,0,0), Y=B+1. %bagian atas -- kiri

6 :- arc(1,Y,1,0,1,0), arc(1,B,0,0,0,0), B=Y+1. %bagian atas -- kanan

7 :- arc(1,Y,0,1,0,1), arc(1,B,0,0,0,0), Y=B+1. %bagian atas -- kiri

8 :- arc(1,Y,0,1,0,1), arc(1,B,0,0,0,0), B=Y+1. %bagian atas – kanan

Baris 1 sampai baris 4 pada lampiran ini ditujukan untuk

cell

dengan posisi di bagian bawah

slither

link

, dan baris 5 sampai baris 8 adalah

constraint

untuk

cell

dengan posisi di bagian atas

slither link

.

(8)

23

Lampiran 7

Pseudo code

program C++ untuk membaca fakta

slither link

.

1 Set count to 1

2 FOR each string on data.dat

3 Set titik[count] to string

4 Increment count

5 END FOR

6 Set k to 1

7 FOR each side on slither_link

8 Set line_value[k] to 3

9 END FOR

Baris 1 sampai baris 5 pada lampiran ini digunakan untuk membaca fakta yang telah disimpan dalam

file

data.dat

, dan pada bairs 6 sampai baris 9 digunakan untuk memberikan nilai

default

yaitu 3

pada setiap sisi pada

cell

.

(9)

24

Lampiran 8

Pseudo code

program C++, modul basic_rule .

1 //basic rule

2 FOR each cell in slither_link

3 IF cell_value is 0 THEN

4 Set no_line on cell is TRUE

5 ELSE IF cell_value is 1 THEN

6 IF cell_position is 1

7 Set line_value on up to 0

8 Set line_value on left to 0

9 END IF

10 ...

11 ELSE IF cell_value is 2 THEN

12 IF cell_position is 1 THEN

13 IF line_value on up is 0

14 AND line_value on left is 0 THEN

15 Set line_value on right to 1

16 Set line_value on bottom to 1

17 END IF

18 END IF

19 ...

20 ELSE IF cell_value is 3 THEN

21 IF cell_position is 1

22 Set line_value on up to 1

23 Set line_value on left to 1

24 END IF

25 ...

26 END IF

(10)

25

Lampiran 9

Pseudo code

program C++, modul advance_rule .

1 //advance_rule

2 FOR each cell in slither_link

3 IF cell_value is 1 THEN

4 IF cell_position on up THEN

5 IF line_value on up_left is 0 THEN

6 Set line_value on up to 0

7 Set line_value on left to 0

8 END IF

9 END IF

10 ....

11 ELSE IF cell_value is 2 THEN

12 IF line_value on up is 1 AND line_value on bottom is 0 THEN

13 IF line_value on right is 0 THEN

14 Set line_value on left to 1

15 ELSE IF line_value on left is 0 THEN

16 Set line_value on right to 1

17 END IF

18 END IF

19 ...

20 ELSE IF cell_value is 3 THEN

21 IF cell_position on up THEN

22 IF line_value on up_left is 0

23 Set line_value on up to 1

24 Set line_value on left to 1

25 ELSE IF line_value on up_right is 0

26 Set line_value on up to 1

27 Set line_value on right to 1

28 END IF

29 END IF

30 ...

31 END IF

(11)

26

Lampiran 10

Pseudo code

program C++, modul cek_garis_cell .

1 //cek_garis_cell

2 FOR each cell in slither_link

3 IF cell_value is 1 THEN

4 IF line_value on up is 1

5 Set line_value on right, bottom, left to 0

6 END IF

7 ELSE IF cell_value is 2 THEN

8 IF line_value on up is 1 AND line_value on right is 1 THEN

9 Set line_value on bottom, left to 0

10 END IF

11 ELSE IF cell_value is 3 THEN

12 IF line_value on up is 0 THEN

13 Set line_value on right, bottom, left to 1

14 END IF

15 END IF

(12)

27

Lampiran 11

Pseudo code

program C++, modul sambung_garis dan modul cek_cabang.

1 //sambung_garis

2 Set k to 1

3 Set n to puzzle_size

4 FOR each side on slither_link

5 IF line_value is 1

6 IF line[k] is horizontal THEN

7 IF line_value[k-n] is 0 AND line_value[k+1] is 0 THEN set

line_value[k+n+1] to 1

8 ELSE IF line_value[k+n+1] is 0 AND line_value[k+1] is 0 THEN set

line_value[k-n] to 1 9 END IF 10 END IF 11 ... 12 END IF 13 END FOR 14 //cek_cabang

15 FOR each cell in slither_link

16 IF line_value[up] is 1 AND line_value[up_right] is 1 THEN

17 Set line_value that branch to 0

18 ELSE IF line_value[up] is 1 AND line_value[up_left] is 1 THEN

19 Set line_value that branch to 0

20 ....

21 END IF

(13)

28

Lampiran 12

Pseudo code

program C++, modul cek_logic dan fungsi sambung.

1 //cek_logic

2 FOR each cell in slither_link

3 IF cell_position is 1

4 IF line_value[up_right] is 1 AND Line_value[left_bottom] is 1 THEN

5 IF line_value[up] is 0 OR Line_value[left] is 0

6 Set line_value[bottom] to 1

7 Set line_value[right] to 1

8 ElSE IF line_value[right] is 0 OR Line_value[bottom] is 0

9 Set line_value[up] to 1

10 Set line_value[left] to 1

11 END IF

12 END IF

13 ELSE IF cell_position is puzzle_size

14 IF line_value[up_left] is 1 AND Line_value[right_bottom] is 1 THEN

15 IF line_value[up] is 0 OR line_value[right] is 0 THEN

16 Set line_value[bottom] to 1

17 Set line_value[left] to 1

18 ELSE IF line_value[left] is 0 OR line_value[bottom] is 0 THEN

19 Set line_value[up] to 1 20 Set line_value[right] to 1 21 END IF 22 END IF 23 ... 24 END IF 25 END FOR 26 //fungsi sambung 27 Function sambung(puzzle_data) 28 { 29 Set status to 0 30 While status is 0

31 Do traversal until find a loop

32 IF a loop satisfy the puzzle rule THEN

33 Set status to 1

34 END IF

35 END DO

36 END WHILE

Referensi

Dokumen terkait

Pelbagai konflik yang tercitra dalam teks Ayam Jantan Ayam Betina ini adalah hasil kegagalan mengawal diri hayawani sekali gus berlaku penolakan terhadap nilai

Pusat Informasi dan Komunikasi (PIK) BPK merupakan salah satu tanggung jawab dari Subbagian Layanan Informasi, Biro Humas dan Kerja Sama Internasional BPK. PIK

Pembelajaran Qawaid menggunakan metode induktif berbasis istilah-istilah linguistik merupakan desain kolaborasi sebagai pengembangan sebuah strategi pembelajaran bahasa Arab

memberikan hasil akhir rancangan kepada mentor sesuai dengan ketentuan kegiatan aktualisasi sebagai bentuk pertanggungjawaban Rancangan SOP Penyusunan Laporan Realisasi PNBP

Tabel 4.14 Distribusi responden berdasarkan gangguan hipersensitifitas berupa keletihan konstan di daerah BTS Jamin Ginting Kelurahan Padang Bulan Kecamatan Medan Baru Kota Medan

Persentase volume dari partikel bahan pengisi lebih kecil bila dibandingkan dengan persentase berat resin komposit itu sendiri..

1) Seksi Program dan Kerjasama mempunyai tugas melakukan penyiapan bahan penyusunan program, rencana kerja dan anggaran, pelaksanaan kerja sama, dan identifikasi

a) Penelitian diharapkan dapat menambah wawasan serta pemahaman praktisi pendidikan dalam upaya mengefektifkan pembelajaran dengan penerapan pengembangan pembelajaran ASSURE