Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions quiz/part1/soal1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
//cek apakah angka yang dikirim adalah angka prima atau bukan?
//cek google bagi yang ga tau apa itu angka prima
function angkaPrima(angka) {
// you can only write your code here!
if (angka < 2) return false;
if (angka <= 3) return true;
if (angka % 2 === 0) return false;
if (angka % 3 === 0) return false;
return true;
}

// TEST CASES
console.log(angkaPrima(3)); // true
console.log(angkaPrima(7)); // true
console.log(angkaPrima(6)); // false
console.log(angkaPrima(23)); // true
console.log(angkaPrima(33)); // false
27 changes: 27 additions & 0 deletions quiz/part1/soal2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
//cari faktor persekutuan terbesar
function fpb(angka1, angka2) {
// you can only write your code here!
let angka_terkecil = null;
let angka_terbesar = null;
// cari angka terbesar
if (angka1 < angka2) {
angka_terkecil = angka1;
angka_terbesar = angka2;
}
if (angka1 > angka2) {
angka_terkecil = angka2;
angka_terbesar = angka1;
}
if (angka1 === angka2) return angka1;

for (let i = angka_terkecil; i > 0; i--) {
if ((angka_terkecil % i === 0) && (angka_terbesar % i === 0)) return i;
}
}

// TEST CASES
console.log(fpb(12, 16)); // 4
console.log(fpb(50, 40)); // 10
console.log(fpb(22, 99)); // 11
console.log(fpb(24, 36)); // 12
console.log(fpb(17, 23)); // 1
23 changes: 23 additions & 0 deletions quiz/part1/soal3.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
function cariMedian(arr) {
// you can only write your code here!

let sorted_array = arr.sort((a, b) => a - b);

if (sorted_array.length % 2 === 1) return sorted_array[Math.floor(sorted_array.length / 2)];

let result = 0;


let angka_setelah_tengah = Math.round(sorted_array.length / 2);
let angka_sebelum_tengah = Math.round(sorted_array.length / 2) - 1;
result = (sorted_array[angka_setelah_tengah] + sorted_array[angka_sebelum_tengah]) / 2;

return result;
}

// TEST CASES
console.log(cariMedian([1, 2, 3, 4, 5])); // 3
console.log(cariMedian([1, 3, 4, 10, 12, 13])); // 7
console.log(cariMedian([3, 4, 7, 6, 10])); // 6
console.log(cariMedian([1, 3, 3])); // 3
console.log(cariMedian([7, 7, 8, 8])); // 7.5
48 changes: 48 additions & 0 deletions quiz/part1/soal4.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/*
Diberikan sebuah function cariModus(arr) yang menerima sebuah array angka. Function akan me-return modus dari array atau deret angka tersebut. Modus adalah angka dari sebuah deret yang paling banyak atau paling sering muncul. Contoh, modus dari [10, 4, 5, 2, 4] adalah 4. Jika modus tidak ditemukan, function akan me-return -1. Apabila ditemukan lebih dari dua nilai modus, tampilkan nilai modus yang paling pertama muncul (dihitung dari kiri ke kanan). Dan apabila dialam modus hanya ada 1 nilai yang sama maka function akan me-return -1, Contohnya [1, 1, 1] adalah -1.
*/
function cariModus(arr) {
// you can only write your code here!
let kumpulan_angka = {};
let n_max = 1;
let modus = null;

// kelompokkan angka kedalam objek kumpulan angka
for (n of arr) {
kumpulan_angka[n] = (kumpulan_angka[n] || 0) + 1;
if (n_max < kumpulan_angka[n]) {
n_max = kumpulan_angka[n];
}
}

// jika kumpulan angka kurang dari 2 maka return -1
// kemungkinan karena angka dalam array sama semua atau tidak ada angka sama sekali
if (Object.keys(kumpulan_angka).length < 2) return -1;

// jika n max masih 1 berarti tidak ada modus yang ditemukan dalam array
if (n_max === 1) return -1;

// filter kumpulan angka agar hanya tersisa kumpulan angka modus saja
for (const key in kumpulan_angka) {
if (kumpulan_angka[key] < n_max) delete kumpulan_angka[key];
}

// dari kumpulan angka modus itu tentukan modus yang pertama kali ditemukan dalam array
for (const n of arr) {
for (const key in kumpulan_angka) {
if (+key === n) {
modus = n;
break;
}
}
}

return modus;
}

