[Programación]Por que el código perl funca y el python no?? para jugar y romperse la cabeza contra el teclado..

Horacio Castellini horacio9573 en yahoo.com.ar
Jue Ago 23 14:29:29 ART 2012


a ver este código perl hace lo que se espera... y da como resultado LM=3...
$A[0][0]=0; $A[0][1]=1; $A[0][2]=0; $A[0][3]=0;
$A[1][0]=1; $A[1][1]=0; $A[1][2]=1; $A[1][3]=0;
$A[2][0]=0; $A[2][1]=1; $A[2][2]=0; $A[2][3]=1;
$A[3][0]=0; $A[3][1]=0; $A[3][2]=1; $A[3][3]=0;

$NR=4;
$LM=0;

for($c=0;$c<$NR;$c++){
     $s=0;
     for($x=0;$x<$NR;$x++){
	$y=$x+$c;
	if(($y<$NR)||($x<$NR)){
	    if($A[$x][$y]==1){
		$s++;
                 print $x." ".$y." ".$s."\n";
	    } else{
		if($s>$LM){
		    $LM=$s;
		}
                 print $x." ".$y." ".$s." ".$LM."\n";
		$d[$s]++;
		$s=0;
	    }
	}
     }
}

print $LM."\n";

Este código python da como resultado LM=0, no da lo que se debe...

A=[[0,1,0,0],[1,0,1,0],[0,1,0,1],[0,0,1,0]]

NR=4

#Evalua la lineas periodicas, busca la diag maxima
d=[]
d=[0]*NR
LM=0
for c in range(NR):
    s=0
    for x in range(NR):
        y=x+c
        if  y<NR :
            if A[x][y]==1 :
                s+=1
                print x,y,s
            else:
                print x,y,s,LM
                if  s>LM :LM=s
                d[s]+=1
                s=0
print "Diagonal maxima %d" % LM
print d

Ensayenlo,,, y me dicen que cuernos pasa... antes que empiece a pensar 
que python es una Bost*** con perdón del Galli...



Más información sobre la lista de distribución Programacion