fundo
Eu tenho uma coleção de "meias para dias úteis", que são sete pares de meias marcadas pelos dias da semana. Quando lavo minhas meias, elas terminam em uma pilha e devo organizá-las nos pares corretos antes de colocá-las no armário. Minha estratégia é puxar uma meia aleatória da pilha de cada vez e colocá-la em uma gaveta. Sempre que há um par de meias na gaveta, amarro-as e coloco-as no armário. Sua tarefa é simular esse processo aleatório e retornar o número de empates necessários para encontrar o primeiro par correspondente.
Entrada
Sua entrada é um número inteiro N ≥ 1 . Ele representa o "número de dias em uma semana": há N pares de meias na pilha e cada par tem um rótulo distinto. Se necessário, você também pode usar uma semente PRNG como entrada.
Resultado
Sua saída é o número de meias que tenho que desenhar antes que o primeiro par correspondente seja encontrado. Por exemplo, se as duas primeiras meias já formarem um par correspondente, a saída será 2
.
Obviamente, a saída é aleatória e depende da ordem do desenho. Assumimos que todas as ordens de desenho são igualmente prováveis , de modo que cada vez que uma meia é desenhada, a escolha é uniforme e independente de todas as outras opções.
Exemplo
Vamos N = 3 , para que tenhamos 6 meias no total, rotuladas como AABBCC . Uma possível execução do "protocolo de desenho de meias" é a seguinte:
| 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
O primeiro par correspondente foi encontrado depois de desenhar o segundo B , que foi a terceira meia a ser desenhada, portanto a saída correta é 3
.
Regras e pontuação
Você pode escrever um programa completo ou uma função. A menor contagem de bytes vence e as brechas padrão não são permitidas. A entrada e a saída podem estar em qualquer formato razoável, incluindo unário (sequência de 1
s).
Você pode supor que o RNG interno do seu idioma seja perfeito. Você não precisa simular o protocolo de desenho de meias, desde que suas saídas tenham a distribuição de probabilidade correta.
"Casos de teste"
Aqui estão as probabilidades aproximadas de todas as saídas para a 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 testar sua solução, você pode executá-la por, digamos, 40.000 vezes e ver se a distribuição de saída está razoavelmente próxima disso.
Draw all socks. End up with an odd number.