A cena é:
Peter está na academia com seu amigo Brian quando Brian de repente precisa desesperadamente de seu inalador. Brian consegue contar a Peter o código de sua fechadura de combinação antes que ele desmaie no chão.
No momento em que Peter chega ao armário de Brian e vê o que o indicador está apontando, Stewie o embosca e joga uma lata cheia de spray de pimenta em seu rosto, cegando Peter.
Peter agora deve tentar abrir a fechadura sem olhar para ela. Ele começa a girar o dial para a direita, contando os números enquanto passa por eles. Ele então, no número correto, começa a girar o dial para a esquerda, ainda contando, e finalmente o gira para a direita até que a fechadura se abra.
O desafio:
Escreva uma função / programa que aceite duas entradas, a combinação de Brian e a posição do indicador. Saída os números que Peter tem que contar.
Regras:
- A combinação e a posição do indicador devem ser argumentos separados.
- A entrada pode ser no prompt de comando ou como argumentos de função.
- A saída deve ser impressa na tela / exibida de outra forma (não no arquivo)
- Suponha que a posição inicial não seja igual ao primeiro número e que todos os três números da combinação sejam exclusivos
- É o cadeado mostrado na figura abaixo, com números possíveis: 0-39.
Instruções:
Para abrir o bloqueio abaixo, você precisa seguir um conjunto de instruções:
- Você deve conhecer seu código. Suponha que seja (38, 16, 22) por enquanto.
- Gire o dial 3 vezes para a direita (passando o número inicial três vezes) e depois pare quando o primeiro número (38) estiver alinhado com o indicador
- Gire o dial 1 volta completa para a esquerda, passando o primeiro número e pare quando o segundo número (16) estiver alinhado com o indicador.
- Gire o dial para a direita e pare quando o terceiro número (22) estiver alinhado com o indicador
- Puxe a trava para baixo
Exemplo:
Input
38 16 22
33
Output
33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 39 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22
Aplicam-se regras de código padrão de golfe.
As soluções postadas posteriormente ainda podem vencer se forem menores que a resposta de Dennis.
function combination(code){alert("Help! Someone open this locker, the combination is "+code+"!")}