Python生成掃雷地圖的方法
本文實(shí)例為大家分享了Python生成掃雷地圖的具體代碼,供大家參考,具體內(nèi)容如下
需求說(shuō)明
輸入:行數(shù)m、列數(shù)n、地雷數(shù)k
輸出:隨機(jī)掃雷地圖
第一步,生成地圖和隨機(jī)地雷
第二步,沒有地雷的格子填充數(shù)字,該數(shù)字表示周邊地雷總數(shù)
思路

代碼實(shí)現(xiàn)
下面2種實(shí)現(xiàn),分別是不用numpy和用numpy,思路是一樣的
from random import shuffle
# 行數(shù)、列數(shù)、地雷數(shù)
m, n, k = 5, 10, 15
# 地雷符號(hào),此處用9表示
landmine = 9
# 初始化序列,總長(zhǎng)為m*n,k前是雷,k后是0
ls = [landmine for _ in range(k)] + [0 for _ in range(m * n - k)]
# 打亂序列順序,達(dá)到隨機(jī)的效果
shuffle(ls)
# m*n的序列=>m行n列的矩陣
matrix = [[ls[i + j * n] for i in range(n)] for j in range(m)]
# 對(duì)沒有雷的格子填充數(shù)字,該數(shù)字表示周圍地雷總數(shù),注意邊緣格子,不要越界
for i in range(m):
for j in range(n):
if matrix[i][j] == 0:
matrix[i][j] = sum(
1 for a in range(max(i - 1, 0), min(i + 2, m))
for b in range(max(j - 1, 0), min(j + 2, n))
if matrix[a][b] == landmine)
# 最終結(jié)果展示
[print(v) for v in matrix]
import numpy as np
# 行數(shù)、列數(shù)、地雷數(shù)
m, n, k = 5, 10, 15
# 地雷符號(hào),此處用9表示
landmine = 9
# 初始化總長(zhǎng)為m*n的序列,TopK是雷,k后是0
ls = [landmine for _ in range(k)] + [0 for _ in range(m * n - k)]
print(ls)
# 打亂序列順序,達(dá)到隨機(jī)的效果
np.random.shuffle(ls)
print(ls)
# m*n的序列=>m行n列的矩陣
matrix = np.reshape(ls, (m, n))
print(matrix)
# 對(duì)沒有雷的格子填充數(shù)字,該數(shù)字表示周圍地雷總數(shù),注意邊緣格子,不要越界
for i in range(m):
for j in range(n):
if matrix[i][j] == 0:
matrix[i][j] = sum(
1 for a in range(max(i - 1, 0), min(i + 2, m))
for b in range(max(j - 1, 0), min(j + 2, n))
if matrix[a][b] == landmine)
# 最終結(jié)果展示
print(matrix)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python模塊學(xué)習(xí)之struct模塊詳解
這篇文章主要介紹了Python模塊學(xué)習(xí)之struct模塊詳解,該模塊作用是完成Python數(shù)值和C語(yǔ)言結(jié)構(gòu)體的Python字符串形式間的轉(zhuǎn)換,這可以用于處理存儲(chǔ)在文件中或從網(wǎng)絡(luò)連接中存儲(chǔ)的二進(jìn)制數(shù)據(jù),以及其他數(shù)據(jù)源,需要的朋友可以參考下2023-07-07
如何使用python檢測(cè)某網(wǎng)盤鏈接是否有效
這篇文章主要為大家介紹了使用python檢測(cè)某網(wǎng)盤鏈接是否有效的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
python實(shí)現(xiàn)簡(jiǎn)單聊天應(yīng)用 python群聊和點(diǎn)對(duì)點(diǎn)均實(shí)現(xiàn)
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單聊天應(yīng)用,python群聊和點(diǎn)對(duì)點(diǎn)均實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09
Python利用omegaconf庫(kù)輕松實(shí)現(xiàn)配置文件管理
omegaconf是一個(gè)靈活且強(qiáng)大的Python配置管理庫(kù),支持YAML,dict,列表等多種數(shù)據(jù)格式,下面我們就來(lái)看看如何使用omegaconf實(shí)現(xiàn)配置文件管理吧2025-02-02

