En tant que grand fan de la série télévisée Lost , j'ai toujours été intrigué par la séquence de chiffres qui apparaît de manière répétitive dans les épisodes. Ces chiffres sont:
(A104101)
À l'aide de n'importe quel langage de programmation, écrivez un code qui génère ces nombres.
Notation:
La réponse la plus courte l'emporte
La sortie ne doit pas contenir d'autres chiffres ou lettres. Vous pouvez utiliser n'importe quel autre caractère comme séparateur, ou même aucun séparateur du tout.
Vous ne pouvez pas séparer les chiffres du même numéro. est une réponse valide, mais ne l'est pas.
Vous devez respecter la commande.
Si votre code ne contient aucun des chiffres de la séquence, réduisez votre score de 30%. Cette règle vous permet de saisir les chiffres séparément. Par exemple:
abcde1fg5h
Est un candidat valide car la réponse ne contient pas le nombre , seulement ses chiffres. Cependant, tout ou invalidera le bonus.
Si le code ne contient aucun chiffre, réduisez votre score de 50%. D'autres personnages comme , ou sont toujours valables pour ce bonus.
la source
restricted-source
balise qui aurait pu être utilisée ici: bien que la plupart des réponses évitent les solutions évidentes, je pense que le défi aurait été légèrement plus intéressant si l'utilisation des chiffres avait été interdite.Réponses:
Perdu ,
2927/2 = 13,5 octetsEssayez-le en ligne! ou vérifier qu'il est déterministe
Semblait comme la bonne langue à utiliser.
Explication:
Lost est un langage 2D où le pointeur commence n'importe où , va dans n'importe quelle direction. Cela conduit généralement à de nombreuses vérifications que le pointeur n'est pas entré dans une section plus tôt.
la source
Gelée , 7/2 = 3,5 octets
Imprime les nombres sans séparateur, c'est-à-dire l'entier4815162342 .
Essayez-le en ligne!
Comment ça fonctionne
“ƲÞIȥ’
est un littéral entier bijectif base-250.Ʋ
,Þ
,I
, Etȥ
ont (1-based) indicesEnfin,2 ⋅ 2407581171 = 4815162342 .
Ḥ
(unhalve) double l'entier, donnantLe doublement est nécessaire, car le codage de la sortie mène directement à
“¡9)Ƙ[’
, qui contient un chiffre.la source
Neim ,
65 octets,32,5 pointsExplication:
Essayez-le en ligne!
la source
05AB1E , score:
1097 octets / 2 = 3,5Essayez-le en ligne.
Ou alternative de 7 octets :
Essayez-le en ligne.
Les deux sorties de l'entier
4815162342
.Explication:
Voir cette astuce de mes 05AB1E (section Comment compresser les grands entiers? ) Pour comprendre pourquoi
•‘o]Ê•
est2407581171
et•’µ[%•
est2432615184
.Ancienne réponse de 9 octets produisant la liste
[4,8,15,16,23,42]
:-1 octet (et donc -0,5 score) grâce à @Emigna .
Plus long que l'autre réponse 05AB1E , mais cela génère la liste
[4,8,15,16,23,42]
au lieu de l'entier4815162342
.Essayez-le en ligne.
Explication:
Voir cette astuce 05AB1E (sections Comment compresser de grands entiers? Et Comment compresser des listes d'entiers? ) Pour comprendre pourquoi
•ΓƒÇ²•
est1301916192
et•ΓƒÇ²•50в
est[4,8,15,16,23,42]
.la source
•ΓƒÇ²•т;в
pour 4,5 car les numéros post-script sont acceptables pour le bonus.JavaScript (ES7), 34/2 = 17 octets
Essayez-le en ligne!
Cela décode et évalue l'expression
"65058101+41**6"
, qui ne contient aucun chiffre une fois codé en base-64.JavaScript (ES6), 13 octets
Solution évidente ennuyeuse.
Essayez-le en ligne!
la source
Python 3 , 25 octets, 12,5 points
Essayez-le en ligne!
𩦦 (髒, ⿰ 馬 葬), 𧨦 (謚, ⿰ 言 ⿱⿵ 八一 皿) coûtent 4 octets, mais U + 0657 ne coûte que 2 octets ...
Python 3 , 29 octets, 14,5 points
Essayez-le en ligne!
𩦦 (⿰ 馬 葬) est le caractère variant de 髒 qui signifie "sale". 湡 est le nom d'une rivière. Et ils n'ont rien à voir avec cette question que je connaissais.
la source
4815 162342
valide. Enregistre ainsiprint(*map(ord,'ዏ𧨦'))
1,5 point :) (print(*map(ord,'밗'))
enregistrerait 2 points mais a été spécifié comme invalide).Brain-Flak , 52/2 == 26 octets
Essayez-le en ligne!
la source
Java 8, score:
1211,9 (70% de 17 octets)-0,1 score grâce à @RickHitchcock .
Essayez-le en ligne.
Explication:
Ancienne réponse avec un score de: 12 (50% de 24 octets):
Contient un caractère non imprimable
0x1B
.Essayez-le en ligne.
Explication:
En Java, les caractères peuvent être placés automatiquement dans des entiers contenant leur valeur unicode. Malheureusement, le maximum pris en charge Unicode pour les caractères est
65,535
, donc je ne peux pas utiliser seulement deux caractères pour multiplier (puisque les deux plus grands nombres qui divisent l'attendu4,815,162,342
sont56,802
et84,771
, où84,771
malheureusement dépasse le maximum65,535
.En outre, puisque la taille maximale d'un
int
est 32 2 -1 (2,147,483,647
) et le résultat4,815,162,342
est plus grand que cela, une conversion explicite enlong
, qui peut contenir jusqu'à 64 2 -1 (9,223,372,036,854,775,807
), est requise.Une réponse ennuyeuse aurait été de 14 octets sans aucun bonus:
Essayez-le en ligne.
la source
long
et ne supporte pas les très gros caractères Unicode. S'il n'y avait pas ces deux restrictions mentionnées, justev->'𩦦'*'湡'
(15 octets, score 7,5) aurait suffi. Mais c'est quand même très court. :) Bien que Java ait surtout beaucoup, beaucoup de faiblesses en termes de codegolfing (duhh ..), le calcul avec des caractères parce que nous ne sommes pas autorisés à utiliser des chiffres est l'une de ses rares forces. A également été assez utile dans ma réponse plutôt similaire .v->767*6277917L+3
R, 18x0,7 = score de 12,6
Assez explicite, fait juste un peu d'arithmétique en évitant les nombres en question.
la source
7 , 10 octets, 27 caractères
Essayez-le en ligne!
La représentation compacte de ce programme sur disque est (
xxd
format):Explication
Nous avons déjà vu cette séquence de nombres dans Automate Saving the World , qui consistait à imprimer les nombres à intervalles réguliers, ce qui la rend intéressante en nécessitant l'utilisation d'une langue très ancienne. Beaucoup de langues plus récentes peuvent avoir leurs propres rebondissements qui rendent ce défi intéressant, cependant. (Oui, ce paragraphe, et en fait la raison pour laquelle j'ai commencé à écrire cette réponse, n'est en fait qu'un moyen de rassembler tous les défis associés dans la barre latérale; normalement, les gens le font en utilisant des commentaires, mais je n'ai pas assez de représentants .)
La première chose à noter est que 7 est entièrement composé de chiffres, donc il est peu probable que les bonus ici fonctionnent (bien que si vous voyez le programme comme une séquence d'octets, aucun d'entre eux ne correspond aux représentations ASCII de l'un des nombres originaux , vous pouvez donc réclamer le bonus dans ce sens). La prochaine chose à noter est que 7 a des commandes pour recréer la séquence de commandes susceptible d'avoir produit une donnée spécifique; alors pourrions-nous éventuellement interpréter les numéros perdus
4815162342
comme une section d'un programme 7 lui-même?La réponse est "pas tout à fait". La partie la plus problématique est ce deuxième numéro
8
,. 7 programmes sont écrits en octal; il n'y a pas de nombre comme 8. Ainsi, le tout début de la chaîne devra être imprimé différemment.La base du programme est donc basée sur le 7 programme "Hello world":
avec le littéral échappé étant dans un langage spécifique au domaine qui est interprété comme suit:
Après cela vient un extra
3
, qui génère l'élément de pile restant (et se termine en raison d'une pile restante insuffisante). Cet élément est spécifié au début du programme, et pour éviter l'inégal6
(qui fonctionne un peu comme une parenthèse fermante), nous le générons en utilisant du code, plutôt que de l'écrire directement en tant que données. (Notez qu'il y a deux7
caractères implicites au début du programme, ce qui est pertinent ici):Cela produit le littéral suivant:
qui est imprimé.
la source
:(
05AB1E , 6 * 0,7 = 4,2 octets
Essayez-le en ligne!
Imprime le nombre non compressé de la base-255
la source
MASM 8088 Source d'assemblage, (93 octets - 50%) = 46,5 octets
Ne pas utiliser de nombres ou la séquence dans la source:
Production:
la source
Fusain , 13 octets / 2 = 6,5
Essayez-le en ligne! Le lien est vers la version détaillée du code. Fonctionne en soustrayant les codes ASCII de la chaîne
TPIHA.
de 88 et en les convertissant en chaîne.la source
Aheui (ésotope) , 45 octets (15 caractères) * 0,5 = 22,5 points
Essayez-le en ligne!
Explication:
Voir aussi ceci; Aheui Reference ( anglais )
Notez que ㅁ (instruction d'impression) déplace le curseur en sens inverse si la pile (ou la file d'attente) est vide.
la source
Perl 5 , 16 octets - 30% = 11,2
Essayez-le en ligne!
la source
PowerShell , 12 octets * 0,7 = 8,4
Essayez-le en ligne!
"Port" de la réponse de Xcali pour avoir une meilleure réponse Powershell.
la source
naz , 46 octets, score 32,2
Produit simplement chaque chiffre
4815162342
un par un.la source
JavaScript, 143 octets (je ne sais pas comment marquer)
Essayez-le en ligne!
Commencez par six
4
, multipliez, ajoutez, soustrayez par, à, de4
pour dériver la sortie.la source
4
, avec addition, soustraction, multiplication et l'index du nombre4
dans une chaîne (ou un tableau) peut être utilisé pour dériver les nombres requis.143*0.7=100.1
PHP, 35/2 = 17,5
une approche numérique: 40 * .7 = 28
pas de chiffres, pas de chaînes: 68/2 = 34
Essayez-les en ligne .
la source
<?=4815162342;
4815162342
. Ou<?=~
+ 10 non imprimables -> 15/2 = 7,5JavaScript (SpiderMonkey),
67 octets / 2 = 33,560 octets / 2 = 3058 octets / 2 = 2948 octets / 2 = 24-7 octets / 3,5 , -2 octets / 1 avec l'aimable autorisation de @JoKing, -10 octets / 5 avec l'aimable autorisation de @tsh
Essayez-le en ligne!
la source
print(a=-~-~-~-~[],a+=a,b=a+~-a,a+a,a+b,--b+b+b)
print(4815162342)
pour 17 octetsAPL (Dyalog Unicode), 18/2 = 9 octets
Juste ennuyeux vieille multiplication de caractères.
Essayez-le en ligne!
la source
JavaScript (ES6), 16 * 0,7 = 11,2 octets
Génère les chiffres sans délimiteurs.
Essayez-le en ligne!
la source
Espace , score:
4941 octets / 2 = 20,5Lettres
S
(espace),T
(tabulation) etN
(nouvelle ligne) ajoutées uniquement en surbrillance.[..._some_action]
ajouté à titre d'explication uniquement.Essayez-le en ligne (avec des espaces bruts, des tabulations et des nouvelles lignes uniquement).
Pseudo-code:
Explication:
Dans les espaces, un nombre est poussé comme suit:
S
: Activer la manipulation de la pileS
: Numéro pushS
/T
: Positif / négatif respectivementT
/S
suivis d'un simpleN
: Décimal en binaire, oùT
est 1 etS
est 0Après cela, il est simplement imprimé avec
TNST
:TN
: Activer les E / SS
: Afficher le haut de la pileT
: Comme nombrela source
F #, 45 octets = 22,5 points
Juste une
for
boucle courante qui imprime les chiffres:Ce qui précède est un programme complet qui peut être compilé en un exécutable.
Dans une boucle REPL (lecture-évaluation-impression), par exemple FSI (F # Interactive), la version courte suivante fonctionnera, car la REPL affichera une représentation de l'expression évaluée; il a 35 octets = 17,5 points:
la source
Pyke , 3 points
Essayez-le ici!
Le premier octet signale la lecture dans la base 128 jusqu'à ce qu'un octet sans le bit haut soit défini.
Enfin, 32 est soustrait du résultat (pour des raisons historiques).
Cela permet la génération de grands nombres dans de très petites quantités d'espace
la source
MathGolf , 7 octets * 0,5 = 3,5
Essayez-le en ligne!
Explication
Notez que ce code ne fonctionne pas encore sur TIO. J'ai récemment apporté quelques modifications à MathGolf, y compris l'ajout de l'
$
opérateur. Une fois qu'il est tiré sur TIO, vous pouvez l'exécuter là-bas, je ferai alors une mise à jour de cette réponse. Il fonctionne parfaitement dans le terminalJ'utilise le fait que MathGolf possède des littéraux d'un octet pour créer des chaînes d'une longueur maximale de 4. Si je voulais convertir le nombre entier à partir d'une chaîne de base 256, j'aurais dû en utiliser deux
"
et la chaîne aurait été 5 personnages. De cette façon, j'économise 2 octets, mais je perds un octet en ayant à la fin l'opérateur de doublage.la source
Python 3 34 points
la source
Python 3 ,
44381918,5 octets-6 octets grâce à @Jo King
-50% octets grâce à @ouflak pour avoir souligné le bonus de 50%
-1 octet grâce à @Dennis
Essayez-le en ligne!
la source
Japt,
109 octets / 2 = 4,5Essaye-le
la source
Befunge-98 (FBBI) , 15 octets / 2 = 7,5 points
Essayez-le en ligne!
Explication:
Poussez d'abord les valeurs ASCII des caractères * + H /! K- (42, 72, 47, 33, 107, 45) dans cet ordre vers la pile. Puis calculez4815 = 45 ⋅ 107 et 1623 = 33 ⋅ 47 + 72 et sortie.
la source