Il existe un "jeu" existant où les pirates divisent rationnellement les pièces d'or selon certaines règles. Citation de Wikipedia :
Il y a 5 pirates rationnels, A, B, C, D et E. Ils trouvent 100 pièces d'or. Ils doivent décider comment les distribuer.
Les pirates ont un ordre d'ancienneté strict: A est supérieur à B, qui est supérieur à C, qui est supérieur à D, qui est supérieur à E.
Les règles de distribution du monde pirate sont donc les suivantes: que le pirate le plus âgé propose une distribution de pièces. Les pirates, y compris l'auteur de la proposition, votent ensuite sur l'acceptation de cette distribution. En cas d'égalité des voix, l'auteur de la proposition a voix prépondérante. Si la distribution est acceptée, les pièces sont déboursées et le jeu se termine. Sinon, le proposant est jeté par-dessus bord du bateau pirate et meurt, et le pirate le plus ancien suivant fait une nouvelle proposition pour redémarrer le système.
Les pirates fondent leurs décisions sur trois facteurs. Tout d'abord, chaque pirate veut survivre. Deuxièmement, compte tenu de la survie, chaque pirate souhaite maximiser le nombre de pièces d'or qu'il reçoit. Troisièmement, chaque pirate préférerait jeter un autre par-dessus bord, si tous les autres résultats étaient autrement égaux. Les pirates ne se font pas confiance et ne feront ni n'honoreront aucune promesse entre les pirates en dehors d'un plan de distribution proposé qui donne un nombre entier de pièces d'or à chaque pirate.
Défi
Prenez en entrée un entier n
, 1 <= n <= 99, où n
est le nombre de pirates - et sortez la distribution des pièces, en commençant par le premier pirate.
Cas de test (la première ligne est entrée; la deuxième sortie):
1
100
2
100 0
3
99 0 1
5
98 0 1 0 1
Il s'agit de code-golf , donc la solution la plus courte en octets l'emporte.
n < 100
? Les navires pirates surdimensionnés et sous-dorés ont également besoin d'une aide à la distribution.Réponses:
Gelée ,
1110 octetsEssayez-le en ligne! ou vérifiez tous les cas de test à la fois .
Comment ça fonctionne
Pour l'entrée n , la tâche se résume à créer la liste x, 0, 1, 0,… de longueur n dont la somme est 100 .
la source
Python, 33 octets
Calcule la première valeur, en ajoute
0, 1, 0, 1...
, tronque à la longueurn
.Notez que
-n/2+101
cela ne peut pas être raccourci101-n/2
car unaire et binaire-
ont une priorité différente: le premier est analysé comme(-n)/2
et le second comme101-(n/2)
.La récursivité était beaucoup plus longue (45):
la source
MATL , 12 octets
Cela utilise la version actuelle (9.2.2) du langage / compilateur, qui est antérieure à ce défi.
Exemple
Explication
la source
Pyth, 13 octets
Suite de tests .
la source
Python,
6258 octetsEDIT: Heureux que j'en ai fait une doublure. Mais je perds pour Python. Par conséquent, c'est juste pour référence. Merci @Zgarb
Il prend l'entrée, crée une liste de parité pf de tous les nombres de 1 à i. Définit ensuite le premier élément de i à 101-sum (n) et imprime.
Essayez-le ici
la source
Javascript ES6, 45 octets
Merci à @Neil pour 1 octet enregistré!
la source
202-a>>1
enregistre un octet.𝔼𝕊𝕄𝕚𝕟, 14 caractères / 26 octets
Try it here (Firefox only).
Pas mal, mais pas bon non plus ...
Explication
la source
Sérieusement,
2317 octetsEDIT : Merci @quintopia
Utilise la même approche que ma réponse Python, mais je fais le modulo 2 en utilisant le mappage, et plusieurs fois, je tourne ma pile.
Explication :
Ce code pousse l'entrée (je l'appellerai
i
). Pousse ensuiterange(1,i+1)
et crée une fonction. Pousse ensuite 2, fait pivoter la pile et prend finalement le modulo.Ensuite, mappez cette fonction sur la plage itérable. Cela donne la parité de chaque élément de la liste.
Enfin, duplique la pile, additionne la liste de parité, pousse 2, 10 ^ 2 et 100 + 1 et soustrait la somme (permettez-moi d'appeler cette valeur
n
). Ensuite, le code pousse 0, fait pivoter la pile de 1 et définit l'élément d'index 0 de la liste sur n. La liste résultante est implicitement imprimée.la source
,R`2@%`M;Σ2╤u-0(T
Japt, 14 octets
Encore un autre défi où je me retrouve à souhaiter un intégré que je venais d'envisager d'ajouter ...
Essayez-le en ligne!
la source
Actionscript 3, 87 octets
function x(n){var l=[],i=1;for (l[0]=int(101-n/2);i<n;){l[i]=++i%2;}return l.join(" ")}
Ce n'est pas la meilleure langue de golf, mais j'aime poster des réponses as3.
la source
05AB1E , 12 octets (non comp.)
Essayez-le en ligne!
la source
s)˜
peut être¸ì
.Perl
514944 octetsBesoin des options perlrun suivantes
-E
la source
QBIC ,
2825 octetsExplication
la source