46 lines
1.6 KiB
Plaintext
46 lines
1.6 KiB
Plaintext
def count_missing_mines(board):
|
|
"""
|
|
Menghitung jumlah kotak ranjau yang diperlukan agar Minesweeper satu dimensi menjadi lengkap.
|
|
|
|
Args:
|
|
board (list): List angka, di mana setiap angka menunjukkan jumlah ranjau di sekitar posisi tersebut.
|
|
Gunakan -1 untuk menunjukkan posisi ranjau yang diketahui.
|
|
|
|
Returns:
|
|
int: Jumlah kotak ranjau yang diperlukan.
|
|
"""
|
|
missing_mines = 0
|
|
n = len(board)
|
|
|
|
for i in range(n):
|
|
# Jika posisi saat ini bukan ranjau (-1), hitung kekurangan ranjaunya
|
|
if board[i] != -1:
|
|
# Hitung jumlah ranjau yang sudah ada di sekitar posisi ini
|
|
current_mines = 0
|
|
if i > 0 and board[i - 1] == -1:
|
|
current_mines += 1
|
|
if i < n - 1 and board[i + 1] == -1:
|
|
current_mines += 1
|
|
|
|
# Tambahkan kekurangan ranjau
|
|
missing_mines += max(0, board[i] - current_mines)
|
|
|
|
return missing_mines
|
|
|
|
def main():
|
|
print("Selamat datang di program hitung ranjau Minesweeper satu dimensi!")
|
|
|
|
# Input papan Minesweeper
|
|
print("Masukkan papan Minesweeper dalam format berikut:")
|
|
print("Gunakan -1 untuk kotak ranjau yang sudah diketahui, dan angka (0-2) untuk kotak lainnya.")
|
|
print("Contoh input: -1 2 0 1 -1")
|
|
|
|
board_input = input("Masukkan papan Minesweeper (pisahkan dengan spasi): ")
|
|
board = list(map(int, board_input.split()))
|
|
|
|
# Hitung jumlah ranjau yang diperlukan
|
|
missing_mines = count_missing_mines(board)
|
|
print(f"Jumlah kotak ranjau yang diperlukan: {missing_mines}")
|
|
|
|
if __name__ == "__main__":
|
|
main() |