Suponha que você tenha dois dados de seis lados. Role o par 100 vezes, calculando a soma de cada par. Imprima o número de vezes que cada soma ocorreu. Se uma soma nunca foi rolada, você deve incluir um zero ou alguma maneira de identificar que essa soma específica nunca foi rolada.
Exemplo de saída: [3, 3, 9, 11, 15, 15, 11, 15, 7, 8, 3]
O número de vezes que uma soma foi rolada é representado no índice de somas - 2
Neste exemplo, uma soma de dois foi rolada 3 vezes ([2-2]), uma soma de três três vezes ([3-2]), uma soma de quatro 9 vezes ([4-2]) e, portanto, em. Não importa que os dados individuais cheguem a uma soma (5 e 2 seriam contados como a mesma soma que 6 e 1)
As saídas "feias" são boas (montes de zeros à direita, saídas extras, maneiras estranhas de representar dados etc.), desde que você explique como os dados devem ser lidos.
fonte
0
na lista ou pode ser omitido?extra output
mas ainda não podemos produzir uma lista infinita de números aleatórios e dizer que ela aparece aleatoriamente em algum lugar, certo? Essa é uma brecha padrão Iirc.Respostas:
Geléia ,
1312 bytesUm link niládico. Formato de saída é uma lista de listas de
[value, count]
.(Rolagens zero significa que nenhuma entrada está presente na saída - por exemplo, uma saída
[[6, 12], [7, 74], [8, 14]]
identificaria que apenas somas de seis, sete e oito foram roladas.)Experimente online!
Quão?
fonte
Python 2 ,
847776 bytes-7 bytes graças a @JonathanAllan
-1 byte graças a @FelipeNardiBatista
Experimente online!
A saída possui dois zeros à esquerda
fonte
05AB1E ,
2119 bytes-2 bytes graças a @Emigna
Experimente online!
fonte
TÝÌтF6Lã.RO¸ì}{γ€g<
economiza 2 bytes.Mathematica, 50 bytes
Implementação direta. Se alguma soma nunca for alcançada, esta
0
será omitida da lista.fonte
MATL , 17 bytes
Saída é uma lista de 11 números (alguns deles possivelmente 0) separados por espaços, indicando o número de vezes para cada par de 2 a 12.
Experimente online!
Para comparação, o número médio teórico de vezes que cada par aparecerá em média pode ser calculado como
6:gtY+36/100*
.Se o número de jogadas for aumentado, os valores obtidos se aproximam dos teóricos. Veja, por exemplo, os valores teóricos e obtidos com 10000 rolos.
fonte
CJam,
1820 bytesExperimente online!
fonte
e`
leva apenas dois bytes.Perl 6 , 30 bytes
(^6).pick
é um número aleatório de zero a cinco.xx 100
faz uma lista de cem elementos desses números.xx 2
produz duas dessas listas.[Z+]
fecha essas duas listas com adição, produzindo uma lista de cem elementos de rolos de dois dados. Finalmente,bag
coloca essa lista em uma sacola, que é uma coleção com multiplicidade. Exemplo de saída REPL:Isso significa que 1, 9 e 0 ocorreram quatro vezes cada, quatro ocorreram catorze vezes, etc. Como os "dados" neste código produzem um número de 0 a 5, adicione dois a cada um desses números para obter os rolos um par de dados 1-6 padrão produziriam.
fonte
R ,
45bytes 37-7 bytes graças a Jarko Dubbledam
Retorna um objeto de tabela de elementos e contagens de cada um. Exclui quaisquer valores que não ocorreram.
Experimente online!
versão antiga:
sample(6,200,T)
amostras 200 vezes de1:6
uniforme da substituição, cria uma matriz com 2 linhas, soma as colunas, as classifica em ordem crescente e calcula os comprimentos das execuções. Omite qualquer soma de dados que não seja atingida.Retorna um
rle
objeto, que é impresso por padrão no seguinte formato:onde
lengths
estão as contagens e asvalues
somas dos dados.Link TIO
fonte
PHP, 53 bytes
imprime uma matriz associativa. A chave é resultado de dois dados e o valor é a contagem desses resultados.
Experimente online!
fonte
If a sum was never rolled, you must include a zero or some way to identify that that particular sum was never rolled.
JavaScript (ES6), 72 bytes
Visto que a saída "feia" é permitida, a seguir será exibida uma matriz contendo o número de vezes que cada pontuação de 2 a 12 foi rolada, com 89 elementos adicionais definidos como 0.
fonte
SILOS , 99 bytes
Experimente online!
Rola os dados e os armazena nos 11 primeiros pontos da pilha, depois itera através da pilha, imprimindo cada contador. Esse é um dos primeiros usos registrados da palavra-chave rand combinada com um operador de atribuição.
Vale ressaltar que algumas modificações podem ser feitas para gerar um histograma dos rolos.
Infelizmente, ele deve ser executado a partir do intérprete offline .
fonte
Elixir,
157118 bytesTentei algo mais difícil do que Jelly.
Explicação:
y
seja a variável com a soma do rolo.Deve ser chamado como
p.(p,[0,0,0,0,0,0,0,0,0,0,0,0,0])
. Irá emitir um aviso, mas retornará a matriz desejada com 13 elementos, os 2 primeiros devem ser ignorados.fonte
Java 8, 104 bytes
Um lambda retornando um
int[]
de frequências. Atribuir aSupplier<int[]>
.Experimente Online
Lambda ungolfed
fonte
q / kdb +,
312825 bytesSolução:
Exemplo:
Explicação:
Jogue um dado
100?6
, jogue-o novamente e adicione os vetores. Em seguida, veja onde cada resultado corresponde ao intervalo de 0 a 10 e, em seguida, resuma todas as verdades de cada lista:Notas:
'Golfe' é principalmente trocar
q
palavras - chave pelosk
equivalentes, a saber,each
etil
.fonte
QBIC , 45 bytes
Explicação:
fonte
APL, 14 bytes
Apresenta dados como uma tabela com a coluna esquerda representando a soma e a direita representando o número de ocorrências.
Explicado
Postagem anterior:
APL,
3631 bytes5 bytes salvos graças a @ Adám
Explicação
Como
11⍴⍉⌽f
funciona?fonte
(11⍴⍉⌽f)[⍋11⍴⍉f←,∘⍴⌸+/?100 2⍴6]
,∘⍴⌸+/?100 2⍴6
deve ser suficiente, pois lista as somas que ocorrem (indicando quais não estão lá) e suas frequências (portanto, nenhuma classificação é necessária).> <> , 93 bytes
Experimente online ou assista no playground de peixes !
O formato de saída feio é uma sequência de números separados por novas linhas, onde o n º número diz quantas vezes a soma era n - é feio, porque ele imprime para sempre, para todos os inteiros positivos n , embora a maioria das linhas será 0. ( O link TIO é modificado para parar após n = 12, ao custo de 5 bytes.)
O playground de peixes é bastante lento - leva cerca de três minutos e meio para imprimir até n = 12 na velocidade máxima -, então você pode modificá-lo para rolar 10 pares de dados em vez de 100, alterando o
aa*
na 5ª linha paraa
(isto é,a
seguido por dois espaços).Os dados aleatórios são feitos por este bit:
Eles
x
mudam a direção do peixe aleatoriamente. Supondo que seja implementado com probabilidades iguais, fica claro que o resultado do rolo de matriz é uma distribuição uniforme por simetria.Uma vez que o peixe tenha jogado 100 pares de dados, ele conta quantas vezes a soma foi n com esse bit (desembrulhado para maior clareza e começando no canto superior esquerdo):
Mantemos n na frente da pilha e usamos o registrador para contar o número de vezes que n aparece.
fonte
Javascript
8575 caracteresObrigado Shaggy!
História
85
fonte
a=[];for(i=100;i--;)a[o=(f=_=>Math.random()*6|0)()+f()]=(a[o]|0)+1;alert(a)
. (Nota: neste caso, o IIFE não poupa nem os custos de quaisquer bytes, mas há momentos em que você pode economizar um byte ou 2, por isso é útil para tê-lo em seu "golfbag".)|0
é a solução de golfe para "Math.floor ()" e também para "converter indefinido em 0".Perl 5 , 64 bytes
Experimente online!
Formato de saída:
<sum> <# rolls>
Para somas com zero rolos, a coluna de rolos está em branco.
fonte
PHP, 65 bytes
imprime um líder
0_
e, em seguida, as ocorrências de 2 a 12, seguidas de um sublinhado cada.Corra com
-nr
ou experimente online .fonte
K (oK) ,
2422 bytesSolução:
Experimente online!
Explicação:
k
'porta' da minhaq
solução. A avaliação ocorre da direita para a esquerda, portanto, colchetes ao redor do til (!
)Editar% s:
fonte
Pitão, 21 bytes
Produz cada etapa na criação dos rolos e, em seguida, gera a frequência de cada soma de 0 a 10 em uma linha separada.
fonte
Java (OpenJDK 8) , 95 bytes
Experimente online!
Explicações
fonte