-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
419 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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)); // [] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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' |
Oops, something went wrong.