Programación Desde Cero | Ejercicios de olimpiadas

Segadorfelix León@segadorfelixleon

def gusanolover(a,b,c):
    posiciones_gusano=[b*i for i in range(int(a/b)+1)]
    posiciones_hojas=[c*i for i in range(int(a/c)+1)]
    comido=len(set(posiciones_gusano).intersection(set(posiciones_hojas)))
    return comido

Primero la función recibe las variables, largo de rama (a), distancia que recorre para descansar el gusano (b), y la separación de hojas contiguas (una al lado de la otra) (c).

Luego por recursividad, genera dos arrays con las posiciones que ocupa en la rama el gusano, y las posiciones de las hojas.

Y finalmente compara para saber cuantas posiciones poseen en común, como conjuntos. Tomando en cuenta que siempre comparten la posición 0.

Muy buen ejercicio de practica.


Escribe una respuesta