2025-04-27 13:15:47 +07:00
2025-04-27 13:15:47 +07:00
2025-04-27 13:22:24 +07:00

README.md

Soal: Minesweeper Satu Dimensi

Deskripsi Soal

Minesweeper satu dimensi adalah versi sederhana dari permainan minesweeper, di mana kotak-kotak hanya disusun dalam satu baris. Setiap kotak berisi angka 0, 1 dan 2 yang menunjukan jumlah ranjau di kotak tetangganya. Angka 0 tidak ada ranjau di kiri atau kanan, angka 1 ada satu ranjau di antara kanan dan kiri, dan angka 2 ada ranjau di kedua sisi (kanan dan kiri). Namun, pada soal ini semua ranjau (R) telah dihapus dan hanya tersisa deretan angka. Tugas program adalah menghitung berapa banyak ranjau yang perlu disisipkan kembali agar barisan angka tersebut menjadi valid sesuai aturan minesweeper satu dimensi.

Contoh:

  • Input: 0 1 1 0 1 2 1 0 1
  • Output: 4 (jumlah ranjau yang harus disisipkan)

Strategi Penyelesaian

Program yang digunakan untuk menyelesaikan permasalahan ini menggunakan pendekatan berbasis simulasi lokal yang menghitung jumlah ranjau yang perlu disisipkan kembali agar konfigurasi minesweeper satu dimensi menjadi valid. Setiap posisi pada barisan diperiksa secara independen untuk menentukan apakah jumlah ranjau di sekitarnya sudah dengan nilai yang tertulis. Strategi yang digunakan dalam program ini adalah:

  1. Input: pengguna memasukkan deretan angka yang merepresentasikan papan minsweeper . angka -1 digunakan untuk menunjukkan posisi ranjau yang sudah diketahui (jika ada), sedangkan 0, 1, dan 2 menunjukkan jumlah ranjau di sekitar kotak tersebut (kanan dan kiri).
  2. Iterasi papan: program melalukan iterasi dari kanan dan kiri terhadap seluruh elemen dalam daftar.
  3. Pemeriksaan tiap posisi: Jika elemen saat ini bukan ranjau (≠ -1), maka program memeriksa jumlah ranjau yang sudah ada di sebelah kanan dan kiri posisi tersebut. Jumlah ranjau yang ada kemudian dibandingkan dengan nilai yang seharusnya pada posisi tersebut. Jika terdapat kekurangan ranjau, maka selisihnya ditambahkan ke dalam penghitungan total missing_mines.
  4. Output: setelah iterasi selesai, program mengembalikan total jumlah ranjau yang perlu disisipkan agar konfigurasi papan sesuai dengan aturan minesweeper satu dimensi.

Contoh Input dan Output

Input 1:

1 0 0 2 1 1 2 -1

Output 1:

6