Skip to content

Commit

Permalink
Selesai Number Monsternya
Browse files Browse the repository at this point in the history
  • Loading branch information
harkon666 committed Nov 30, 2019
1 parent dfaea58 commit b0371dc
Show file tree
Hide file tree
Showing 5 changed files with 419 additions and 0 deletions.
79 changes: 79 additions & 0 deletions GetPrime.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
/*
PROBLEM
=======
Bilangan prima adalah sebuah bilangan dimana hanya bisa habis dibagi oleh angka 1 dan angka itu sendiri.
Contoh:
7 adalah bilangan prima, karena hanya habis dibagi angka 1 dan 7.
22 bukan bilangan prima, karena habis dibagi 1, 2, 11, dan 22.
Deret bilangan prima
2, 3, 5, 7, 11, 13, 17, 19, 23, dst
Buatlah sebuah function getPrime dimana menerima sebuah parameter bertipe Number.
Function tersebut mengembalikan/me-return array kumpulan deret bilangan prima sampai parameter tersebut.
Contoh 1:
input: 10
output: [ 2, 3, 5, 7 ]
//karena di-range angka 10 hanya bilangan 2, 3, 5 dan 7 saja yang merupakan bilangan prima
Contoh 2:
input: 44
output: [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43 ]
// karena di-range angka 44 hanya bilangan di atas saja yang merupakan bilangan prima
RULES:
- wajib membuat algoritma/pseudocode untuk program getPrime
note: pastikan tidak menggunakan sintaks javascript, tapi fokus ke logika
REMINDER ABOUT PSEUDOCODE
=========================
Contoh Pseudocode yang Kurang Tepat (tidak ada hubungan dengan soal):
var num
for i = 0 , i < 8, i++
if i = 5
num++
Contoh Pseudocode yang Benar (tidak ada hubungan dengan soal):
STORE num with any value
WHILE i < 8
IF i equals to 5
ADD num by 1
*/

function getPrime(num) {
// sebagai penampung angka prima
var prima = []

//loop untuk mengecek apakah angka itu prima atau bukan
for (var i = 1; i <= num; i++) {
// sebagai pengecekan angka prima
var check = 0
for (var j = i; j > 0; j--) {
//kalau i dimodulus angka j = 0
// tambah check dengan 1
if (i % j === 0) {
check += 1;
}
}

//kalau var check berjumlah 2 maka itu sudah dipastikan bilangan prima
if (check === 2) {
prima.push(i)
}
}
return prima
}


console.log(getPrime(10)); // [ 2, 3, 5, 7 ]
console.log(getPrime(23)); // [ 2, 3, 5, 7, 11, 13, 17, 19, 23 ]
console.log(getPrime(44)); // [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43 ]
console.log(getPrime(1)); // []
console.log(getPrime(0)); // []
71 changes: 71 additions & 0 deletions Prime.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
/*
Diberikan sebuah function prime yang menerima satu parameter bertipe number.
Output dari function ini adalah mengembalikan sebuah nilai prima yang merupakan
deret dari input parameter
CASE 1
========
input: 3
output: 5
proses:
angka 1 bukan prima
angka 2 adalah prima -> deret ke-1 bilangan prima
angka 3 adalah prima -> deret ke-2 bilangan prima
angka 4 bukan prima
angka 5 adalah prima -> deret ke-3 bilangan prima
maka output adalah 5 karena merupakan bilangan deret ke-3 prima
CASE 2
=========
input: 6
output:
proses:
angka 1 bukan bilangan prima
angka 2 adalah bilangan prima -> deret ke-1 bilangan prima
angka 3 adalah bilangan prima -> deret ke-2 bilangan prima
angka 4 bukan bilangan prima
angka 5 adalah bilangan prima -> deret ke-3 bilangan prima
angka 6 bukan bilangan prima
angka 7 adalah bilangan prima -> deret ke-4 bilangan prima
angka 8 bukan bilangan prima
angka 9 bukan bilangan prima
angka 10 bukan bilangan prima
angka 11 adalah bilangan prima -> deret ke-5 bilangan prima
angka 12 bukan bilangan prima
angka 13 adalah bilangan prima -> deret ke-6 bilangan prima
maka output adalah 13 karena merupakan bilangan deret ke-6 prima
*/
function check(num) {
}
function prime(num) {
var kosong = num
var prima = 0
for (var i = 1; i <= kosong++; i++ ) {
var check = 0
for (var j = i; j >= 1; j--) {
if (i % j === 0) {
check++
}
}
if (check === 2) {
prima++
}
if (prima === num) {
return i
}
}
}


