Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: tincopasan en 15 Junio 2018, 07:37 am



Título: solución de un problema planteado varias veces (python) - nivel novato
Publicado por: tincopasan en 15 Junio 2018, 07:37 am
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
  1. def minmov(valor):
  2.    contador = 0
  3.    while valor > 1:
  4.        if valor % 2  == 0:
  5.            valor= valor /2
  6.            contador += 1
  7.        else:
  8.            valor = valor -1
  9.            contador += 1
  10.    return contador  
  11.  
  12. print(minmov(200))  
  13.  

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