Recruitment Test 2012
Transcript of 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
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 [ \ ] ^ _
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
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
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/π