Skip to content
21 changes: 21 additions & 0 deletions quiz/part1/soal1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
//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 <= 1 ) {
return false;
}
for(let i = 2; i < angka; i++){
if(angka % i === 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
22 changes: 22 additions & 0 deletions quiz/part1/soal2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
//cari faktor persekutuan terbesar
function fpb(angka1, angka2) {
// you can only write your code here!
let smallest = 0;
if (angka1 > angka2) {
smallest = angka2
} else {
smallest = angka1
}
for (let i = smallest; smallest > 0; smallest--){
if(angka1 % smallest === 0 && angka2 % smallest === 0){
return smallest;
}
}
}

// 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
27 changes: 27 additions & 0 deletions quiz/part1/soal3.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
function cariMedian(arr) {
// you can only write your code here!
for(let i = 0; i < arr.length; i++) {
if(arr[i] > arr[i + 1]){
arr.splice(i, 2, arr[i + 1], arr[i]);
}
}

let median = 0;

if(arr.length % 2 === 0) {
let midNum1 = arr[(arr.length / 2) - 1];
let midNum2 = arr[(arr.length / 2)];
median = (midNum1 + midNum2) / 2;
} else {
median = arr[Math.floor(arr.length / 2)];
}

return median;
}

// 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
34 changes: 34 additions & 0 deletions quiz/part1/soal4.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
/*
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 modus;
let maxCount = 0;
for (let i = 0; i < arr.length; i++) {
let count = 0;
for (let i2 = 0; i2 < arr.length; i2++) {
if(arr[i] === arr[i2]) {
count++
}
}

if (maxCount < count ) {
maxCount = count;
modus = arr[i];
}
if(maxCount === 1) {
modus = -1
} else if (maxCount === arr.length) {
modus = -1
}
}
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
22 changes: 22 additions & 0 deletions quiz/part1/soal5.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
//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 alphabet = "abcdefghijklmnopqrstuvwxyz";
let newKata = "";
for (let i = 0; i < kata.length; i++) {
for(let i2 = 0; i2 < alphabet.length; i2++) {
if(kata[i] === alphabet[i2]) {
newKata += alphabet[i2 + 1];
}
}
}
return newKata;
}

// 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
35 changes: 35 additions & 0 deletions quiz/part2/soal1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/*
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 = 0;
while (angka % 2 === 0) {
angka = angka / 2;
}
angka = angka.toString();
digit = parseInt(angka.length + 1);
return digit;
}

// 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
23 changes: 23 additions & 0 deletions quiz/part2/soal2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
//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 newStr = str.split('');
for (let i = 0; i < newStr.length - 1; i++) {
for (let i2 = 0; i2 < newStr.length - i - 1; i2++) {
if (newStr[i2] > newStr[i2 + 1]) {
let switchedChar = newStr[i2];
newStr[i2] = newStr[i2 + 1];
newStr[i2 + 1] = switchedChar;
}
}
}
return newStr.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'
21 changes: 21 additions & 0 deletions quiz/part2/soal3.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
//TIPS: gunakan method toUpperCase() dan toLowerCase()
function tukarBesarKecil(kalimat) {
// you can only write your code here!
let newKalimat = kalimat.split('')
for(let i = 0; i < newKalimat.length; i++) {
if(newKalimat[i] === newKalimat[i].toUpperCase()) {
newKalimat[i] = newKalimat[i].toLowerCase();
} else {
newKalimat[i] = newKalimat[i].toUpperCase();
}
}

return newKalimat.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"
29 changes: 29 additions & 0 deletions quiz/part2/soal4.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
/*
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 arr = num.split('');
for(let i = 0; i < arr.length; i++) {
if(arr[i] === "a") {
if(arr[i - 4] === "b" || arr[i + 4] === "b") {
return true;
}
}
}
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
36 changes: 36 additions & 0 deletions quiz/part3/soal1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
function changeMe(arr) {
// you can only write your code here!
if(arr.length === 0 ) {
return console.log('""');
}

for (let i = 0; i < arr.length; i++) {
if(!arr[i][3]) {
arr[i][3] = "Invalid Birth Year";
} else {
arr[i][3] = 2025 - arr[i][3];
}
let person = {
firstName: arr[i][0],
lastName: arr[i][1],
gender: arr[i][2],
age: arr[i][3],
}
console.log(`${person.firstName} ${person.lastName}:`, person);
}
}

// TEST CASES
changeMe([['Christ', 'Evans', 'Male', 1982], ['Robert', 'Downey', 'Male']]); // 1. Christ Evans:
// Christ Evans: { firstName: 'Christ',
// lastName: 'Evans',
// gender: 'Male',
// age: 41 } 2023 - 1982 = 41 kan yak wkwk
// Robert Downey: { firstName: 'Robert',
// lastName: 'Downey',
// gender: 'Male',
// age: 'Invalid Birth Year' }

//intinya bagaimana cara kalian bisa menampilkan output diatas, sebebas dan sekreatif kalian.

changeMe([]); // ""
77 changes: 77 additions & 0 deletions quiz/part3/soal2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
/*
Diberikan sebuah function shoppingTime(memberId, money) yang menerima dua parameter berupa string dan number. Parameter pertama merupakan memberId dan parameter ke-2 merupakan value uang yang dibawa oleh member tersebut.

Toko X sedang melakukan SALE untuk beberapa barang, yaitu:

Sepatu brand Stacattu seharga 1500000
Baju brand Zoro seharga 500000
Baju brand H&N seharga 250000
Sweater brand Uniklooh seharga 175000
Casing Handphone seharga 50000
Buatlah function yang akan mengembalikan sebuah object dimana object tersebut berisikan informasi memberId, money, listPurchased dan changeMoney.

Jika memberId kosong maka tampilkan "Mohon maaf, toko X hanya berlaku untuk member saja"
Jika uang yang dimiliki kurang dari 50000 maka tampilkan "Mohon maaf, uang tidak cukup"
Member yang berbelanja di toko X akan membeli barang yang paling mahal terlebih dahulu dan akan membeli barang-barang yang sedang SALE masing-masing 1 jika uang yang dimilikinya masih cukup.
Contoh jika inputan memberId: '324193hDew2' dan money: 700000

maka output:

{ memberId: '324193hDew2', money: 700000, listPurchased: [ 'Baju Zoro', 'Sweater Uniklooh' ], changeMoney: 25000 }
*/

function shoppingTime(memberId, money) {
// you can only write your code here!
if (!memberId) {
return "Mohon maaf, toko X hanya berlaku untuk member saja";
} else if (money < 50000) {
return "Mohon maaf, uang tidak cukup";
}

let onSale = [
{ name: "Sepatu Statcattu", price: 1500000 },
{ name: "Baju Zoro", price: 500000 },
{ name: "Baju H&N", price: 250000 },
{ name: "Sweater Uniklooh", price: 175000 },
{ name: "Casing Handphone", price: 50000 },
];

let changeMoney = money;
let purchased = [];
for (let i = 0; i < onSale.length; i++) {
if (money > onSale[i].price) {
changeMoney -= onSale[i].price;
purchased.push(onSale[i].name);
}
}

let receipt = {
memberId: memberId,
money: money,
listPurchased: purchased,
changeMoney: changeMoney
};

return receipt;
}

// TEST CASES
console.log(shoppingTime('1820RzKrnWn08', 2475000));
//{ memberId: '1820RzKrnWn08',
// money: 2475000,
// listPurchased:
// [ 'Sepatu Stacattu',
// 'Baju Zoro',
// 'Baju H&N',
// 'Sweater Uniklooh',
// 'Casing Handphone' ],
// changeMoney: 0 }
console.log(shoppingTime('82Ku8Ma742', 170000));
//{ memberId: '82Ku8Ma742',
// money: 170000,
// listPurchased:
// [ 'Casing Handphone' ],
// changeMoney: 120000 }
console.log(shoppingTime('', 2475000)); //Mohon maaf, toko X hanya berlaku untuk member saja
console.log(shoppingTime('234JdhweRxa53', 15000)); //Mohon maaf, uang tidak cukup
console.log(shoppingTime()); ////Mohon maaf, toko X hanya berlaku untuk member saja
Loading