// TEST CASES
console.log(cariModus([10, 4, 5, 2, 4])); // 4
console.log(cariModus([5, 10, 10, 6, 5])); // 5
console.log(cariModus([10, 3, 1, 2, 5])); // -1
console.log(cariModus([1, 2, 3, 3, 4, 5])); // 3
console.log(cariModus([7, 7, 7, 7, 7])); // -1
49 changes: 49 additions & 0 deletions quiz/part1/soal5.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
//sistem ubah hurufnya misal huruf a diubah menjadi b, c menjadi d, b menjadi c, z menjadi a
//intinya ubah huruf menjadi huruf setelahnya
function ubahHuruf(kata) {
// you can only write your code here!
let result = "";

let abjad = [
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"l",
"m",
"n",
"o",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"x",
"y",
"z",
];

for (let i = 0; i < kata.length; i++) {
let huruf_setelah_kata_i = ((abjad.indexOf(kata[i]) + 1) === abjad.length) ? abjad[0] : abjad[abjad.indexOf(kata[i]) + 1];
result += huruf_setelah_kata_i;
}

return result;
}

// TEST CASES
console.log(ubahHuruf('wow')); // xpx
console.log(ubahHuruf('developer')); // efwfmpqfs
console.log(ubahHuruf('javascript')); // kbwbtdsjqu
console.log(ubahHuruf('keren')); // lfsfo
console.log(ubahHuruf('semangat')); // tfnbohbu
55 changes: 55 additions & 0 deletions quiz/part2/soal1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
/*
Diberikan sebuah function digitPerkalianMinimum(angka) yang menerima satu parameter angka. Function akan mengembalikan jumlah digit minimal dari angka yang merupakan faktor angka parameter tersebut, Contoh, jika angka adalah 24, maka faktornya adalah 1 * 24, 2 * 12, 3 * 8, dan 4 * 6. Dari antara faktor tersebut, yang digit nya paling sedikit adalah 3 * 8 atau 4 * 6, sehingga function akan me-return 2.

1 * 24 = 3 digit (124)
3 * 8 = 2 digit (38)
4 * 6 = 2 digit (46)

karena dibawah ini 2 digit dan terkecil
3 * 8 = 2 digit (38)
4 * 6 = 2 digit (46)

ya jadikan dia minimum

misal faktronya angka 1 hanyalah
1*1 = 2 digit (11)

Return 2
*/
function digitPerkalianMinimum(angka) {
// you can only write your code here!
let digit_perkalian = [`1${angka}`];


// temukan beberapa kombinasi perkalian yang bisa jadi faktor dari angka
for (let i = 2; i < angka; i++) {
// jika i bisa membagi habis angka artinya i adalah salah satu faktor dari angka
if (angka % i === 0) {
let pengali = `${angka / i}`;

// jika kombinasi perkalian sudah pernah ada maka tidak perlu ditambahkan lagi
if (i > pengali) break;

// masukkan kombinasi perkalian ke array digit perkalian sebagai string
digit_perkalian.push(`${i}${pengali}`);
}
}

// cari digit terkecil dalam setiap perkalian
let digit_terkecil = digit_perkalian[0].length;
for (const value of digit_perkalian) {
if (digit_terkecil === 2) break;
if (digit_terkecil < value.length) continue;
digit_terkecil = value.length;
}

// return digit terkecil dari string kombinasi perkalian faktor angka
return digit_terkecil;
}

