Soal 1. Mine Sweeper (Nama File : MINE.PAS) (Soal ini harus diselesaikan dengan menggunakan rekursi, walaupun soal ini dapat pula diselesaikan dengan metode lain !!) Minesweeper adalah salah satu permainan yang terkenal dari Windows. Pada game ini, kita menjadi seorang penjinak ranjau yang harus menandai semua ranjau yang ada atau membuka semua tempat yang tidak ada ranjaunya. Pada masalah ini, pemain tidak ditugaskan untuk menandau ranjau. Tempat yang tidak ada ranjaunya berisi sebuah angka. Angka itu adalah jumlah dari ranjau yang ada di sekitar tempat itu. Definisi dari sekitar adalah 8 arah dari tempat itu. Anda diminta untuk membuat sebuah program, di mana diberikan tempat – tempat ranjau berada, dan urutan langkah – langkah yang dilakukan pemain, untuk mencetak hasil akhir setelah pemain itu melakukan langkah itu. Jika ternyata dalam salah satu langkah pemain itu mati (membuka bom), maka langkah – langkah selanjutnya tidak boleh dimainkan dan di tempat langkah terakhir itu diisi dengan karakter ‘x’. Bila tempat yang ditunjuk pemain mempunyai nilai 0, maka 8 arah dari tempat itu harus langsung dibuka, dan bila ada yang 0 dari 8 arah itu, 8 arah dari tempat bernilai 0 itu dibuka lagi, demikian seterusnya. INPUT (MINE.IN) Baris pertama dari input berisi 2 integer m dan n yang merupakan jumlah baris dan jumlah kolom dari permainan itu. M baris berikutnya berisi n karakter yang menyatakan peta dari permainan. Tiap karakter dapat bernilai ‘-‘ untuk tempat kosong, dan ‘b’ untuk tempat berisi bom. Nomor baris dimulai dari 1 sampai dengan m dan nomor kolom dimulai dari 1 sampai dengan n. Baris selanjutnya berisi sebuah integer k. k baris berikutnya berisi 2 integer a dan b yang merupakan langkah yang dilakukan pemain di mana a adalah baris dari atas dan b adalah kolom dari kiri. OUTPUT (MINE.OUT) Anda diminta untuk mencetak tampilan permainan setelah pemain menjalankan langkah – langkah yang disebutkan dalam input. SAMPLE mine.in : mine.out : 77 bb----------------b-----b --b-b-----------b-1 17 Soal Seleksi TOKI DKI 7 Juni 2003 bb10000 -210000 -100011 b21212b --b-b-----------b— Batasan 1 < m,n <= 100 1 < a <= m 1 < b <= n 1 Soal 2. Lomba Lari Bebek (Nama File : LARI.PAS) Pak Dengklek mengadakan Lomba Lari Bebek 2003 di peternakannya. Dia mengundang N (1 <= N <= 20) bebek untuk berpartisipasi dalam pertandingan. Sebagai insentif, ia menjanjikan M (1 <= M <= 20) hadiah untuk para pemenang lomba. Karena alat pengukur waktu yang digunakan masih agak subjektif (yaitu mata Pak Dengklek), adalah mungkin untuk mendapatkan beberapa bebek finis di urutan yang sama alias seri. Istri Pak Dengklek membantunya dengan membuat sertifikat-sertifikat untuk para pemenang. Tiba-tiba saja, ia ingin tahu ada berapa banyak cara untuk membagi hadiah-hadiah tersebut. Menurut buku peraturan yang telah Pak Dengklek tulis, bila terjadi seri di antara K bebek, maka tiap K bebek akan menerima hadiah ke-X bila ada tepat X-1 bebek yang finis lebih dahulu dari K bebek tersebut. FORMAT MASUKAN (LARI.IN) Sebuah baris dengan 2 bilangan bulat yang dipisahkan oleh spasi: N dan M. CONTOH MASUKAN 32 FORMAT KELUARAN (LARI.OUT) Sebuah baris dengan sebuah bilangan bulat yang menyatakan banyak cara yang mungkin untuk menghadiahkan M hadiah ke sapi-sapi. CONTOH KELUARAN 13 Penjelasan Misal ada tiga bebek dengan nama Kwek, Kwik dan Kwok, maka cara-cara untuk membagi hadiah adalah: - Kwek, Kwik, Kwok : Hadiah pertama - Kwek, Kwik : Hadiah pertama - Kwek, Kwok : Hadiah pertama - Kwik, Kwok : Hadiah pertama - Kwek : Hadiah pertama, Kwik : Hadiah kedua - Kwek : Hadiah pertama, Kwok : Hadiah kedua - Kwik : Hadiah pertama, Kwek : Hadiah kedua - Kwik : Hadiah pertama, Kwok : Hadiah kedua - Kwok : Hadiah pertama, Kwek : Hadiah kedua - Kwok : Hadiah pertama, Kwek : Hadiah kedua - Kwek : Hadiah pertama, Kwik, Kwok : Hadiah kedua - Kwik : Hadiah pertama, Kwek, Kwok : Hadiah kedua - Kwok : Hadiah pertama, Kwek, Kwik : Hadiah kedua Soal Seleksi TOKI DKI 7 Juni 2003 2 Soal 3. Tempat Tidur Bebek (Nama File : TIDUR.PAS) Pak Dengklek punya N (1 <= N <= 2500) bebek yang tidur di sebuah kandang besar dengan K kamar yang dinomori 0 sampai dengan K-1. Bebek ke-i dinomori secara unik dengan nomor Si (1 <= Si <= 1000000). Setiap bebek tahu di mana untuk tidur karena dia tidur di kamar nomor S i mod K. Tentu saja, para bebek tidak mau membagi tempatnya untuk tidur. Diberikan sebuah himpunan bebek dan nomornya, tentukan nilai minimum K sedemikian sehingga tidak ada 2 bebek yang tidur di kamar yang sama. FORMAT MASUKAN (TIDUR.IN) Baris 1 Baris 2..N+1 : Sebuah bilangan bulat untuk N : Sebuah bilangan bulat yang menyatakan nomor bebek CONTOH MASUKAN 5 4 6 9 10 13 FORMAT KELUARAN (TIDUR.OUT) Sebuah baris dengan nilai minimum K pada baris tersebut. CONTOH KELUARAN 8 Soal Seleksi TOKI DKI 7 Juni 2003 3