Praktikum ASD: Basic Sorting Median dan Modus Deskripsi Masalah Buatlah sebuah program yang menerima N buah bilangan integer dan mengembalikan nilai yang paling sering muncul (Modus) dan nilai tengahnya (Median)! Gunakanlah algoritma selection sort pada pengerjaan soal ini! Spesifikasi Masukan Masukan diawali dengan sebuah bilangan N (1 N 10.000) yang merupakan jumlah bilangan integer masukan. Masukan berikutnya adalah N buah bilangan integer dengan nilai antara -2 30 sampai dengan 2 30. Spesifikasi Keluaran Program yang dibuat akan mengembalikan nilai Modus (sebuah bilangan integer) dan nilai Median (sebuah bilangan double) dari kumpulan bilangan integer yang diberikan. Nilai Modus dan Median tersebut dipisahkan oleh sebuah spasi. Contoh Masukan 1 4 5 6 2 2 Contoh Keluaran 1 2 3.5 Contoh Masukan 2 5 5 6 2 2 6 Contoh Keluaran 2 2 5.0 Mariombat 2 Deskripsi Masalah Mariombat 2 adalah sebuah permainan dimana pemain mengontrol sebuah wombat. Wombat ini berada pada sebuah jalan lurus yang dibagi menjadi N buah daerah. Tujuan dari permainan ini adalah untuk
menggerakkan wombat dari daerah pertama ke daerah terakhir. Tiap daerah dapat memiliki ketinggian yang berbeda-beda. Wombat yang dikontrol oleh pemain hanya dapat berpindah ke daerah di sebelahnya bila perbedaan ketinggian antara daerah asal dan daerah tujuan lebih kecil atau sama dengan 2. Gambar 1 merupakan contoh dari sebuah level pada permainan Mariombat 2. Pada contoh ini dapat dilihat bahwa terdapat 3 kesalahan yang menyebabkan peta tersebut tidak dapat diselesaikan, yaitu : 1. Daerah 0 ke 1 beda ketinggian = 3 2. Daerah 1 ke 2 beda ketinggian = 6 3. Daerah 2 ke 3 beda ketinggian = 3 7 6 5 4 3 2 1 0 0 1 2 3 4 Gambar 1 Contoh Level Mariombat 2 Tiap level pada game ini disimpan sebagai kumpulan objek-objek daerah, dimana tiap objek daerah mencatat data mengenai posisinya pada jalur (bilangan bulat 0 s/d N) serta ketinggiannya (bilangan bulat positif). Sebagai contoh, level pada Gambar 1 disimpan sebagai objek-objek daerah dengan posisi dan ketinggian (0,3), (1,6), (2,0), (3,3), dan (4,4). Sebagai salah satu developer dari game ini, anda diberi tugas untuk memeriksa apakah rancangan level yang telah dibuat oleh level designer memiliki kesalahan-kesalahan seperti pada contoh di atas. Sayangnya, karena beberapa waktu yang lalu juga terjadi kesalahan pada program yang digunakan para level designer untuk merancang level, objek-objek daerah yang disimpan tidak lagi terurut berdasarkan posisinya pada jalur. Objek-objek daerah tersebut sekarang tersimpan secara acak. Buatlah sebuah program untuk mencari jumlah kesalahan yang ada pada kumpulan daerah ini! Gunakan algoritma insertion sort pada pengerjaan soal ini! Spesifikasi Masukan
Masukan diawali dengan sebuah bilangan integer N (N>0) yang merupakan jumlah daerah yang ada pada level. Masukan berikutnya adalah posisi dan ketinggian dari N buah objek daerah. Posisi dan ketinggian dari sebuah objek daerah dituliskan dalam format : posisi ketinggian Spesifikasi Keluaran Keluarkan jumlah kesalahan yang ada pada level tersebut! Contoh Masukan 5 2 0 0 3 3 3 4 4 1 6 Contoh Keluaran 3 Seminar Sebagai panitia seminar yang akan dihadiri para wombat-wombat terkemuka di dunia, anda diberi tugas untuk menentukan ruang dan nomor kursi dari tiap pembicara. Ruang-ruang pada gedung tempat diadakannya seminar ini ada pada sebuah selasar dan diberi nomor dari 1 s/d R (R>0), dengan ruangan paling kiri adalah ruangan 1. Tiap ruangan mampu menampung K (K>0) buah kursi. Kursi-kursi ini ditempatkan dalam satu buah baris, dimana kursi paling kiri adalah kursi nomor 1. Ketua panitia seminar telah memberikan aturan-aturan yang harus diikuti dalam penentuan ruang dan nomor kursi. Aturan-aturan yang berhubungan dengan ruang adalah sebagai berikut : Seluruh pembicara yang membahas topik yang sama harus berada pada ruangan yang sama Bila topik-topik yang dibahas pada ruang r adalah topik X, Y, dan Z maka topik yang dibahas pada ruang-ruang di kiri ruang r haruslah topik-topik yang secara alfabetis lebih awal dibandingkan topik X, Y, dan Z Jumlah ruangan yang digunakan harus sesedikit mungkin. Aturan-aturan yang berhubungan dengan penentuan kursi tiap pembicara di dalam ruangan adalah sebagai berikut : Bila terdapat kursi yang tidak digunakan pada ruangan tersebut maka penempatan pembicara diatur sedemikian rupa sehingga seluruh kursi kosong terletak di sebelah kanan dari seluruh pembicara.
Penempatan kursi para pembicara diatur sedemikian rupa sehingga topik-topik para pembicara bila dilihat dari kursi paling kiri ke paling kanan akan terurut non menurun secara alfabetis. Bila terdapat lebih dari satu orang pembicara pada topik yang sama maka kursi yang ditempati oleh pembicara-pembicara di topik tersebut harus terurut menaik secara alfabetis bila dilihat dari kursi paling kiri ke paling kanan. Sebagai contoh, bila kapasitas ruangan-ruangan yang digunakan adalah 6 kursi, dan terdapat 13 orang pembicara, yaitu : No. Nama Topik 1 badu artificial_intelligence 2 wiederhold artificial_intelligence 3 johnson fire_control 4 clowreed fire_control 5 smith fire_control 6 ian artificial_intelligence 7 meep data_mining 8 coolidge fire_control 9 baygon fire_control 10 moole data_mining 11 meong electronics 12 norvig artificial_intelligence 13 mrkucing fire_control Maka para pembicara tersebut akan ditempatkan dengan cara di bawah ini : Ruang 1 1. badu 2. ian 3. norvig 4. wiederhold 5. meep 6. moole Ruang 2 1. meong Ruang 3 1. baygon 2. clowreed 3. coolidge 4. johnson 5. mrkucing 6. smith Buatlah sebuah program untuk menentukan penentuan ruangan dan kursi pada seminar tersebut! Spesifikasi Masukan Masukan pertama adalahsebuah bilangan bulat N (N>0) yang merupakan jumlah pembicara pada seminar ini. Masukan kedua adalah sebuah bilangan bulat K (K>0) yang merupakan jumlah kursi yang tersedia pada tiap ruangan. N buah baris berikutnya dari masukan adalah nama dari pembicara serta topiknya. Nama dan topik ini ditulis dalam format : namapembicara topikpresentasi
Nama dan topik presentasi adalah sebuah String yang tidak mengandung spasi dan tidak mengandung huruf kapital. Spesifikasi Keluaran Keluarkanlah tempat yang diberikan untuk tiap pembicara dengan secara terurut menaik berdasarkan nomor ruangan dan nomor kursinya. Tempat ini dituliskan dalam format : nomorruangan nomorkursi namapembicara Tiap data tersebut dituliskan dalam satu buah baris terpisah. Contoh Masukan 13 6 badu artificial_intelligence wiederhold artificial_intelligence johnson fire_control clowreed fire_control smith fire_control ian artificial_intelligence meep data_mining coolidge fire_control baygon fire_control moole data_mining meong electronics norvig artificial_intelligence mrkucing fire_control
Contoh Keluaran 1 1 badu 1 2 ian 1 3 norvig 1 4 wiederhold 1 5 meep 1 6 moole 2 1 meong 3 1 baygon 3 2 clowreed 3 3 coolidge 3 4 johnson 3 5 mrkucing 3 6 smith