44 lines
1.1 KiB
Plaintext
44 lines
1.1 KiB
Plaintext
#include <basico.h>
|
|
|
|
#proto Hailstone(_X_,_SW_)
|
|
|
|
algoritmo
|
|
|
|
valor=27, máxima secuencia=0, vtemp=0
|
|
imprimir ( _Hailstone(27,1) ---copiar en 'máxima secuencia'--- , NL )
|
|
|
|
i=28
|
|
iterar
|
|
_Hailstone(i,0), copiar en 'vtemp'
|
|
cuando( sea mayor que 'máxima secuencia' ) {
|
|
máxima secuencia = vtemp
|
|
valor=i
|
|
}
|
|
++i
|
|
hasta que ' #(i==100000) '
|
|
imprimir ( #(utf8("Máxima longitud ")),máxima secuencia,\
|
|
" fue encontrada para Hailstone(",valor,\
|
|
#(utf8(") para números <100,000")), NL )
|
|
|
|
terminar
|
|
|
|
subrutinas
|
|
|
|
Hailstone(n, sw)
|
|
largo_de_secuencia = 0
|
|
v={}, n, mete(v)
|
|
iterar
|
|
tomar si ( es par(n), #(n/2), \
|
|
tomar si ( #(n<>1), #(3*n+1), 1) )
|
|
---copiar en 'n'--- mete(v)
|
|
hasta que ' #(n==1) '
|
|
#(length(v)), mover a 'largo_de_secuencia'
|
|
cuando (sw){
|
|
decimales '0'
|
|
#( v[1:4] ), ",...,",
|
|
#( v[largo_de_secuencia-4 : largo_de_secuencia] )
|
|
NL, #(utf8("Tamaño de la secuencia: "))
|
|
imprime esto; decimales normales
|
|
}
|
|
retornar ' largo_de_secuencia '
|