Inspirado por essa pergunta hoje cedo , gostaria de ver maneiras interessantes pelas quais várias linguagens de programação podem transformar um numpad em probabilidades. Geralmente, os jogos baseados em blocos permitem que você use um teclado numérico para se mover em qualquer direção com base em onde o seu personagem está atualmente. Ao criar uma IA para esses jogos, Math.random() * 8não é suficiente, então eu tive que ser um pouco criativo para fazer o movimento parecer um pouco natural.
Um numpad é definido como tal:
7 | 8 | 9
- - - - -
4 | x | 6
- - - - -
1 | 2 | 3
Observe que 5 é um número inválido, pois você não pode avançar para si mesmo.
Todos os exemplos usarão estas probabilidades: [50, 40, 30, 20, 10]
Se eu quisesse gerar probabilidades 8, ficaria assim:
40 | 50 | 40
-- | -- | --
30 | xx | 30
-- | -- | --
20 | 10 | 20
A saída seria [20, 10, 20, 30, 30, 40, 50, 40](com 5 omitidos) ou [20, 10, 20, 30, null, 30, 40, 50, 40](com 5 presentes)
Se eu quisesse gerá-los 1, ficaria assim:
30 | 20 | 10
-- | -- | --
40 | xx | 20
-- | -- | --
50 | 40 | 30
A saída seria [50, 40, 30, 40, 20, 30, 20, 10](com 5 omitidos) ou [50, 40, 30, 40, null, 20, 30, 20, 10](com 5 presentes)
Você pode escrever um programa completo que recebe a entrada da maneira usual (linha de comando, stdin) e imprime a saída, ou pode escrever uma função com um argumento numérico, que imprime ou retorna a saída. Seu programa ou função deve aceitar um número - a posição a ser gerada. Você deve usar estas probabilidades: [50, 40, 30, 20, 10](elas não precisam ser codificadas).
O código mais curto em bytes vence. As brechas padrão não são permitidas. As respostas postadas no encadeamento vinculado não são permitidas. Espaços à direita ou à direita são permitidos. Você pode tratar a posição 4como ausente ou vazia, dependendo da sua preferência. Não sou muito exigente no formato de saída - imprima-o como sequências separadas por vírgula ou como uma matriz.
(Esta é a minha primeira pergunta, vá devagar comigo!)