From c464b31201329344f75cbe1ce6c49a55e49d3c96 Mon Sep 17 00:00:00 2001 From: LewzzJrs Date: Tue, 2 Sep 2025 18:39:24 +0700 Subject: [PATCH] submit Quiz dan Ujian Week2:) --- quiz/part1/soal1.js | 47 +++++++++++++++++++++++++++++++++++++++++++++ quiz/part1/soal2.js | 36 ++++++++++++++++++++++++++++++++++ quiz/part2/soal1.js | 18 +++++++++++++++++ quiz/part2/soal2.js | 28 +++++++++++++++++++++++++++ quiz/part2/soal3.js | 12 ++++++++++++ quiz/part2/soal4.js | 17 ++++++++++++++++ quiz/part3/soal1.js | 19 ++++++++++++++++++ quiz/part3/soal2.js | 28 +++++++++++++++++++++++++++ quiz/part3/soal3.js | 19 ++++++++++++++++++ quiz/part3/soal4.js | 18 +++++++++++++++++ quiz/ujian/soal1.js | 41 +++++++++++++++++++++++++++++++++++++++ quiz/ujian/soal2.js | 33 +++++++++++++++++++++++++++++++ quiz/ujian/soal3.js | 26 +++++++++++++++++++++++++ 13 files changed, 342 insertions(+) create mode 100644 quiz/part1/soal1.js create mode 100644 quiz/part1/soal2.js create mode 100644 quiz/part2/soal1.js create mode 100644 quiz/part2/soal2.js create mode 100644 quiz/part2/soal3.js create mode 100644 quiz/part2/soal4.js create mode 100644 quiz/part3/soal1.js create mode 100644 quiz/part3/soal2.js create mode 100644 quiz/part3/soal3.js create mode 100644 quiz/part3/soal4.js create mode 100644 quiz/ujian/soal1.js create mode 100644 quiz/ujian/soal2.js create mode 100644 quiz/ujian/soal3.js diff --git a/quiz/part1/soal1.js b/quiz/part1/soal1.js new file mode 100644 index 0000000..4e57354 --- /dev/null +++ b/quiz/part1/soal1.js @@ -0,0 +1,47 @@ +//## Soal 1 +//```js +/* +Buatlah sebuah fungsi dengan nama dataHandling dengan sebuah parameter untuk menerima argumen. Argumen yang akan diterima adalah sebuah array yang berisi beberapa array sejumlah n. +Tugas kamu adalah mengimplementasikan fungsi dataHandling agar dapat menampilkan data-data pada dari argumen seperti di bawah ini: +*/ +let input = [ + ["0001", "Roman Alamsyah", "Bandar Lampung", "21/05/1989", "Membaca"], + ["0002", "Dika Sembiring", "Medan", "10/10/1992", "Bermain Gitar"], + ["0003", "Winona", "Ambon", "25/12/1965", "Memasak"], + ["0004", "Bintang Senjaya", "Martapura", "6/4/1970", "Berkebun"] + ]; +function dataHandling(arr){ + for (let i = 0; i < arr.length; i++){ + console.log("Nomor ID: " + arr[i][0]); + console.log("Nama Lengkap: " + arr[i][1]); + console.log("TTl: " + arr[i][2] + " " + arr[i][3]); + console.log("Hobi: " + arr[i][4]); + console.log(""); + } +} + +dataHandling(input); +/* +output yang diharapkan + +Nomor ID: 0001 +Nama Lengkap: Roman Alamsyah +TTL: Bandar Lampung 21/05/1989 +Hobi: Membaca + +Nomor ID: 0002 +Nama Lengkap: Dika Sembiring +TTL: Medan 10/10/1992 +Hobi: Bermain Gitar + +Nomor ID: 0003 +Nama Lengkap: Winona +TTL: Ambon 25/12/1965 +Hobi: Memasak + +Nomor ID: 0004 +Nama Lengkap: Bintang Senjaya +TTL: Martapura 6/4/1970 +Hobi: Berkebun +*/ +//``` \ No newline at end of file diff --git a/quiz/part1/soal2.js b/quiz/part1/soal2.js new file mode 100644 index 0000000..db8a550 --- /dev/null +++ b/quiz/part1/soal2.js @@ -0,0 +1,36 @@ +//## Soal 2 +//pada soal yg kedua, kalian harus belajar method `splice`, `slice`, `join`, 'split', dan lainnya +//```js +let input = ["0001", "Roman Alamsyah ", "Bandar Lampung", "21/05/1989", "Membaca"]; + +function dataHandling2(input){ + input.splice(1,1, "Roman Alamsyah Elsharawy"); + input.splice(2,1, "Provinsi Bandar Lampung"); + input.splice(4,1, "Pria", "SMA International Metro"); + console.log('[\"' + input.join('", "') + '\"]') + + let tanggal = input[3].split("/"); + let daftarBulan = ["Januari", "Febuari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"]; + let bulan = daftarBulan[parseInt(tanggal[1], 10) -1]; + console.log(bulan); + + let tanggalTerbalik = tanggal.slice(); + tanggalTerbalik = [tanggalTerbalik[2], tanggalTerbalik[0], tanggalTerbalik[1]]; + console.log('["' + tanggalTerbalik.join('", "') + '"]'); + + console.log(tanggal.join("-")); + + console.log(input[1].slice(0,15)); +} + +dataHandling2(input); + +/** + * keluaran yang diharapkan (pada console) + * + * ["0001", "Roman Alamsyah Elsharawy", "Provinsi Bandar Lampung", "21/05/1989", "Pria", "SMA Internasional Metro"] + * Mei + * ["1989", "21", "05"] + * 21-05-1989 + * Roman Alamsyah //batasi hanya 15 karakter saja pada array elemen ke 2 + */ \ No newline at end of file diff --git a/quiz/part2/soal1.js b/quiz/part2/soal1.js new file mode 100644 index 0000000..b1c4340 --- /dev/null +++ b/quiz/part2/soal1.js @@ -0,0 +1,18 @@ +//## Soal 1 +//```js +/* +Diberikan sebuah function palindrome(kata) yang menerima satu parameter. +Function tersebut akan mengembalikan nilai true jika kata merupakan palindrome, dan false jika +bukan. Kata palindrome adalah sebuah kata yang jika dibalik, tetap sama. Contoh, 'katak' dibalik tetaplah 'katak'. +*/ + +function palindrome(kata){ + let kataDibalik = kata.split("").reverse().join(""); + return kata === kataDibalik; +} +// TEST CASES +console.log(palindrome('katak')); // true +console.log(palindrome('blanket')); // false +console.log(palindrome('civic')); // true +console.log(palindrome('kasur rusak')); // true +console.log(palindrome('mister')); // false diff --git a/quiz/part2/soal2.js b/quiz/part2/soal2.js new file mode 100644 index 0000000..6677690 --- /dev/null +++ b/quiz/part2/soal2.js @@ -0,0 +1,28 @@ +//## Soal 2 +//```js +/* +Diberikan sebuah function angkaPalindrome(angka) yang menerima satu parameter angka. Function akan me-return angka +selanjutnya yang mengandung nilai angka palindrome. Contoh, jika angka adalah 27, maka function akan me-return nilai 33 karena angka 33 adalah angka palindrom. +Jika angka dari awal sudah merupakan palindrome, maka function harus mencari angka selanjutnya yang palindrome. +Contoh, jika angka adalah 8, walaupun dia sudah palindrome, harus mencari angka selanjutnya yang palindrome, yaitu 9. + +note kenapa angka 8 adalah palindrome? karena angka 8 dibalik tetep 8 wkwkw +note kenapa angka 343 adalah palindrome? karena angka 343 dibalik tetep 343 eaaaa +*/ + +function angkaPalindrome(num){ + while(true){ + num++ + let angka = num.toString(); + let dibalik = angka.split("").reverse().join(""); + if (angka === dibalik){ + return num; + } + } +} +// TEST CASES +console.log(angkaPalindrome(8)); // 9 +console.log(angkaPalindrome(10)); // 11 +console.log(angkaPalindrome(117)); // 121 +console.log(angkaPalindrome(175)); // 181 +console.log(angkaPalindrome(1000)); // 1001 \ No newline at end of file diff --git a/quiz/part2/soal3.js b/quiz/part2/soal3.js new file mode 100644 index 0000000..afac36c --- /dev/null +++ b/quiz/part2/soal3.js @@ -0,0 +1,12 @@ +function hitungJumlahKata(kalimat) { + let kata = kalimat.split(" "); + + return kata.length; +} + +// TEST CASES +console.log(hitungJumlahKata('I have a dream')); // 4 +console.log(hitungJumlahKata('Never eat shredded wheat or cake')); // 6 +console.log(hitungJumlahKata('A song to sing')); // 4 +console.log(hitungJumlahKata('I')); // 1 +console.log(hitungJumlahKata('I believe I can code')); // 5 \ No newline at end of file diff --git a/quiz/part2/soal4.js b/quiz/part2/soal4.js new file mode 100644 index 0000000..20e321d --- /dev/null +++ b/quiz/part2/soal4.js @@ -0,0 +1,17 @@ +function pasanganTerbesar(num){ + let angka = num.toString(); + let max = 0; + + for(let i = 0; i < angka.length -1; i++){ + let pasangan = parseInt(angka[i] + angka[i + 1]); + if (pasangan > max){ + max = pasangan + } + } return max; +} +// TEST CASES +console.log(pasanganTerbesar(641573)); // 73 +console.log(pasanganTerbesar(12783456)); // 83 +console.log(pasanganTerbesar(910233)); // 91 +console.log(pasanganTerbesar(71856421)); // 85 +console.log(pasanganTerbesar(79918293)); // 99 \ No newline at end of file diff --git a/quiz/part3/soal1.js b/quiz/part3/soal1.js new file mode 100644 index 0000000..3349727 --- /dev/null +++ b/quiz/part3/soal1.js @@ -0,0 +1,19 @@ +//## Soal 1 +//```js +function cariMean(arr) { + let total = 0; + for (let i = 0; i < arr.length;i++){ + total += arr[i] + } + let mean = total / arr.length; + return Math.round(mean); +} + +// TEST CASES +console.log(cariMean([1, 2, 3, 4, 5])); // 3 +console.log(cariMean([3, 5, 7, 5, 3])); // 5 +console.log(cariMean([6, 5, 4, 7, 3])); // 5 +console.log(cariMean([1, 3, 3])); // 2 +console.log(cariMean([7, 7, 7, 7, 7])); // 7 + +//tips baca dokumentasi Math js untuk pembulatan \ No newline at end of file diff --git a/quiz/part3/soal2.js b/quiz/part3/soal2.js new file mode 100644 index 0000000..144362f --- /dev/null +++ b/quiz/part3/soal2.js @@ -0,0 +1,28 @@ +//## Soal 2 +//```js +/* +Diberikan sebuah function perkalianUnik(arr) yang menerima satu parameter +berupa array yang berisikan angka. Function akan me-return array baru yang + mengandung angka yang setiap nilainya merupakan hasil kali angka lain yang + bukan angka itu sendiri. Contoh, jika arr adalah [1, 2, 3, 4, 5], maka function + akan mereturn [120, 60, 40, 30, 24], karena 120 adalah 2 * 3 * 4 * 5, 60 adalah 1 * 3 * 4 * 5, 40 adalah 1 * 2 * 4 * 5, dan seterusnya. +*/ +function perkalianUnik(arr){ + let hasil = []; + for (let i = 0; i < arr.length; i++){ + let total = 1; + for(let j = 0; j < arr.length; j++){ + if (i !== j){ + total *= arr[j]; + } + }hasil.push(total); + } + return hasil; +} + +// TEST CASES +console.log(perkalianUnik([2, 4, 6])); // [24, 12, 8] +console.log(perkalianUnik([1, 2, 3, 4, 5])); // [120, 60, 40, 30, 24] +console.log(perkalianUnik([1, 4, 3, 2, 5])); // [120, 30, 40, 60, 24] +console.log(perkalianUnik([1, 3, 3, 1])); // [9, 3, 3, 9] +console.log(perkalianUnik([2, 1, 8, 10, 2])); // [160, 320, 40, 32, 160]// \ No newline at end of file diff --git a/quiz/part3/soal3.js b/quiz/part3/soal3.js new file mode 100644 index 0000000..abd3dfc --- /dev/null +++ b/quiz/part3/soal3.js @@ -0,0 +1,19 @@ +//## Soal 3 +//```js +//tentukan apakah ini deret aritmatika atau bukan +function tentukanDeretAritmatika(arr) { + let selisih = arr[1] - arr[0]; + for (let i = 0; i < arr.length -1; i++){ + if(arr[i + 1] - arr[i] !== selisih){ + return false; + } + } + return true; +} + +// TEST CASES +console.log(tentukanDeretAritmatika([1, 2, 3, 4, 5, 6])); // true +console.log(tentukanDeretAritmatika([2, 4, 6, 12, 24])); // false +console.log(tentukanDeretAritmatika([2, 4, 6, 8])); // true +console.log(tentukanDeretAritmatika([2, 6, 18, 54])); // false +console.log(tentukanDeretAritmatika([1, 2, 3, 4, 7, 9])); // false \ No newline at end of file diff --git a/quiz/part3/soal4.js b/quiz/part3/soal4.js new file mode 100644 index 0000000..19a4dc2 --- /dev/null +++ b/quiz/part3/soal4.js @@ -0,0 +1,18 @@ +//## Soal 4 +//```js +function tentukanDeretGeometri(arr) { + let geometri = arr[1] / arr[0]; + for (let i = 0; i < arr.length -1; i++){ + if (arr[i +1] / arr[i] !== geometri){ + return false; + } + } + return true; +} + +// TEST CASES +console.log(tentukanDeretGeometri([1, 3, 9, 27, 81])); // true +console.log(tentukanDeretGeometri([2, 4, 8, 16, 32])); // true +console.log(tentukanDeretGeometri([2, 4, 6, 8])); // false +console.log(tentukanDeretGeometri([2, 6, 18, 54])); // true +console.log(tentukanDeretGeometri([1, 2, 3, 4, 7, 9])); // false \ No newline at end of file diff --git a/quiz/ujian/soal1.js b/quiz/ujian/soal1.js new file mode 100644 index 0000000..7b4dc88 --- /dev/null +++ b/quiz/ujian/soal1.js @@ -0,0 +1,41 @@ +//## Soal 1 +//```js +/* +Diberikan sebuah function targetTerdekat(arr) yang menerima satu parameter berupa array yang terdiri dari karakter. +Function akan me-return jarak spasi antar karakter 'o' dengan karakter 'x' yang terdekat. Contoh, jika arr adalah ['x', ' ', 'o', ' ', ' ', 'x'], +maka jarak terdekat dari 'o' ke 'x' adalah 2. Jika tidak ditemukan 'x' sama sekali, function akan me-return nilai 0. +*/ +function targetTerdekat(arr) { + let posisiO = []; + let posisiX = []; + + for (let i = 0; i < arr.length; i++) { + if (arr[i] === 'o') posisiO.push(i); + if (arr[i] === 'x') posisiX.push(i); + } + + if (posisiX.length === 0) return 0; + + let jarakTerdekat = Infinity; + for (let i = 0; i < posisiO.length; i++) { + for (let j = 0; j < posisiX.length; j++) { + let jarak = Math.abs(posisiO[i] - posisiX[j]); + if (jarak < jarakTerdekat) { + jarakTerdekat = jarak; + } + } + } + + return jarakTerdekat; +} + + +// TEST CASES +console.log(targetTerdekat([' ', ' ', 'o', ' ', ' ', 'x', ' ', 'x'])); // 3 +console.log(targetTerdekat(['o', ' ', ' ', ' ', 'x', 'x', 'x'])); // 4 +console.log(targetTerdekat(['x', ' ', ' ', ' ', 'x', 'x', 'o', ' '])); // 1 +console.log(targetTerdekat([' ', ' ', 'o', ' '])); // 0 +console.log(targetTerdekat([' ', 'o', ' ', 'x', 'x', ' ', ' ', 'x'])); // 2 +console.log(targetTerdekat([' ', 'o', ' ', 'x', 'x', 'o', ' ', 'x'])); // 1 + + diff --git a/quiz/ujian/soal2.js b/quiz/ujian/soal2.js new file mode 100644 index 0000000..237e434 --- /dev/null +++ b/quiz/ujian/soal2.js @@ -0,0 +1,33 @@ +//## Soal 2 +//```js +/* +Diberikan sebuah function mengelompokkanAngka(arr) yang menerima satu parameter berupa array yang berisi angka-angka. Function akan me-return array multidimensi dimana array tersebut berisikan 3 kategori/kelompok: + +kelompok pertama (baris pertama) merupakan angka-angka genap +kelompok ke-2 (baris ke-2) merupakan angka-angka ganjil +kelompok ke-3 (baris ke-3) merupakan angka-angka kelipatan 3 +Contoh jika arr inputan adalah [45, 20, 21, 2, 7] maka output: [ [ 20, 2 ], [ 7 ], [ 45, 21 ] ] +*/ +function mengelompokkanAngka(angka) { + let hasil = [[], [], []]; + + for (let i = 0; i < angka.length; i++) { + if (angka[i] % 3 === 0) { + hasil[2].push(angka[i]); + } else if (angka[i] % 2 === 0) { + hasil[0].push(angka[i]); + } else { + hasil[1].push(angka[i]); + } + } + + return hasil; +} + +// TEST CASES +console.log(mengelompokkanAngka([2, 4, 6])); // [ [2, 4], [], [6] ] +console.log(mengelompokkanAngka([1, 2, 3, 4, 5, 6, 7, 8, 9])); // [ [2,4,8], [1,5,7], [3,6,9] ] +console.log(mengelompokkanAngka([100, 151, 122, 99, 111])); // [ [100,122], [151], [99,111] ] +console.log(mengelompokkanAngka([])); // [ [], [], [] ] + + diff --git a/quiz/ujian/soal3.js b/quiz/ujian/soal3.js new file mode 100644 index 0000000..4917455 --- /dev/null +++ b/quiz/ujian/soal3.js @@ -0,0 +1,26 @@ +function groupAnimals(hewan) { + hewan.sort(); + + let hasil = []; + let kelompok = [hewan[0]]; + + for (let i = 1; i < hewan.length; i++) { + if (hewan[i][0] === kelompok[0][0]) { + kelompok.push(hewan[i]); + } else { + hasil.push(kelompok); + kelompok = [hewan[i]]; + } + } + + hasil.push(kelompok); + return hasil; +} + +// TEST CASES +console.log(groupAnimals(['cacing', 'ayam', 'kuda', 'anoa', 'kancil'])); +// [ ['ayam', 'anoa'], ['cacing'], ['kuda', 'kancil'] ] + +console.log(groupAnimals(['cacing', 'ayam', 'kuda', 'anoa', 'kancil', 'unta', 'cicak'])); +// [ ['ayam', 'anoa'], ['cacing', 'cicak'], ['kuda', 'kancil'], ['unta'] ] +