// TEST CASES
console.log(digitPerkalianMinimum(24)); // 2
console.log(digitPerkalianMinimum(90)); // 3
console.log(digitPerkalianMinimum(20)); // 2
console.log(digitPerkalianMinimum(179)); // 4
console.log(digitPerkalianMinimum(1)); // 2
78 changes: 78 additions & 0 deletions quiz/part2/soal2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
//DILARANG MENGGUNAKAN METHOD SORT, PELAJARI ALGORITMA SORTING YANG ADA DI GOOGLE
//saran sih pake bubblesort walau tidak efisien tapi bagus buat belajar sorting
function urutkanAbjad(str) {
// you can only write your code here!
let sorted_array = [];

let abjad = [
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"l",
"m",
"n",
"o",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"x",
"y",
"z",
];

// konversi huruf yang ada di str jadi array berisi urutan setiap huruf dalam abjad
let num_str = [];
for (let j = 0; j < str.length; j++) {
num_str.push(abjad.indexOf(str[j]));
}

// proses sorting
let dup_num_str = num_str.slice();
for (let i = 0; i < num_str.length; i++) {
let urutan_terkecil_terakhir = 0;

// susun setiap data yang ada di dup_num_str kedalam sorted_array secara ascending
for (let j = 0; j < dup_num_str.length; j++) {
if (sorted_array[i] > dup_num_str[j]) {
sorted_array[i] = dup_num_str[j];
urutan_terkecil_terakhir = j;
continue;
}
if (sorted_array[i] === undefined) {
sorted_array.push(dup_num_str[j]);
}
}

// hapus angka terkecil yang terakhir ditemukan di dum_num_str
dup_num_str.splice(urutan_terkecil_terakhir, 1);
}

// konversi angka urutan huruf dalam sorted_array jadi abjad
for (let index in sorted_array) {
sorted_array[index] = abjad[sorted_array[index]];
}

// return sorter_array yang awalnya array berisi urutan setiap huruf
// jadi satu kata utuh dengan join("")
return sorted_array.join("");
}

// TEST CASES
console.log(urutkanAbjad('hello')); // 'ehllo'
console.log(urutkanAbjad('truncate')); // 'acenrttu'
console.log(urutkanAbjad('developer')); // 'deeeloprv'
console.log(urutkanAbjad('software')); // 'aeforstw'
console.log(urutkanAbjad('aegis')); // 'aegis'
22 changes: 22 additions & 0 deletions quiz/part2/soal3.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
//TIPS: gunakan method toUpperCase() dan toLowerCase()
function tukarBesarKecil(kalimat) {
// you can only write your code here!
const new_kalimat = kalimat.split("");

for (let key in new_kalimat) {
// kalo cuma spasi yaudah skip aja
if (new_kalimat[key] === " ") continue;

// kalo huruf besar ganti jadi kecil, kalo kecil ganti jadi besar
new_kalimat[key] = (new_kalimat[key] === new_kalimat[key].toUpperCase()) ? new_kalimat[key].toLowerCase() : new_kalimat[key].toUpperCase();
}

return new_kalimat.join("");
}

// TEST CASES
console.log(tukarBesarKecil('Hello World')); // "hELLO wORLD"
console.log(tukarBesarKecil('I aM aLAY')); // "i Am Alay"
console.log(tukarBesarKecil('My Name is Bond!!')); // "mY nAME IS bOND!!"
console.log(tukarBesarKecil('IT sHOULD bE me')); // "it Should Be ME"
console.log(tukarBesarKecil('001-A-3-5TrdYW')); // "001-a-3-5tRDyw"
40 changes: 40 additions & 0 deletions quiz/part2/soal4.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
/*
Diberikan sebuah function checkAB(str) yang menerima satu parameter berupa string. function tersebut mengembalikan nilai true jika di dalam string tersebut terdapat karakter a dan b yang memiliki jarak 3 karakter lain minimal satu kali. Jika tidak ditemukan sama sekali, kembalikan nilai false. Jarak bisa dari a ke b, atau b ke a.

contoh:
barbarian kenapa bisa true?
karena di bagian 'barian' terdapat b dipisah 3 karakter ari(totalnya 3) dan ketemu a

Spasi juga dianggap sebagai karakter
*/

function checkAB(num) {
// you can only write your code here!
let AB = ["a", "b"];

// cari di seluruh digit num apakah ada 'a' atau 'b'
for (let i = 0; i < num.length; i++) {
// kalo dia 'a' maka cek 4 digit kedepan dan kebelakang apakah ada 'b'
// kalo ada maka return true
if (num[i].toLowerCase() === AB[0]) {
if ((num[i + 4] === AB[1])) return true;
if ((num[i - 4] === AB[1])) return true;
}
// kalo dia 'b' maka cek 4 digit kedepan dan kebelakang apakah ada 'a'
// kalo ada maka return true
else if ((num[i].toLowerCase() === AB[1])) {
if ((num[i - 4] === AB[0])) return true;
if ((num[i - 4] === AB[0])) return true;
}
}

// kalo nggk ada AB yang berjarak 3 digit yaudah return false
return false;
}

// TEST CASES
console.log(checkAB('lane borrowed')); // true
console.log(checkAB('i am sick')); // false
console.log(checkAB('you are boring')); // true
console.log(checkAB('barbarian')); // true
console.log(checkAB('bacon and meat')); // false
Loading