-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtargetTerdekat.js
62 lines (48 loc) · 2.29 KB
/
targetTerdekat.js
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
/*
Problem
Diberikan sebuah function targetTerdekat(arr) yang menerima satu parameter berupa array yang terdiri dari karakter. Function akan me-return jarak spasi antar karakter 'o' dengan karakter 'x' yang terdekat. Contoh, jika arr adalah ['x', ' ', 'o', ' ', ' ', 'x'], maka jarak terdekat dari 'o' ke 'x' adalah 2. Jika tidak ditemukan 'x' sama sekali, function akan me-return nilai 0.
4 PROBABILITY THAT WILL HAPPEN:
* ada X sebelum O && ada X setelah O >>> ada 2 selisih jarak X-O. compare mana yg lebih dekat
* ada X sebelum O && tidak ada X setelah O >>> selisih jarak X-O = negatif(X-O<0)
* tidak ada X sebelum O && ada X setelah O >>> selisih jarak X-O = positif
* tidak ada X setelah O && tidak ada X setelah O >>> X-O = -1
*/
function targetTerdekat(arr) {
var posisiO = arr.indexOf('o')
var posisiX = arr.indexOf('x')
if (posisiX - posisiO > 0) {
return posisiX - posisiO
} else if (posisiX === -1) {
return 0
} else if (posisiX - posisiO < 0) {
var setelahO = arr.splice(posisiO, targetTerdekat.length - posisiO)
var posisiX2 = setelahO.indexOf('x')
if (posisiX2 === -1) {
return -posisiX
} else if (posisiX2 > 0) {
if (-posisiX < posisiX2) {
return -posisiX
} else {
return posisiX2
}
}
} else {
return 0
}
}
// TEST CASES
console.log(targetTerdekat(['', '', 'o', '', '', 'x', '', 'x'])); // 3
console.log(targetTerdekat(['o', '', '', '', 'x', 'x', 'x'])); // 4
console.log(targetTerdekat(['x', '', '', '', 'x', 'x', 'o', ''])); // 1
console.log(targetTerdekat(['', '', 'o', ''])); // 0
console.log(targetTerdekat(['', 'o', '', 'x', 'x', '', '', 'x'])); // 2
console.log(targetTerdekat(['x', '', 'o', '']))
// function targetTerdekat(arr) {
// return arr.indexOf('x') - arr.indexOf('o') > 0 ? arr.indexOf('x') - arr.indexOf('o') : (arr.length - 1) + (arr.indexOf('x') - arr.indexOf('o'));
// }
// // TEST CASES
// console.log(targetTerdekat(['', '', 'o', '', '', 'x', '', 'x'])); // 3
// console.log(targetTerdekat(['o', '', '', '', 'x', 'x', 'x'])); // 4
// console.log(targetTerdekat(['x', '', '', '', 'x', 'x', 'o', ''])); // 1
// console.log(targetTerdekat(['', '', 'o', ''])); // 0
// console.log(targetTerdekat(['', 'o', '', 'x', 'x', '', '', 'x'])); // 2