我的老师正在让我们做一个旧的ACSL计划进行练习,他说我们可以使用我们想要的任何资源。该计划从2013年开始。链接到这里:https://s3.amazonaws.com/iedu-attachments-question/5a989d787772b7fd88c063aff8393d34_1bee2d300c35eec13edf0a3af515a5a5.pdf
我们启动了这个程序,但是我们碰到了一堵墙,我们不知道该怎么办:
board = [
[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25]
]
for i in range(1, 6):
pieces = input("%d. "%(i)).split(",")
white = []
black = []
black_start = int(pieces[0])+1
for j in range(1, black_start):
white.append(int(pieces[j]))
for k in range(black_start+1, len(pieces)):
black.append(int(pieces[k]))
print(white)
print(black)
for pair in board:
任何人都可以给我们一些提示吗?我们用Python编写。
答案 0 :(得分:0)
我认为board
实际上没有任何目的。
用于解析输入到黑白片段位置的代码看起来不错,应该可以制作成函数。
对于调试,有一个功能可以获取黑白片段位置并打印电路板 - 例如使用字符#
表示黑色,O
表示白色,以及{ {1}}为空。这将帮助您了解您的计划正在做什么。
对于每个方向,你应该有一个函数(即.
)返回下一个位置(如果它在板的边缘,则为left
)和另一个(None
})返回该方向上的连续位置列表。因此left_lst
返回left(17)
,16
返回left(16)
,None
返回left_lst(19)
。提示:如何根据[18, 17, 16]
?
left_lst
然后:对于每个白色部分,通过将移向每个方向或远离每个方向来检查可捕获的内容。你知道应该只有一个解决方案,所以只要你找到它就可以退货;如果您没有找到,请返回left
。
希望有所帮助!
为了娱乐和兴趣,我提出了解决方案。希望你学到很多东西!
None