El día 23 de agosto de 2012 16:05, Horacio <horacio9...@gmail.com> escribió: > Buenas, este problema me desafía todo mi sentido común... lo que busco > en una matriz A de NRxNR es hallar las codiagonales no nulas y su > longitud.. > > AVISO: Este algoritmo funciona, lo he probado en PERL!! > > Pero el siguiente código no se por qué LM y S se mantienen en cero??? > luego del ELSE: cuando s+=1 si se incrementa en 1!! como lo compruebo > en el primer "print" WTF!!! > > d=[] > d=[0]*NR > LM=0 > s=0 > for c in range(5,NR):
¿Qué se supone que hace ése 5? Quítalo y todo irá bien (sospecho que estabas usando matrices de 5x5,¿no?). Después, intenta pulir más el código usando compresiones de listas sin tanta variable intermedia: LM=0 for i,row in enumerate(A): for j,col in enumerate(row[i:]): if col==1: LM=i+j+1 > s=0 > for x in range(NR): > y=x+c > if (y<NR): > if (A[x][y]==1): > s+=1 > print s # aca da <> 0 > else: > print s,LM # aca me da s=LM=0 ???? el equivalente en > perl me da <> 0??? WTF > if (s>LM): > LM=s > d[s]+=1 > s=0 > print "Diagonal maxima %d" % LM > > Alguien me puede decir que cuernos le pasa al if?? -- Hyperreals *R: http://ch3m4.org/blog Quarks, bits y otras criaturas infinitesimales _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/