Aquellos de ustedes que gustan de Numberphile estarían familiarizados con el Dr. James Grime, quien describió un juego de dados no transitivo en su canal .
El juego consta de tres dados de 6 caras:
- Muere 1: 3,3,3,3,3,6
- Muere 2: 2,2,2,5,5,5
- Muere 3: 1,4,4,4,4,4
Dos jugadores seleccionan cada uno un dado para usar. Los tiran y el dado más alto gana, lo mejor de lo que sea.
Probablemente, el dado 1 vence al dado 2 con> 50% de probabilidad. Del mismo modo, muere 2 latidos muere 3, y, curiosamente, muere 3 latidos muere 1.
Escribir un programa tomando 1, 2o 3como entrada. Esto indica el dado que elige el usuario. Luego, el programa elige el dado que vencería al usuario y generaría los resultados de 21 tiradas, y " Computer/User wins with x points"
Reglas
- Code-golf, vota como desempate
- Debes usar RNG (o similares) para simular realmente las tiradas de dados.
- No soy demasiado estricto con el formato de salida. Está bien siempre y cuando muestres los dados, de alguna manera se separen entre las 21 tiradas (de una manera diferente de cómo se separan los dados en la misma tirada), y diga la oración anterior.
- La entrada puede ser stdin, argumento de línea de comando, desde la pantalla, etc.
Ejemplo
Entrada
1
Salida
4 3
4 3
4 3
4 3
4 3
4 3
4 3
4 3
4 3
4 6
1 3
4 3
4 3
1 3
4 3
1 3
4 3
4 3
4 3
4 3
4 6
Computer wins with 16 points
Aquí, el usuario elige el dado 1 y sus tiradas se muestran en la columna derecha. El programa elige morir 3 y lo vence.

|Z-21×Xqué no cambia el recuento de caracteresR - 228
Ejemplo de ejecución:
fuente
summary.factorcontable, guardando 9 caracteres.Mathematica
208172166159Espacios añadidos para mayor claridad.
fuente
Ruby 1.8, 165
getcobtiene el valor ascii de la entrada (solo ruby 1.8), que felizmente es congruente módulo 3 a su valor entero.scomienza en 21, por lo ques.times{code}se ejecutarácode21 veces y devolverá 21. En cada iteración, el ciclo suma o resta 1 de s dependiendo de quién gana, por lo que podemos ver quién ganó al ver sisha terminado por debajo de 21. Genial hasta ahora , pero luego necesito la expresión torpe[s/=2,21-s].maxpara extraer el número real de puntos. Hace mucho que quería hacer aritmética con el valor de retorno de<=>, así que estoy feliz de todos modos.fuente
Mathematica
234247Código
Uso
Explicación
nes el número 1, 2 o 3 que corresponde al dado del jugador. Como n también determina (pero no es igual) el dado de la computadora, podemos generar todas las tiradas posibles de los dados cuando n = 1, n = 2, n = 3. También podemos determinar sus respectivas probabilidades.Examine los datos justo después
RandomChoice:Si el jugador saca el dado 1, los únicos resultados posibles son los siguientes 4 pares
{{3, 1}, {3, 4}, {6, 1}, {6, 4}}Las probabilidades respectivas de estos pares son
{5, 25, 1, 5}/36, es decir,{5/36, 25/36, 1/36, 5/36}RandomChoice[<data>, 21]saca 21 tiradas de los dos dados.fuente
C,
205191Lee la elección del usuario de stdin.
fuente
for(c=51-getchar(p=0);,printf("%ser wins), reordenar expresión enrque comienzan con(y ahorrar espacio.(c+1)%3->-~c%3, hacerpstatic (inicializado a 0), eliminar{}despuésfor(;->,dentro de ellos), usarp<11?:dos veces dentro enprintflugar de asignarp,q.s,qen el bucleprintf, e incrementarpdespués, guardando así los paréntesis. También cambie lacasignación a usar%3o%7, dando un orden diferente de 0,1,2.Factor
Con incluye: 388
Sin: 300
Sí, Factor no es realmente el lenguaje a usar cuando se juega golf, pero es bueno.
fuente
Python 182
fuente
R 206
fuente