El día 23 de agosto de 2012 15:46, gerardo Juarez
<[email protected]> escribió:
> 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.
Tenés razón... he ensayado lo que dices y es verdad, el perl
redimensiona el arreglo de manera dinámica y por eso funcionaba...
veré como implementar esto en el python...
Muchas gracias, me diste una mano...
>
> 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/
_______________________________________________
Python-es mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/