【发布时间】:2021-11-07 01:44:04
【问题描述】:
所以我不得不编写代码来查找网格中的所有对角线字符串mystery
mystery = [["r","a","w","b","i","t"],
["x","a","y","z","c","h"],
["p","q","b","e","i","e"],
["t","r","s","b","o","g"],
["u","w","x","v","i","t"],
["n","m","r","w","o","t"]]
在一些专家的帮助下,这就是我目前所拥有的,因为我是新手。帮助我的专家是https://stackoverflow.com/users/5237560/alain-t
def diagsDownRight(M):
diags,pad = [],[]
while any(M):
edge = [*next(zip(*reversed(M))),*M[0][1:]]
M = [r[1:] for r in M[1:]]
diags.append(pad+edge+pad)
pad.append("")
return [*map("".join,zip(*diags))]
虽然这确实有效,但我自己觉得很难掌握,我不想只写下我不理解的代码。那么,任何人都可以帮助使代码尽可能基本吗?
当我的意思是尽可能基本的时候,我的意思是把自己想象成一个刚刚学习了几个月的编码的人,请尽量简化我的代码。
【问题讨论】:
-
对角线是否只是从左上到右下,从右上到左下的两条 6 长对角线?还是棋盘内的每一条对角线?
-
这不是简单的代码,也不是简单的算法。承认吧,你的专家为你写的,不是“在……的帮助下”。初读时我觉得很难掌握,而且我已经使用 python 工作了好几年。如果他们能评论他们的代码就好了。
-
另外,只是一个注释,但上面包含的解决方案似乎来自here;我承认代码很混乱,tbh。
-
老实说,但如果我看到它在生产代码中使用,也许是在我正在工作的团队中,我可能会尽快逃跑。所以我至少在这点上绝对同意 OP。