由键盘输入 n 代表 n * n 的棋盘,然后再由键盘输入 m 代表雷的个数,接下来的 m 行,每行两个参数,并且用空格分隔开,代表雷的位置。
对于每个不是雷的方块,对其赋值为周围3*3范围内的雷数目,对于雷单位,其值赋值为9,输出最终转化
的矩阵。
对于上述得到的扫雷棋盘,实现以下操作,用随机数模块生成 t 个随机点数( xy )0< x <= n ,0< y <= n ),对于这些点数带入扫雷棋盘中进行计算,判断是否踩雷,如果踩到雷,输出 error 并且输出踩到雷时的步数以及位置,如
果没有,输出success
想问问Python怎么做这种题呀,一点思路都没有
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- cjh4312 2023-01-13 12:59关注
#随机生产num步不同位置 def make_list(num,l): i=0 while i!=num: random.seed() x=random.randint(0,n-1) y=random.randint(0,n-1) flag=True for j in l: if j==[x,y]: flag=False break if flag: i+=1 l.append([x,y]) print('请输入正方形棋盘大小:') n=int(input()) print('雷的个数:') m=int(input()) #初始化棋盘 dd= [[1]*n for _ in range(n)] #手动输入雷的位置 # print('输入雷的位置:') # for i in range(m): # l=input().split(' ') # dd[int(l[0])][int(l[1])]=9 #随机产生m个雷的位置 l=[] make_list(m, l) for i in l: dd[i[0]][i[1]]=9 #统计不是雷的位置的数值 for i in range(n): for j in range(n): count=0 if dd[i][j]==9: continue for k in range(i-1,i+2): if k<0 or k>n-1: continue for s in range(j-1,j+2): if s<0 or s>n-1: continue if dd[k][s]==9: count+=1 dd[i][j]=count print(np.array(dd)) #产生随机走棋的步骤,最多n*n-m步,每步不能相同 t=n*n-m foot=[] make_list(t, foot) print(foot) #按照步骤下棋 for i in range(len(foot)): flag=True if dd[foot[i][0]][foot[i][1]]==9: print('error',f"{i+1}步",f"位置{[foot[i][0],foot[i][1]]}") flag=False break if flag: print('success')
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 python的qt5界面
- ¥15 无线电能传输系统MATLAB仿真问题
- ¥50 如何用脚本实现输入法的热键设置
- ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
- ¥30 深度学习,前后端连接
- ¥15 孟德尔随机化结果不一致
- ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
- ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
- ¥15 谁有desed数据集呀
- ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100