Saltar al contenido

La ronda del club

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):
    pass

JavaScript

function vuelta(pases, empieza) {
}
Resolver este reto

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.

Más retos de O(n)

Ver todos los retos →