Écrivez le programme ou la fonction la plus courte qui génère ces 1000 nombres ou une séquence (indexée 0 ou 1) qui commence par eux.
[0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0,
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1,
0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1,
0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,
1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1,
0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0,
1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1,
0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,
0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0,
1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1,
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1,
1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0,
0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1,
1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1,
1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1,
1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0,
0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1,
1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0,
0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1,
1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0,
0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1,
1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0,
0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1,
1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0,
0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1,
1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0,
0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1,
1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0,
0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1,
1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0,
0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1,
1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0,
0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1,
1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0,
0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1,
1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0]
code-golf
sequence
kolmogorov-complexity
John mangual
la source
la source
Réponses:
Gelée ,
1110 octets1 octet enregistré grâce à @Dennis
Essayez-le en ligne!
Comment?
J'ai d'abord remarqué que le motif alterne entre les longueurs 4 et 3, sautant l'étape de longueur 4 toutes les quelques courses. Cela m'a amené à chercher un nombre qui pourrait être divisé en index actuel, puis pris le mod 2 et plancher - c'est-à-dire en récupérant le bit le moins significatif - pour donner le bit à cet index dans la série. Après beaucoup d'essais et d'erreurs, j'ai trouvé que cela
3.41845
fait exactement cela, mais la multiplication par sa réciproque approximative (.29253
) est un octet plus court.la source
Ḃ
mais apparemment c'est juste le mod 2 plutôt que le bit le plus bas, j'ai donc ajouté leḞ
pour le réparer. Échangé maintenantȷḶ×⁽q£:ȷ5Ḃ
fonctionne, pour 10 octets.Dyalog APL ,
998382 octetsEssayez-le en ligne!
Certainement pas la solution envisagée car cela contient encore beaucoup de données codées en dur, mais c'est un début.
la source
Rubis ,
34 29 2622 octetsEssayez-le en ligne!
Explication rapide: cela fonctionne à cause du nombre magique 629. J'ai remarqué que la séquence commence à se répéter après le 629e élément, et j'ai essayé d '"améliorer" certaines réponses existantes, en utilisant uniquement des mathématiques entières. J'ai trouvé que l'autre "nombre magique" (0,29253) est en fait 184/629.
la source
Gelée , 31 octets
Compte tenu du schéma, il existe probablement un chemin encore plus court ...
Essayez-le en ligne!
Comment?
Exploite la structure de longueur de répétition apparente à une profondeur de trois.
la source
Java 8,
756462 octetsImprime la séquence entière sans délimiteur pour enregistrer les octets, car ils le seront uniquement
0
et de1
toute façon.Réponse de Ports of @ETHproductions Jelly , car je doute que je trouve quelque chose de plus court ..
Essayez-le en ligne.
Explication:
Ancienne réponse renvoyant le tableau résultant ( 75 octets ):
Essayez-le en ligne.
Explication:
la source
JavaScript (Node.js) ,
4133 octets, portMerci Rick Hitchcock pour 4+ octets
Essayez-le en ligne!
JavaScript (Node.js) , 121 octets, original
Essayez-le en ligne!
la source
f=(i=0)=>i<1e3?(i*.29253&1)+f(i+1):''
Stax ,
1311 octetsExécutez-le et déboguez-le sur staxlang.xyz!
Portage sur Stax de la réponse Jelly de @ ETHproductions (avant sa modification) avec quelques modifications par @recursive pour économiser deux octets.
la source
Wolfram Language (Mathematica) , 96 octets
J'ai cherché un automate cellulaire qui regarde les 4 voisins à gauche et produit le motif de marche à gauche vu dans les données lorsque vous partitionnez les données en longueur 7 et conservez chaque troisième ligne.
Cet automate cellulaire fonctionnera pendant 29 générations dont chacune est tripliquée, correspondant parfaitement à la séquence pour les caractères 1 à 629. Cependant, la séquence commence à se répéter au 630e caractère plutôt que de continuer le modèle observé, donc un code supplémentaire est nécessaire pour gérer la répétition de le motif tronqué. Je génère le motif principal deux fois pour atteindre 1258 caractères.
Sans ce problème, nous pourrions le faire en 74 octets plus courts. Le 47 est le nombre de générations nécessaires pour arriver à 1000 caractères (cela va en fait à 1008 = 48 * 7 * 3)
Essayez-le en ligne!
la source
Z80Golf , 27 octets
Essayez-le en ligne!
Traduit de ce code C:
Démontage:
Il s'agit essentiellement d'une approche arithmétique à virgule fixe: (11149 + 65536) / 2 18 ≈ 0,29253, la constante utilisée par d'autres réponses.
la source
J , 17 octets
Port AJ de la réponse Jelly d'ETHproduction.
Essayez-le en ligne!
la source
Japt , 13 octets
Version Japt de la réponse Jelly d' ETHproduction .
Bug corrigé grâce à Oliver .
Essayez-le ici.
la source
Fusain , 13 octets
Essayez-le en ligne! Le lien est vers la version détaillée du code. Explication:
Merci à @ ASCII uniquement pour avoir permis à l'indexation d'accepter des flottants qui sont convertis en entier (puis automatiquement réduit modulo 2 dans ce cas).
la source
C,
555352 octetsPort de Kevin Cruijssen est Java réponse . Essayez-le en ligne ici .
Merci à vazt pour avoir joué au golf 2 octets et à Jonathan Frech pour avoir joué au golf un de plus.
Version non golfée:
la source
i
est initialisé à 0 car il est global, vous pouvez donc supprimer lei=0
de l'initialiseur for-loop pour économiser 3 octets. De plus, si vous introduisez une deuxième variable (en tant que paramètref()
) et que vous lui affectezi++*.29253
, vous pouvez éviter la conversion et enregistrer encore 2 octets:i;f(j){for(;i<1e3;)printf("%d",(j=i++*.29253)%2);}
essayez-la en ligne!i
est initialisé à 0 au début, mais si nous voulons appeler cette fonction plus d'une fois, ce n'est pas suffisant. Utiliserj
pour éviter le plâtre est un grand golf, merci./// , 63 octets
Essayez-le en ligne!
la source