Ahora sí, con esto sí se puede comparar. Tu instrucción en la versión en Perl:

   if(($y<$NR)||($x<$NR)){

No es la misma a la versión en Python:

      if  y<NR :

Si la pones igual en Python, lo cual sería:

      if y < NR or x < NR:

Te va a dar un error, porque en algún punto el algoritmo excede las dimensiones 
de la matriz.
En Perl no pasa nada, porque Perl silenciosamente crea las entradas que 
requiere en un arreglo y las
inicia con ceros además. Si modificas el if en Perl para que sea igual al de Python, los programas hacen lo mismo.

Yo diría que hay que revisar el algoritmo, porque es incorrecto: los subíndices 
se salen
de rango en ciertos casos.

Gerardo



Horacio wrote:
En el hilo anterior me expresé de manera incompleta... acá está la
pregunta correcta...

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

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

Ensayenlo,,, y me dicen que cuernos pasa... antes que empiece a pensar
que python es ...
_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/

Responder a