Antecedentes
Tengo una colección de "calcetines entre semana", que son siete pares de calcetines etiquetados por los días de la semana. Cuando lavo mis calcetines, terminan en una pila, y debo organizarlos en los pares correctos antes de ponerlos en el armario. Mi estrategia es sacar un calcetín al azar de la pila a la vez y ponerlo en un cajón. Cada vez que hay un par de calcetines a juego en el cajón, los ato y los guardo en el armario. Su tarea es simular este proceso aleatorio y devolver el número de sorteos necesarios para encontrar el primer par coincidente.
Entrada
Su entrada es un entero N ≥ 1 . Representa el "número de días en una semana": hay N pares de calcetines en la pila, y cada par tiene una etiqueta distinta. Si es necesario, también puede tomar una semilla PRNG como entrada.
Salida
Su salida es la cantidad de calcetines que tengo que dibujar antes de encontrar el primer par coincidente. Por ejemplo, si los dos primeros calcetines ya forman un par coincidente, la salida es 2
.
Por supuesto, la salida es aleatoria y depende del orden de dibujo. Suponemos que todas las órdenes de dibujo son igualmente probables , de modo que cada vez que se dibuja un calcetín, la elección es uniforme e independiente de todas las demás opciones.
Ejemplo
Deje N = 3 , para que tengamos 6 calcetines en total, etiquetados como AABBCC . Una posible ejecución del "protocolo de dibujo de calcetines" es la siguiente:
| Pile | Drawer | Pairs
Begin | AABBCC | - | -
Draw B | AABCC | B | -
Draw C | AABC | BC | -
Draw B | AAC | C | BB
Draw A | AC | AC | BB
Draw A | C | C | AA BB
Draw C | - | - | AA BB CC
El primer par coincidente se encontró después de dibujar el segundo B , que fue el tercer calcetín que se dibujó, por lo que la salida correcta es 3
.
Reglas y puntaje
Puede escribir un programa completo o una función. El conteo de bytes más bajo gana, y las lagunas estándar no se permiten. La entrada y la salida pueden estar en cualquier formato razonable, incluido unario (cadena de 1
s).
Puede suponer que el RNG incorporado en su idioma es perfecto. No tiene que simular realmente el protocolo de dibujo de calcetines, siempre que sus salidas tengan la distribución de probabilidad correcta.
"Casos de prueba"
Estas son las probabilidades aproximadas de todas las salidas para la entrada N = 7 :
Output 2 3 4 5 6 7 8
Probability 0.077 0.154 0.210 0.224 0.186 0.112 0.037
Para probar su solución, puede ejecutarla, por ejemplo, 40 000 veces y ver si la distribución de salida está razonablemente cerca de esto.
Draw all socks. End up with an odd number.