Existe un "juego" existente donde los piratas dividen racionalmente las monedas de oro de acuerdo con ciertas reglas. Citando de Wikipedia :
Hay 5 piratas racionales, A, B, C, D y E. Encuentran 100 monedas de oro. Deben decidir cómo distribuirlos.
Los piratas tienen un estricto orden de antigüedad: A es superior a B, superior a C, superior a D, superior a E.
Las reglas de distribución del mundo pirata son las siguientes: que el pirata más veterano debería proponer una distribución de monedas. Los piratas, incluido el proponente, votan si aceptan esta distribución. En caso de empate, el proponente tiene el voto de calidad. Si se acepta la distribución, las monedas se desembolsan y el juego termina. Si no, el proponente es arrojado por la borda del barco pirata y muere, y el siguiente pirata más veterano hace una nueva propuesta para comenzar el sistema nuevamente.
Los piratas basan sus decisiones en tres factores. En primer lugar, cada pirata quiere sobrevivir. En segundo lugar, dada la supervivencia, cada pirata quiere maximizar el número de monedas de oro que recibe cada uno. Tercero, cada pirata preferiría lanzar otro por la borda, si todos los demás resultados fueran iguales. Los piratas no confían el uno en el otro, y no harán ni cumplirán ninguna promesa entre piratas, aparte de un plan de distribución propuesto que otorgue un número entero de monedas de oro a cada pirata.
Desafío
Tome como entrada un número entero n
, 1 <= n <= 99, donde n
está el número de piratas, y genere la distribución de monedas, comenzando con el primer pirata.
Casos de prueba (se ingresa la primera línea; la segunda salida):
1
100
2
100 0
3
99 0 1
5
98 0 1 0 1
Este es el código de golf , por lo que gana la solución más corta en bytes.
n < 100
? Los barcos piratas con exceso de personal y poco dorado también necesitan ayuda de distribución.Respuestas:
Jalea ,
1110 bytesPruébalo en línea!o verificar todos los casos de prueba a la vez .
Cómo funciona
Para la entrada n , la tarea se reduce a crear la lista x, 0, 1, 0, ... de longitud n cuya suma es 100 .
fuente
Python, 33 bytes
Calcula el primer valor, agrega algunos
0, 1, 0, 1...
, trunca a la longitudn
.Tenga en cuenta que
-n/2+101
no se puede acortar101-n/2
porque unario y binario-
tienen una precedencia diferente: el primero se analiza como(-n)/2
y el segundo como101-(n/2)
.La recursión fue mucho más larga (45):
fuente
MATL , 12 bytes
Esto usa la versión actual (9.2.2) del lenguaje / compilador, que es anterior a este desafío.
Ejemplo
Explicación
fuente
Pyth, 13 bytes
Banco de pruebas .
fuente
Python,
6258 bytesEDITAR: Me alegro de haberlo hecho de una sola línea. Pero pierdo por Python. Por lo tanto, esto es solo para referencia. Gracias @Zgarb
Toma la entrada, crea una lista de paridad de todos los números del 1 al i. Luego establece el primer elemento en i en 101-sum (n) e imprime.
Pruébalo aquí
fuente
Javascript ES6, 45 bytes
¡Gracias a @Neil por 1 byte guardado!
fuente
202-a>>1
Guarda un byte.𝔼𝕊𝕄𝕚𝕟, 14 caracteres / 26 bytes
Try it here (Firefox only).
No es malo, pero tampoco es bueno...
Explicación
fuente
En serio,
2317 bytesEDITAR : Gracias @quintopia
Utiliza el mismo enfoque que mi respuesta de Python, pero hago el módulo 2 usando mapeo, y varias veces, giro mi pila.
explicación :
Este código empuja la entrada (lo llamaré
i
). Luego empujarange(1,i+1)
y hace una función. Luego empuja 2, gira la pila y finalmente toma el módulo.A continuación, asigne esta función al rango iterable. Esto da la paridad de cada elemento en la lista.
Finalmente, duplica la pila, suma la lista de paridad, presiona 2, 10 ^ 2 y 100 + 1, y resta la suma (déjame llamar a este valor
n
). Luego, el código empuja 0, gira la pila en 1 y establece el elemento índice 0 de la lista en n. La lista resultante se imprime implícitamente.fuente
,R`2@%`M;Σ2╤u-0(T
Japt, 14 bytes
Sin embargo, otro desafío en el que me encuentro deseando un dispositivo incorporado que acababa de considerar agregar ...
Pruébalo en línea!
fuente
Actionscript 3, 87 bytes
function x(n){var l=[],i=1;for (l[0]=int(101-n/2);i<n;){l[i]=++i%2;}return l.join(" ")}
No es el mejor lenguaje de golf, pero me gusta publicar 3 respuestas.
fuente
05AB1E , 12 bytes (sin comp.)
Pruébalo en línea!
fuente
s)˜
puede ser¸ì
.Perl
514944 bytesNecesita las siguientes opciones de perlrun
-E
fuente
QBIC ,
2825 bytesExplicación
fuente