Recruitment Test 2012

5
INVOSA SYSTEMS SOAL – SOAL PEMROGRAMAN version Oct 2012 Buatlah program yang bisa menyelesaikan soal – soal seperti berikut. Catatan: Nomor soal tidak diurutkan berdasarkan tingkat kesulitan Pengerjaan tidak perlu urut nomor soal, bisa dikerjakan dari soal yang paling mudah Waktu tidak terbatas 1. Bunga Bank Pak Adi menabung di bank sebanyak Rp 1 juta dan mendapatkan bunga 12% pertahun. Setelah t tahun berapakah saldo tabungannya. Input : t tahun Output : s saldo tabungan Contoh: 2. Perkalian – Memakai Recursion Buatlah program yang bisa menghitung perkalian seperti di bawah ini, dengan menggunakan metoda recursion (recursive function). Input : n (integer positif) Output : f f ( x )= x ×( x 3)×( x 6)×( x 9 ... Jika x = 0,1,2 f ( x )=1 Keterangan: Perhitungan di atas mirip dengan faktorial, tetapi berkurang 3 angka pada setiap putaran. Contoh: Input n 0 1 2 3 4 5 6 7 8 9 Output f 1 1 1 3 4 10 18 28 80 162 1/5 t s 0 1,000,000 1 1,120,000 2 1,254,400 3 1,404,928 8 2,475,963 9 2,773,079 10 3,105,848

Transcript of Recruitment Test 2012

Page 1: Recruitment Test 2012

INVOSA SYSTEMSSOAL – SOAL PEMROGRAMAN

version Oct 2012

Buatlah program yang bisa menyelesaikan soal – soal seperti berikut.Catatan:

– Nomor soal tidak diurutkan berdasarkan tingkat kesulitan– Pengerjaan tidak perlu urut nomor soal, bisa dikerjakan dari soal yang paling mudah– Waktu tidak terbatas

1. Bunga Bank

Pak Adi menabung di bank sebanyak Rp 1 juta dan mendapatkan bunga 12% pertahun. Setelah t tahun berapakah saldo tabungannya.Input : t tahunOutput : s saldo tabungan

Contoh:

2. Perkalian – Memakai Recursion

Buatlah program yang bisa menghitung perkalian seperti di bawah ini, dengan menggunakan metoda recursion (recursive function).Input : n (integer positif)Output : f

f (x )=x×(x−3)×(x−6)×( x−9)×... Jika x=0,1,2→ f ( x)=1

Keterangan:Perhitungan di atas mirip dengan faktorial, tetapi berkurang 3 angka pada setiap putaran.

Contoh:

Input n 0 1 2 3 4 5 6 7 8 9

Output f 1 1 1 3 4 10 18 28 80 162

1/5

t s0 1,000,0001 1,120,0002 1,254,4003 1,404,928… …8 2,475,9639 2,773,07910 3,105,848

Page 2: Recruitment Test 2012

3. Encoding / Decoding

A. Tabel di bawah ini adalah kode ASCII nomor 64 – 95.

Buatlah program yang bisa meng-encode (mengkodekan) 32 kode ASCII tsb, dengan mengikuti aturan seperti tabel di bawah:

Aturan:– Jika 'A' menjadi 'Q', jika 'B' menjadi 'R', jika 'C', menjadi 'S', dst– Demikian juga sebaliknya, jika 'Q' menjadi 'A', jika 'R' menjadi 'B', dst– Jika input merupakan huruf kecil, maka dianggap huruf besar (case insensitive)– Dilarang menggunakan syntax “if”, “switch”, atau sejenisnya.

Contoh Input:

Saya_mau_makan

Output:

CQIQO]QEO]Q[Q^

4. Shortest Path Problem

Perhatikan segitiga di bawah ini. Masing-masing kotak dihubungkan oleh tanda panah, yang melambangkan rute yang boleh dilalui dari satu kotak ke kotak lain. Start dari rute tersebut adalah baris teratas yaitu kotak n11, dan finishnya adalah baris terbawah (n51 – n55).Carilah rute terpendek dari segitiga di bawah ini. Panjang rute ditentukan oleh jumlah dari semua angka yang ada di dalam kotak yang dilewati.Angka-angka di dalam kotak (n11 – n55) diinput oleh user secara bebas.

Input: Baris 1 n11

Baris 2 n21 n22

Baris 3 n31 n32 n33

Baris 4 n41 n42 n43 n44

Baris 5 n51 n52 n53 n54 n55

2/5

ASCII 64 – 79: @ A B C D E F G H I J K L M N OASCII 80 – 95: P Q R S T U V W X Y Z [ \ ] ^ _

@ 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 [ \ ] ^ _

Page 3: Recruitment Test 2012

Output:Path/rute dari baris paling atas sampai baris terbawah dengan jumlah terkecil.

Contoh:- Jika inputnya

Baris 1 5

Baris 2 2 3

Baris 3 4 6 1

Baris 4 7 5 3 5

Baris 5 1 2 4 2 7

- Maka output: Path terpendek = n11 + n22 + n33 + n43 + n54

= 5 + 3 + 1 + 3 + 2= 14

Jika memungkinkan, buatlah menggunakan Class (Object Oriented).

3/5

N11

N22

N54

N44

N33

N55

N43

N32

N42

N52

N21

N53

N41

N31

N51

5

3

2

5

1

7

3

6

5

2

2

4

7

4

1

Page 4: Recruitment Test 2012

5. Menghitung Luas Fungsi Sin

Buatlah program yang bisa menghitung luas fungsi sin (sinus) seperti pada gambar di bawah.Input : a dan b (dalam derajat, 0 s/d 360)Output : y adalah luas dari a sampai b

Hint: Cara Menghitung Luas

Bagilah area tersebut menjadi beberapa area persegi panjang, kemudian hitung luas masing2 persegi panjang dan jumlahkan semuanya. Lihat gambar di bawah.

Luas = luas 1 + luas 2 + luas 3 + … + luas 9Note: Semakin kecil pembagian area persegi panjang, akan menghasilkan hasil yang lebih presisi.

4/5

Page 5: Recruitment Test 2012

Atau jika ingin lebih presisi, bagilah area luas menjadi beberapa trapezium, kemudian hitung luas masing2 trapezium dan jumlahkan semuanya. Lihat gambar di bawah.

Luas = trapezium 1 + trapezium 2 + trapezium 3

Contoh:Untuk referensi, dibawah ini adalah tabel a, b, dan luas y:

Note:π = simbol pi (3.14159)

Happy programming

5/5

a b y0 900 1800 360 0

150 210 045 9090 180 180/π90 360

180/π

360/π

√2*90/π

-180/π