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

// 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
17 changes: 17 additions & 0 deletions quiz/part1/soal3.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
function cariMedian(arr) {
// you can only write your code here!
const n = arr.length;
arr.sort((a, b) => a - b);
if (n % 2 === 0) {
return (arr[n / 2 - 1] + arr[n / 2]) / 2;
} else {
return arr[Math.floor(n / 2)];
}
}

// 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
36 changes: 36 additions & 0 deletions quiz/part1/soal4.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
function cariModus(arr) {
// you can only write your code here!
var freq = {};
var maxCount = 0;
var modus = -1;

// Hitung frekuensi setiap angka
for (var i = 0; i < arr.length; i++) {
freq[arr[i]] = (freq[arr[i]] || 0) + 1;
if (freq[arr[i]] > maxCount) {
maxCount = freq[arr[i]];
}
}

// Jika semua angka sama atau semua angka unik
if (maxCount === arr.length || maxCount === 1) {
return -1;
}

// Cari modus pertama yang muncul
for (var j = 0; j < arr.length; j++) {
if (freq[arr[j]] === maxCount) {
modus = arr[j];
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
23 changes: 23 additions & 0 deletions quiz/part1/soal5.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
//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 = "";
for (let i = 0; i < kata.length; i++) {
let charCode = kata.charCodeAt(i);
if (charCode === 122) {
// 'z'
result += String.fromCharCode(97); // 'a'
} else {
result += String.fromCharCode(charCode + 1);
}
}
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
21 changes: 21 additions & 0 deletions quiz/part2/soal1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
function digitPerkalianMinimum(angka) {
// you can only write your code here!
let minDigits = Infinity;
for (let i = 1; i <= Math.sqrt(angka); i++) {
if (angka % i === 0) {
let j = angka / i;
let digits = (i.toString() + j.toString()).length;
if (digits < minDigits) {
minDigits = digits;
}
}
}
return minDigits;
}

// 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
22 changes: 22 additions & 0 deletions quiz/part2/soal2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
//saran sih pake bubblesort walau tidak efisien tapi bagus buat belajar sorting
function urutkanAbjad(str) {
// you can only write your code here!
let arr = str.split("");
for (let i = 0; i < arr.length - 1; i++) {
for (let j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
// Swap arr[j] and arr[j + 1]
let temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
return arr.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 result = "";
for (let i = 0; i < kalimat.length; i++) {
let char = kalimat[i];
if (char === char.toUpperCase()) {
result += char.toLowerCase();
} else {
result += char.toUpperCase();
}
}
return result;
}

// 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!
for (let i = 0; i < num.length; i++) {
if (
(num[i] === "a" && num[i + 4] === "b") ||
(num[i] === "b" && num[i + 4] === "a")
) {
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
28 changes: 28 additions & 0 deletions quiz/part3/soal1.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
function changeMe(arr) {
if (arr.length === 0) {
console.log("");
return;
}
for (let i = 0; i < arr.length; i++) {
let person = arr[i];
let obj = {
firstName: person[0] || "",
lastName: person[1] || "",
gender: person[2] || "",
};
if (person[3] && typeof person[3] === "number" && person[3] <= 2023) {
obj.age = 2023 - person[3];
} else {
obj.age = "Invalid Birth Year";
}
console.log(`${i + 1}. ${obj.firstName} ${obj.lastName}:`);
console.log(obj);
}
}

// TEST CASES
changeMe([
["Christ", "Evans", "Male", 1982],
["Robert", "Downey", "Male"],
]);
changeMe([]);
40 changes: 40 additions & 0 deletions quiz/part3/soal2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
function shoppingTime(memberId, money) {
if (!memberId || memberId === "") {
return "Mohon maaf, toko X hanya berlaku untuk member saja";
}
if (money === undefined || money < 50000) {
return "Mohon maaf, uang tidak cukup";
}

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

let listPurchased = [];
let changeMoney = money;

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

return {
memberId: memberId,
money: money,
listPurchased: listPurchased,
changeMoney: changeMoney,
};
}

// TEST CASES
console.log(shoppingTime("1820RzKrnWn08", 2475000));
console.log(shoppingTime("82Ku8Ma742", 170000));
console.log(shoppingTime("", 2475000));
console.log(shoppingTime("234JdhweRxa53", 15000));
console.log(shoppingTime());
93 changes: 93 additions & 0 deletions quiz/part3/soal3.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
function countProfit(shoppers) {
var listBarang = [
["Sepatu Stacattu", 1500000, 10],
["Baju Zoro", 500000, 2],
["Sweater Uniklooh", 175000, 1],
];

// you can only write your code here!
var result = [];
for (var i = 0; i < listBarang.length; i++) {
var product = listBarang[i][0];
var price = listBarang[i][1];
var stock = listBarang[i][2];
var shoppersList = [];
var totalProfit = 0;
var leftOver = stock;

for (var j = 0; j < shoppers.length; j++) {
if (shoppers[j].product === product && shoppers[j].amount <= leftOver) {
shoppersList.push(shoppers[j].name);
totalProfit += shoppers[j].amount * price;
leftOver -= shoppers[j].amount;
}
}

result.push({
product: product,
shoppers: shoppersList,
leftOver: leftOver,
totalProfit: totalProfit,
});
}
return result;
}

// TEST CASES
console.log(
countProfit([
{ name: "Windi", product: "Sepatu Stacattu", amount: 2 },
{ name: "Vanessa", product: "Sepatu Stacattu", amount: 3 },
{ name: "Rani", product: "Sweater Uniklooh", amount: 2 },
])
);
//[ { product: 'Sepatu Stacattu',
// shoppers: [ 'Windi', 'Vanessa' ],
// leftOver: 5,
// totalProfit: 7500000 },
// { product: 'Baju Zoro',
// shoppers: [],
// leftOver: 2,
// totalProfit: 0 },
// { product: 'Sweater Uniklooh',
// shoppers: [],
// leftOver: 1,
// totalProfit: 0 } ]

console.log(
countProfit([
{ name: "Windi", product: "Sepatu Stacattu", amount: 8 },
{ name: "Vanessa", product: "Sepatu Stacattu", amount: 10 },
{ name: "Rani", product: "Sweater Uniklooh", amount: 1 },
{ name: "Devi", product: "Baju Zoro", amount: 1 },
{ name: "Lisa", product: "Baju Zoro", amount: 1 },
])
);
// [ { product: 'Sepatu Stacattu',
// shoppers: [ 'Windi' ],
// leftOver: 2,
// totalProfit: 12000000 },
// { product: 'Baju Zoro',
// shoppers: [ 'Devi', 'Lisa' ],
// leftOver: 0,
// totalProfit: 1000000 },
// { product: 'Sweater Uniklooh',
// shoppers: [ 'Rani' ],
// leftOver: 0,
// totalProfit: 175000 } ]
console.log(
countProfit([{ name: "Windi", product: "Sepatu Naiki", amount: 5 }])
);
// [ { product: 'Sepatu Stacattu',
// shoppers: [],
// leftOver: 10,
// totalProfit: 0 },
// { product: 'Baju Zoro',
// shoppers: [],
// leftOver: 2,
// totalProfit: 0 },
// { product: 'Sweater Uniklooh',
// shoppers: [],
// leftOver: 1,
// totalProfit: 0 } ]
console.log(countProfit([])); //[]
Loading