Nama:Moh Rosy Haqqy Aminy
NRP: 5025211012
ID hacker: haqqyaminy
Rekap:
A (Anton Memanggil Dirinya) : AC Praktikum
B (Triangle Ladder) : AC Praktikum
C (MALUR PESAWAT) : AC Revisi
D (monsterbuster) : AC Praktikum
E (Si Paling Bisa Baca Map) : AC Revisi
F (Si Paling Kane) : AC Praktikum
Penjelasan per-soal:
A.Anton Memanggil Dirinya
-Link ideone: https://ideone.com/6fbbPt
-Penjelasan:
Praktikan diminta untuk membuat program untuk menentukan jumlah anton memangil dirinya
pada saat n menit dan dikali 125, pada rentang 0<=n<=45
-Solusi:
Dari soal dapat diketahui pola ke-n adalah 0,1,1,2,3,5,8,….(sebanyak n kali). Dimana baris tersebut
analog dengan deret fibbonacci atau deret dengan penjumlahan angka sebelumnya. Dengan sedikit
pendekatan funngsi rekursif. Agar tidak TLE kita dapat melakukan sedikit trik seperti pada gambar
Gambar sebelum mengunakan trik
Sumber: https://cdn-images-1.medium.com/max/1200/1*svQ784qk1hvBE3iz7VGGgQ.jpeg
Gambar setelah mengunakan trik
Sumber : buat sendiri di https://miro.com/
Dari gambar tersebut kitab bisa menyimpan fibo ke-n di variabel prev. lalu printf dengan dikali
125(jangan lupa memakai unsigned long long).
B . Triangle Ladder
-Link ideone: https://ideone.com/Yr17Rd
-Penjelasan:
Praktikan diminta untuk membuat penjumlan dari sebuah arrayyang berdekatan terus menerus
sampai dapat dikatakan hasil oprasi akan berbentuk seperti tangga
-Solusi:
Dengan mengunakan fungsi rekursif kita dapat membuat program dengan ide seperti di gambar.
Sumber: buat sendiri di https://miro.com/
Dalam gambar array akan terus di jumlah sampai nilai N=1 setelah itu fungsi rekurif akan berhenti dan
akan memprint dengan urutan terbalik dimulai dari akar kasus atau N=1 sampe ke-N.
C. MALUR PESAWAT
-Link ideone: https://ideone.com/Cn55Cc
-Penjelasan:
Praktikan diminta untuk membuat rute terpendek dari suatu array segitiga dengan syarat jalur
yang dilewati di Setiap langkah adalah array yang berdekatan dari array sebelumnya.
-Solusi:
Dengan mengunakan fungsi rekrusi kita dapat menyelesaikan persoalan tersebut. Kita dapat melakukan
pengecekan pada titik titik akhir jalur,kita dapat mengecek nilai minimum dari suatu jalur antara jalur
kanan dan jalur kiri dengan mengecek dari bawah dapat pula di gambarkan seperti ini:
Sumber: buat sendiri di https://miro.com/
Dapat pula di tuliskan dengan tabel:
Sumber: buat sendiri di excel
Setelah mendapat nilai cek kita dapat merubah semua nilai dari a[i][j] untuk semua jalur terpendek.
Setelah itu print semua jalur dengan jalur terpendek diganti (-1)
D . monsterbuster
-Link ideone: https://ideone.com/j6ahfD
-Penjelasan:
Praktikan diminta untuk membuat program berapa kemungkinan peletakan dari suatu bom
sebanyak N pada bidang NxN agar bom tidak saling menghancurkan. Area yang dapat dijangkau
dari suatu bom adalah sisi horizontal,vertikal dan diagonal.
-Solusi:
Kita dapat melakukan suatu observasi seperti di gambar
Sumber: buat sendiri di https://miro.com/
Dari gambar kita dapat melakukan pengecekan suatu posisi bomb dengan bomb yang lain dari level 0
sampai level 4 dimana suatu posisi akan dinyatakan benar jika dan hanya jika tidak ada tanda (x) dari
level 0 sampai level 4.
Dari gambar dicontohkan untuk kasus kolom 1 di level 1 akan bercabang menjadi 4 buah yaitu kolom 1-4
pada level 2 seperti pada contoh dimana 1 pada level 2 tidak memenuhi maka akan diberi tanda 0 jika
bernilai 0 maka akan dilakukan backtracking untuk Kembali ke fungsi sebelumnya. Hal tersebut akan
diulang terus menerus dimana jika keadaan benar bernilai 1 dan keadaan salah bernilai 0. Jika sampai
level ke 4 tetap bernilai 1 akan dicatat 1 sebagai representasi posisi yang terbentuk.
E . Si Paling Bisa Baca Map
-Link ideone: https://ideone.com/a8TMv2
-Penjelasan: praktikan diminta untuk membuat program untuk menentukan rute perjalan
terpendek dari A(awal) ke B(tujuan) dalam suatu bidang yang mana simbol(#) tidak dapat
dilewati dan simbo(.) dapat dilewati.
-Solusi:
Kita dapat melakukan ekspedisi ke semua kemungkinan jalan yang akan dilewati mengunakan fungsi
rekursif. Dimulai dengan penentuan titik awal di A(i,j) dan titik akhir di B(i,j). setelah itu kita akan
melakukan percarian jarak terpendek dengan mengunkan fungsi rekursif minimum maze yang mana
setiap fungsi akan bercabang 4 arah sesuai arah yang mungkin dimana dia hanya akan berhenti jika
bertemu dengan tembok dan bertemu dengan objek minimum maze yang lain yang di tandai dengan (x).
hal ini terus dilakukan sampai selesai dan akan di dapat jarak minimum.(jangan lupa kembalikan semua
jalur yang telah dilalui di ekspedisi seperti keadaan semula).
Setelah mendapat jarak minimum kita akan melakukan cara yang sama akan tetapi jika suatu jalur
ekspedisi tersebut minimum maka akan di cetak untuk gambar jalur dan medium yang dilalui. Jangan
lupa setelah itu hentikan semua rekursi yang ada agar tidak memprint hasil berganda.
Sumber: buat sendiri di https://miro.com/
F . Si Paling Kane
-Link ideone: https://ideone.com/9E6y2H
-Penjelasan: praktikan diminta untuk membuat program untuk menentukan suatu pertahanan
dapat ditembus oleh ular maupun tidak dapat ditembus, dengan ular hanya berjalan kekanan
dan bisa berjalan ke atas atau kebawah jika ada simbol(#) didepannya.
-Solusi:
kita dapat membuat analisis seperti Di gambar
Sumber: buat sendiri di https://miro.com/
Dari gambar tersebut dapat diambil kesimpulan bahwa pertahanan akan gagal jika ular mencapai sisi
paling kanan atau sisi terluar N. maka dari itu di lakukan pengecekan secara vertikal dari atas kebawah.
Jika ada suatu kasus untuk ular akan kegebunshin ke atas maka perulangan vertikal akan Kembali di
ulang pada titik horizontal N tersebut. Langkah tersebut dilakukan sampe perulangan habis. Setelah itu
kita tingga mencocokkan unsur paling kanan dari tiap sisi horizontal apakah bernilai ‘~’ atau tidak.jika
tidak ada maka pertahanan berhasil,begitu pula sebaliknya jika ada ular maka pertehanan gagal.