问题描述
我正在用Codewars解决Sudoku kata,这是我的代码:
def valid_solution(S):
s=[];L=[];l=[];S1=S[:3];S2=S[3:6];S3=S[6:]
def verif(S):
for i in S:
if len(set(i))!=9 or 0 in set(i): return False
for z in range(0,9):
for i in range(len(S)): s.append(S[i][z])
L.append(s);s=[]
def loop(h):
x=3;y=0;s=[];l=[]
for z in range(len(h)):
for i in range(3): s.append(h[i][y:x])
y+=3;x+=3;l.append(s);s=[]
return l
l=loop(S1)+loop(S2)+loop(S3)
for i in range(len(l)):
for z in range(len(l[i])): l[i][z]=''.join(list(map(str,l[i][z])))
l[i]=''.join(l[i])
return False if verif(L)==False or verif(S)==False or verif(l)==False else True
我想知道是否有一种方法可以使它更短,而不是不使用矩阵等,而是通过使“ for in”循环更短。
示例:
for z in range(0,9):
for i in range(len(S)): s.append(S[i][z])
L.append(s);s=[]
->
[(L.append(s),s=[]) [s.append(S[i][z] for z in range(0,9)] for i in range(len(S))]
谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)