solución de un problema planteado varias veces (python) - nivel novato

Iniciado por tincopasan, 15 Junio 2018, 07:37 AM

0 Miembros y 1 Visitante están viendo este tema.

tincopasan

A veces participo en otros foros, más  que todo por curiosidad y hace poco plantearon este problema, lo curioso es que en el mismo foro está el mismo problema desde el 2017 y nadie dio una respuesta:
Empiezas con 1€ y, con cada movimiento, puedes o bien doblar tu dinero o sumar otro euro. ¿Cuál es el mínimo número de movimientos para obtener exactamente 200€?
hay que hacer una función, bueno, no la publiqué en ese foro porque me molesta que pidan todo servido y no hacen ni un intento de solución. Lo hago acá porque quizá le sirva a quién este aprendiendo en algún curso. Es muy fácil y solo cuestión de lógica simple, así que es solo para novatos.
Código (python) [Seleccionar]

def minmov(valor):
   contador = 0
   while valor > 1:
       if valor % 2  == 0:
           valor= valor /2
           contador += 1
       else:
           valor = valor -1
           contador += 1
   return contador  

print(minmov(200))  


claro que hay otras formas pero voy por la que cualquiera entienda con solo mirar.
Saludos