Supongamos que tienes dos dados de seis caras. Tira el par 100 veces, calculando la suma de cada par. Imprima el número de veces que ocurrió cada suma. Si nunca se realizó una suma, debe incluir un cero o alguna forma de identificar que esa suma en particular nunca se realizó.
Ejemplo de salida: [3, 3, 9, 11, 15, 15, 11, 15, 7, 8, 3]
El número de veces que se lanzó una suma se representa en el índice de sumas: 2
En este ejemplo, una suma de dos fue lanzada 3 veces ([2-2]), una suma de tres 3 veces ([3-2]), una suma de cuatro 9 veces ([4-2]), y así en. No importa que los dados individuales lleguen a una suma (5 y 2 se contarán como la misma suma que 6 y 1)
Las salidas "feas" están bien (cargas de ceros finales, salidas adicionales, formas extrañas de representar datos, etc.) siempre que explique cómo deben leerse los datos.
fuente
0
en la lista o se puede omitir?extra output
pero todavía no podemos generar una lista infinita de números aleatorios y decir que aparece aleatoriamente en algún lugar, ¿verdad? Esa es una escapatoria estándar iirc.Respuestas:
Jalea ,
1312 bytesUn enlace niládico. El formato de salida es una lista de listas de
[value, count]
.(Cero tiradas significa que no hay tal entrada presente en la salida; por ejemplo, una salida de
[[6, 12], [7, 74], [8, 14]]
identificaría que solo se rodaron sumas de seis, siete y ocho).Pruébalo en línea!
¿Cómo?
fuente
Python 2 ,
847776 bytes-7 bytes gracias a @JonathanAllan
-1 byte gracias a @FelipeNardiBatista
Pruébalo en línea!
La salida tiene dos ceros a la izquierda
fuente
05AB1E ,
2119 bytes-2 bytes gracias a @Emigna
Pruébalo en línea!
fuente
TÝÌтF6Lã.RO¸ì}{γ€g<
ahorra 2 bytes.Mathematica, 50 bytes
Implementación directa. Si nunca se alcanza una suma,
0
se omite de la lista.fuente
MATL , 17 bytes
La salida es una lista de 11 números (algunos de ellos posiblemente 0) separados por espacios, que indican el número de veces para cada par de 2 a 12.
Pruébalo en línea!
A modo de comparación, la cantidad promedio teórica de veces que cada par aparecerá en promedio se puede calcular como
6:gtY+36/100*
.Si se aumenta el número de rollos, los valores obtenidos se aproximan a los teóricos. Ver por ejemplo los valores obtenidos y teóricos con 10000 rollos.
fuente
CJam,
1820 bytesPruébalo en línea!
fuente
e`
solo toma dos bytes.Perl 6 , 30 bytes
(^6).pick
es un número aleatorio de cero a cinco.xx 100
hace una lista de cien elementos de tales números.xx 2
produce dos de esas listas.[Z+]
comprime esas dos listas con suma, produciendo una lista de cien elementos de tiradas de dos dados. Finalmente,bag
pone esa lista en una bolsa, que es una colección con multiplicidad. Ejemplo de salida REPL:Eso significa que 1, 9 y 0 ocurrieron cuatro veces cada uno, cuatro ocurrieron catorce veces, etc. Dado que los "dados" en este código producen un número del 0 al 5, agregue dos a cada uno de estos números para obtener un par de tiradas. se producirían de 1 a 6 dados estándar.
fuente
R ,
4537 bytes-7 bytes gracias a Jarko Dubbledam
Devuelve una tabla objeto de elementos y recuentos de cada uno. Excluye los valores que no ocurrieron.
Pruébalo en línea!
versión antigua:
sample(6,200,T)
muestra 200 veces de manera1:6
uniforme con reemplazo, luego forma una matriz con 2 filas, suma las columnas, luego las ordena en orden ascendente y calcula las longitudes de las corridas. Omite cualquier suma de dados que no se alcance.Devuelve un
rle
objeto, que imprime de forma predeterminada en el siguiente formato:¿Dónde
lengths
están los recuentos y lasvalues
sumas de dados?Enlace TIO
fuente
PHP, 53 bytes
imprime una matriz asociativa. la clave es el resultado de dos dados y el valor es el recuento de estos resultados
Pruébalo en línea!
fuente
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
Al ver que se permite la salida "fea", lo siguiente generará una matriz que contiene el número de veces que se obtuvo cada puntaje de 2-12, con 89 elementos adicionales establecidos en 0.
fuente
SILOS , 99 bytes
Pruébalo en línea!
Tira los dados y los almacena en los primeros 11 puntos del montón, luego solo itera a través del montón imprimiendo cada contador. Este es uno de los primeros usos registrados de la palabra clave rand combinada con un operador de asignación.
Vale la pena señalar que se pueden hacer algunas modificaciones para generar un histograma de los rollos.
Lamentablemente, debe ejecutarse desde el intérprete fuera de línea .
fuente
Elixir,
157118 bytesIntenté algo más duro que Jelly.
Explicación:
y
sea la variable con la suma total.Debería llamarse como
p.(p,[0,0,0,0,0,0,0,0,0,0,0,0,0])
. Aparecerá una advertencia, pero devolverá la matriz deseada con 13 elementos, los 2 primeros deben ignorarse.fuente
Java 8, 104 bytes
Una lambda que devuelve una
int[]
de frecuencias. Asignar aSupplier<int[]>
.Pruébalo en línea
Lambda sin golf
fuente
q / kdb +,
312825 bytesSolución:
Ejemplo:
Explicación:
Tira un dado
100?6
, tira un dado de nuevo y suma los vectores. Luego vea donde cada resultado coincide con el rango 0..10, luego resuma todas las verdades en cada lista:Notas:
'Golf' es en su mayoría intercambiando
q
palabras clave por losk
equivalentes, a saber,each
ytil
.fuente
QBIC , 45 bytes
Explicación:
fuente
APL, 14 bytes
Presenta los datos como una tabla con la columna izquierda que representa la suma y la derecha que representa el número de ocurrencias.
Explicado
Publicación anterior:
APL,
3631 bytes5 bytes guardados gracias a @ Adám
Explicación
Como
11⍴⍉⌽f
funcionafuente
(11⍴⍉⌽f)[⍋11⍴⍉f←,∘⍴⌸+/?100 2⍴6]
,∘⍴⌸+/?100 2⍴6
debería ser suficiente, ya que enumera las sumas que ocurren (lo que indica cuáles no están allí) y sus frecuencias (por lo que no es necesario ordenarlas).> <> , 93 bytes
¡Pruébelo en línea o mírelo en el área de juegos para peces !
El formato de salida fea es una secuencia de números separados por saltos de línea, en el que el n º Número dice cuántas veces la suma era n - es feo porque imprime siempre, para todos los enteros positivos n , aunque la mayoría de las líneas será 0. ( El enlace TIO se modifica para detenerse después de n = 12, a un costo de 5 bytes).
El área de juegos para peces es bastante lenta: toma aproximadamente tres minutos y medio imprimir hasta n = 12 a la velocidad máxima, por lo que es posible que desee modificarlo para lanzar 10 pares de dados en lugar de 100 cambiando el
aa*
en la quinta línea aa
(es decir,a
seguido de dos espacios).Las tiradas de dados al azar se realizan por este bit:
Los
x
s cambian la dirección del pez al azar. Suponiendo que se implemente con las mismas probabilidades, está claro que el resultado del dado es una distribución uniforme por simetría.Una vez que el pez ha lanzado 100 pares de dados, cuenta cuántas veces la suma fue n con este bit (sin envolver para mayor claridad y comenzando en la parte superior izquierda):
Mantenemos n al frente de la pila y usamos el registro para contar la cantidad de veces que aparece n .
fuente
Javascript
8575 caracteresGracias Shaggy!
Historia
85
fuente
a=[];for(i=100;i--;)a[o=(f=_=>Math.random()*6|0)()+f()]=(a[o]|0)+1;alert(a)
. (Nota: en este caso, el IIFE no guarda ni cuesta ningún byte, pero hay momentos en que puede ahorrarle un byte o 2, por lo que es útil tenerlo en su "bolsa de golf".)|0
es la solución de golf para "Math.floor ()" y también para "convertir undefined a 0".Perl 5 , 64 bytes
Pruébalo en línea!
Formato de salida:
<sum> <# rolls>
Para sumas con cero rollos, la columna de rollos está en blanco.
fuente
PHP, 65 bytes
imprime un inicio
0_
y luego las ocurrencias de 2 a 12, seguido de un guión bajo cada uno.Ejecutar
-nr
o probarlo en línea .fuente
K (oK) ,
2422 bytesSolución:
Pruébalo en línea!
Explicación:
k
'puerto' de miq
solución. La evaluación ocurre de derecha a izquierda, por lo tanto, los corchetes alrededor del til (!
)Ediciones:
fuente
Pyth, 21 bytes
Emite cada paso en la creación de los rollos, luego emite la frecuencia de cada suma 0-10 en una línea separada.
fuente
Java (OpenJDK 8) , 95 bytes
Pruébalo en línea!
Explicaciones
fuente