La ronda del club
- O(n) · Media
- Plan completo
- Python
- JavaScript
- diccionarios
- ciclos
Enunciado
En el club de lectura de Cleo hay una sola copia del libro del mes. Cada socio, cuando lo termina, se lo pasa siempre al mismo socio: eso lo acordaron al inscribirse y nadie lo cambia. Así que el libro acaba dando vueltas entre un grupo de socios, siempre en el mismo orden, mientras los demás ya no lo vuelven a ver. Cleo quiere saber de cuántos socios es ese grupo.
Escribe una función que reciba pases y empieza. pases es un diccionario donde cada llave es el nombre de un socio y su valor es el nombre del socio al que le pasa el libro. Todos los socios le pasan a alguien, y ese alguien siempre es un socio que también es llave de pases; un socio puede pasárselo a sí mismo. empieza es el socio que tiene el libro al principio, y también es llave de pases. Hay de 1 a 20 socios.
Regresa un entero: de cuántos socios es la vuelta que el libro repite para siempre. No es cuántos socios llegan a tener el libro: los que lo tienen una sola vez, antes de que la vuelta empiece, no van en esa cuenta.
Con {"Ana": "Beto", "Beto": "Carla", "Carla": "Dora", "Dora": "Beto"} y "Ana", el libro va Ana, Beto, Carla, Dora, Beto, Carla, Dora, y así sin parar. Ana lo tuvo una sola vez; los tres que se lo repiten son Beto, Carla y Dora, así que regresas 3. Si el libro llega con un socio que se lo pasa a sí mismo, ahí se queda: la vuelta es de 1 socio.
empieza puede estar ya dentro de la vuelta. Si lo está, nadie tiene el libro una sola vez y la vuelta son todos los que lo tocan.
Ejemplos
El ejemplo
{"Ana": "Beto", "Beto": "Carla", "Carla": "Dora", "Dora": "Beto"}, "Ana" → 3
Todos dan la vuelta
{"Iván": "Julia", "Julia": "Karla", "Karla": "Iván"}, "Iván" → 3
Un socio se lo pasa a sí mismo
{"Lupe": "Mario", "Mario": "Mario"}, "Lupe" → 1
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def vuelta(pases, empieza):
passJavaScript
function vuelta(pases, empieza) {
}Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.