P0 Ej6-c

Re: P0 Ej6-c

de Gonzalo Javier Diaz Ferreira -
Número de respuestas: 0
Hola! ¿Cómo están?

Una consulta... ,cuando indica "mostrar" la idea es sólo probar el programa para un número menor a 1000?

Por ejemplo para collatz(999) obtengo 50 pasos y para collatz(1001) obtengo 101 pasos

Lo que no entiendo si el ejercicio pide algún tipo de deducción a partir de lo anterior...

por ejemplo: si aplicamos la función a una potencia de 2, nos devuelve el listado decreciente de todas las potencias...

collatz(1024) = [1024, 512, 256, 128, 64, 32, 16, 8, 4, 2, 1]

Con respecto a la consulta de Martín, a mi me corre en menos de un segundo... intenté interpretar tu función pero no entiendo porqué usas el largo...
mi codigo (por si te sirve para comparar) es:

function collz = collatz(m) %comienzo funcion principal
             n = 100;
             a = []; % (vector dinámico)
             a(1) = m;

             % defino la funcion f dentro de mi funcion collatz
             function fcoll = f(m)
                       if (mod(m,2) == 0)
                             fcoll = m/2;
                       else
                             fcoll = 3*m + 1;
                       endif
              endfunction

       % luego hago un for hasta los 100 valores pero con un break por si llego antes al 1
            for i = 1:n
                 a(i+1) = f(a(i));

                 if (a(i+1) == 1);
                      break;
                 endif
            endfor

         % por ultimo devuelvo el vector "a"
          collz = a;

end % funcion principal

Gracias

Saludos