我必须创建一个函数,它接受一个参数(当前单元格)并返回所有相邻的单元格(包括对角线).我包含了指导方针


new_board()

不接受参数以2d列表形式返回一个新的4x4网格,其中每个单元格包含一个随机选择的大写字符。

Ex:
[['A', 'B', 'C', 'D'],
['E', 'F', 'G', 'H'],
['I', 'J', 'K', 'L'],
['M', 'N', 'O', 'P']]

board_to_string(董事会)

接受一个参数,该参数是一个2d数组,代表整个4x4板返回一个多行字符串,表示可以打印到控制台的板:

[A] [B] [C] [D]
[E] [F] [G] [H]
[I] [J] [K] [L]
[M] [N] [O] [P]

这是到目前为止我所做的工作

import random
import string

alphabet_string = string.ascii_uppercase
alphabet_list = list(alphabet_string)
def new_board():
board = []
for i in range (0,4):
board.append([])
for j in range (0,4):
board[i].append(random.choice(alphabet_list))
return board 



def board_to_string(board):
boardstring = ''
for i in range(0,4):
for j in range(0,4):
boardstring +="["
boardstring += board[i][j]
boardstring += "] "
boardstring = boardstring.rstrip()
boardstring += "n"
boardstring = boardstring.rstrip()
boardstring = boardstring.rstrip()

return boardstring
但是现在我被困在这个问题上了adjacent_cells (current_cell)有一个参数表示当前单元格坐标的元组返回一个元组列表,表示所有相邻单元格的坐标(包括上、下、左、右和对角线)应该只返回有效的坐标(那些存在于棋盘上的坐标,所以x或y最小0,x或y最大3)

我希望我能很好地解释这个

def adjacent_cells(current_cell):
adj_list = []
x = current_cell[0]
y = current_cell[1]
if y > 0:
adj_list.append((x, y-1))
if y < 3:
adj_list.append((x, y+1))
if x > 0:
adj_list.append((x-1, y))
if x < 3:
adj_list.append((x+1, y))
if y > 0 and x > 0:
adj_list.append((x-1, y-1))
if y > 0 and x < 3:
adj_list.append((x+1, y-1))
if y < 3 and x > 0:
adj_list.append((x-1, y+1))
if y < 3 and x < 3:
adj_list.append((x+1, y+1))
return adj_list

相关内容

最新更新