Форум сайта python.su
0
Привет, надеюсь мне здесь помогут, я написал программу, которая печатает латинский квадрат (символы в строке и в столбцах не должны повторяться) но она иногда зацикливается и ошибка.Не могу найти решение этой пролемы. В общем вот мой код:
from random import randint num=input('Enter count of rows: ') num=int(num) D=[] for n in range(0,num): d=[] for n in range(0,num): d.append(0) D.append(d) L=[] for k in range(0,len(D)): l=[] for i in range(0,len(D)): l.append(D[i][k]) L.append(l) for i in range(0,len(D)): for k in range(0,len(D)): while D[i].count(D[i][k])>=2 or L[k].count(L[k][i])>=2 or D[i][k]==0: D[i][k]=randint(1,num) L[k][i]=D[i][k] print('\n') for n in D: print(n)
Офлайн
568
Ver1SusИ где ошибка?
зацикливается и ошибка
D=[] for n in range(0,num): d=[] for n in range(0,num): d.append(0) D.append(d) L=[] for k in range(0,len(D)): l=[] for i in range(0,len(D)): l.append(D[i][k]) L.append(l)
Matrix = [[0]*num for _ in xrange(num)]
Офлайн
0
FishHookСпасибо за подсказки, может что-нибудь интересное придумается!
Думайте над алгоритмом.
Офлайн
9
Не уверен что это правильно и красиво:
NUM=int(raw_input(':'))+1 m=range(1,NUM) matrix=[m for _ in range(NUM)] i=NUM-1 for x in matrix[1:]: print m[i:]+x[0:i] i-=1
Офлайн
2
alexsisНе уверен, что циклический сдвиг это то, что хотел ТС. Тут то вроде как прицел на генерацию судоку.
Не уверен что это правильно и красиво:
Офлайн
7
Насчёт закцикливания - тут похоже причина немного в другой плоскости. Если Я прав, то должно зацикливаться на больших размерах квадрата - ведь там уже сколько ни крути, а когда числа или другие символы кончились, повторения не избежать. Поэтому висняк в while )
Офлайн
2
на счет зацикливания я уже написал тут http://python.su/forum/topic/22822/
ТС видимо решил, что если создать 2 темы, то решение будет получено в два раза быстрее)
Отредактировано Aris_P@ (Ноя. 14, 2013 18:10:28)
Офлайн