-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTheNumberCruncher.js
90 lines (78 loc) · 2.41 KB
/
TheNumberCruncher.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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*
-------------------
The Number Cruncher
-------------------
PROBLEM
========
Disediakan sebuah function numberCruncher yang bertugas untuk menerima dua parameter
berupa array of number, dan mengembalikan array baru yang merupakan hasil perkalian angka di kedua array tersebut.
Apabila pada array pertama tidak memiliki pasangan indeks yang sama pada array kedua (atau sebaliknya) maka akan dikalikan dengan angka 0.
Kemudian, dari setiap nilai di dalam array tersebut, ambil yang nilainya ganjil, kemudian kalikan semua nilai ganjil tersebut dan return hasil perkalian ganjilnya.
Pola
----
input: [x, y, z, a, b] dan [d, e, f, g]
proses:
[
(x * d)
(y * e)
(z * f)
(a * g)
(b * 0) --> karena b tidak memiliki pasangan di array kedua
]
Contoh
-------
Input: [ 3, 5, 2 ] dan [ 7, 5, 4 ]
Proses:
=> [ (3 * 7) , (5 * 5), (2 * 4) ]
=> [ 21, 25, 8 ]
=> nilai ganjil: 21 dan 25
=> 21* 25
Output: 525
Input: [ 1, 2, 3, 2 ] dan [ 3, 5 ]
Proses:
=> [ (1 * 3), (2 * 5), (3 * 0), (2 * 0) ]
=> [ 3, 10, 0, 0 ]
=> nilai ganjil: 3
Output: 3
Input: [4, 5, 8, 2] dan [9, 1, 2, 4, 9, 2]
Proses:
=> [ 63, 5, 16, 15, 0, 0 ]
=> nilai ganjil: 63, 5, 15
=> 63 * 5 * 15
Output: 4725
RULE:
- tidak boleh menggunakan .map, .filter dan .reduce!
- tidak boleh menggunakan .eval
- WAJIB MENYERTAKAN ALGORITMA/PSEUDOCODE!
*/
function multiplyTheOdds(operand1,operand2){
//var penampung hasil kali operand1 dengan operand2 yang hasilnya ganjil
var ganjil = []
//loop untuk melakukan perkalian
for (var i = 0; i < operand1.length; i++) {
//var penampung hasil kali
var kosong = 1;
//kalau index i salah satu operand itu undifined
//maka langsung saja kasih nilai 0
if (operand1[i] === undefined || operand2[i] === undefined) {
kosong = 0
}
//perkalian operand1 dan 2
kosong *= operand1[i] * operand2[i]
//kalau hasilnya ganjil maka langsung saja sikat bro push ke array ganjil
if (kosong % 2 === 1) {
ganjil.push(kosong)
}
}
// var hasil dari pengkalian index array ganjil
var hasil = 1
//loop untuk mengkali array yang berisikan angka ganjil
for (var j = 0; j < ganjil.length; j++) {
hasil *= ganjil[j]
}
return hasil
}
console.log(multiplyTheOdds([3, 5, 2], [7, 5, 4])); //525
console.log(multiplyTheOdds([1, 2], [1])); //1
console.log(multiplyTheOdds([1, 2, 3, 2], [3, 5])); //3
console.log(multiplyTheOdds([7, 5, 8, 3], [9, 1, 2, 5, 9, 2])); //4725