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
47 changes: 47 additions & 0 deletions quiz/part1/soal1.js
Original file line number Diff line number Diff line change
@@ -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
*/
//```
36 changes: 36 additions & 0 deletions quiz/part1/soal2.js
Original file line number Diff line number Diff line change
@@ -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
*/
18 changes: 18 additions & 0 deletions quiz/part2/soal1.js
Original file line number Diff line number Diff line change
@@ -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
28 changes: 28 additions & 0 deletions quiz/part2/soal2.js
Original file line number Diff line number Diff line change
@@ -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
12 changes: 12 additions & 0 deletions quiz/part2/soal3.js
Original file line number Diff line number Diff line change
@@ -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
17 changes: 17 additions & 0 deletions quiz/part2/soal4.js
Original file line number Diff line number Diff line change
@@ -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
19 changes: 19 additions & 0 deletions quiz/part3/soal1.js
Original file line number Diff line number Diff line change
@@ -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
28 changes: 28 additions & 0 deletions quiz/part3/soal2.js
Original file line number Diff line number Diff line change
@@ -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]//
19 changes: 19 additions & 0 deletions quiz/part3/soal3.js
Original file line number Diff line number Diff line change
@@ -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
18 changes: 18 additions & 0 deletions quiz/part3/soal4.js
Original file line number Diff line number Diff line change
@@ -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
41 changes: 41 additions & 0 deletions quiz/ujian/soal1.js
Original file line number Diff line number Diff line change
@@ -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


33 changes: 33 additions & 0 deletions quiz/ujian/soal2.js
Original file line number Diff line number Diff line change
@@ -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([])); // [ [], [], [] ]


26 changes: 26 additions & 0 deletions quiz/ujian/soal3.js
Original file line number Diff line number Diff line change
@@ -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'] ]