console.log(prime(3)); //5
console.log(prime(4)); //7
console.log(prime(13)); //41
console.log(prime(110)); //601
console.log(prime(666)); //4973
90 changes: 90 additions & 0 deletions TheNumberCruncher.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,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
83 changes: 83 additions & 0 deletions TugOfWar.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
/*
=============
TUG OF WAR WINNER
=============
Name :_____________
[INSTRUCTIONS]
Tug of War adalah sebuah function yang menerima string sebagai tarik tambang antara 2 belah pihak
Kamu harus bisa menentukan pemenang dari permainan tarik tambang ini dengan cara mengukur kekuatan setiap pemain
Kekuatan pemain ada 3 Level
- A = 1
- B = 2
- C = 3
Sisi dengan kekuatan terbanyak akan menang dan jika kekuatannya sama maka hasilnya akan draw
[CONSTRAINTS]
Tidak ada batasan untuk soal ini.
[EXAMPLE]
tugOfWar('ABCA--V--ABCC')
Skor team kiri: 7
Skor team kanan: 9
output: Team KANAN Menang!
[Tulis PSEUDOCODE di bawah ini]
akan ada dua tim, var power1 sebagai tim kiri dan var power2 sebagai tim kanan
akan ada var temp yang berisikan RegEx yang akan menampilkan array bila ada huruf UpperCase A-Z lebih dari 1 index
lalu saya menggunakan loop untuk melakukan penjumlahan power disetiap tim
setelah mendapatkan total power kedua tim tinggal di compare
kalau power1 lebih dari power2 maka tim kiri menang sebaliknya tim kanan menang
kalau kedua tim memiliki power sama maka akan mereturn DRAW
kalau var temp menghasilkan nilai Null maka akan mereturn NO PLAYERS
*/

function tugOfWar(sentence) {
var power1 = 0
var power2 = 0
var temp = sentence.match(/[A-Z]\w+/g)

if (temp === null) {
return 'NO PLAYERS'
}

for (var i = 0; i < temp.length; i++ ) {
for (var j = 0; j < temp[i].length; j++) {
if (i === 0) {
if (temp[i][j] === 'A') {
power1 += 1
} else if (temp[i][j] === 'B') {
power1 += 2
} else if (temp[i][j] === 'C') {
power1 += 3
}
} else if (i === 1) {
if (temp[i][j] === 'A') {
power2 += 1
} else if (temp[i][j] === 'B') {
power2 += 2
} else if (temp[i][j] === 'C') {
power2 += 3
}
}
}
}

if (power1 > power2) {
return 'Team Kiri Menang!'
} else if (power1 < power2) {
return 'Team Kanan Menang!'
} else if (power1 === power2) {
return 'DRAW'
}

}


console.log(tugOfWar('ABCA--V--ABCC')); // "Team KANAN Menang!"
console.log(tugOfWar('CC--V--AAAA')); // "Team Kiri Menang!"
console.log(tugOfWar('BBBB--V--CCC')); // "Team KANAN Menang!"
console.log(tugOfWar('AAAA--V--CA')); // 'DRAW'
console.log(tugOfWar('--V--')); // 'NO PLAYERS'
Loading

0 comments on commit b0371dc

Please sign in to comment.