Wikipédia: le paradoxe de la dichotomie de Zeno
Un nombre infini de mathématiciens entrent dans un bar. Le premier commande une bière. Le second commande une demi-bière. Le troisième commande un quart de bière. Le barman les arrête, verse deux bières et dit: "Vous êtes tous un tas d'idiots."
Imprimez la série suivante aussi longtemps que le programme s'exécute, avec le dénominateur de chaque élément multiplié par deux à chaque fois:
1 + 1/2 + 1/4 + 1/8 + 1/16 + 1/32 + ...
À l' n
approche de l'infini, la somme de cette séquence approche 2
.
Règles
Non, vous ne pouvez pas imprimer 2
.
Vous ne pouvez pas imprimer 1/1
comme premier élément.
Vous pouvez supprimer des espaces 1+1/2+...
ou ajouter des espaces 1 + 1 / 2 + ...
selon vos besoins.
Vous pouvez utiliser des retours à la ligne au lieu d'espaces comme délimiteur en raison de la demande populaire.
Vous pouvez ajouter un .
plus un nombre constant de 0
s au dénominateur si nécessaire.
"Infiniment" signifie pas de retards inutiles, et aussi longtemps que possible limité par les spécifications du système actuel (variable), mais pas limité par votre langue actuelle.
Les failles standard s'appliquent.
C'est du code-golf , donc la réponse la plus courte en octets est gagnante.
la source
+1/
s formerait simplement une ligne diagonale. Cependant, la longueur des dénominateurs change linéairement (jusqu'à l'arrondissement): le nombre de chiffres de2^n
est d'environn log(2)/log(10)
. Ce changement linéaire se traduit par un changement linéaire de la position relative de chacun+1/
par rapport au précédent, qui est identique à un changement quadratique de la position absolue .Réponses:
05AB1E ,
109 octets1 octet enregistré grâce à Erik l'Outgolfer
Essayez-le en ligne!
Explication
la source
[No?…+1/?
«
au lieu deJ
mais cela fonctionne aussi.Python 2 , 30 octets
-5 grâce à Erik l'Outgolfer
Essayez-le en ligne!
la source
Gelée , 12 octets
Essayez-le en ligne!
la source
Pyth , 10 octets
Essayez-le en ligne!
la source
APL (Dyalog Unicode) , 15 octets
Plus amusant si
⎕FR
( F loating point R ePresentation) est1287
(128 décimal binaire) et⎕PP
( P Rint P recision) est 34.Essayez-le en ligne!
{
…}1
Appliquer la fonction suivante sur le chiffre 1:⎕←⍵'+1/'
afficher l'argument et la chaîne⊃
choisissez le premier (c'est-à-dire l'argument)2×
doubler∇
récursivité de l'appel de queue (optimisé, il peut donc être répété à l'infini)la source
C (gcc) , 60 octets
Augmente la limite de 64 bits non signée.
Essayez-le en ligne!
Celui-ci continue pour toujours; (c'est aussi petit que ça va devenir)
C (tcc) ,
312264255251233231208204195190188170 octetsEssayez-le en ligne!
Voici la version pas si golfée;
la source
Bash , 33 octets
Essayez-le en ligne!
Changer
print
pourprintf
etecho
pourprintf
éviter la nouvelle lignela source
printf 1
évite également la nouvelle ligne, non?+1/inf
partir du 1024e terme. :-(dc,
1918 octetsExplication
Nous poussons
1
et[rdp+[+1/]Prdx]
sur la pile. Nous dupliquons et exécutons ensuite[rdp+[+1/]Prdx]
. La première chose qu'il fait est de faire pivoter la pile (r
) afin que la valeur soit au dessus.dp+
imprime la valeur et s'ajoute (à multiplier par 2).[+1/]P
imprime l'invariant+1/
, puis nous faisons pivoter les arguments pour que la définition de la macro enregistrée soit en haut, la dupliquer et recommencer.Remarques
GNU
dc
se terminera normalement sur 70 colonnes. Pour remplacer cela et obtenir une ligne infinie, ajoutezDC_LINE_LENGTH=0
à vos variables d'environnement.Sortie (partielle)
...
...
...
la source
dp
au lieu deddn
pour enregistrer un octetdn
d'éviter d'introduire une nouvelle ligne, mais j'ai pensép
(au prix d'une sortie plus laide). En fait, après réflexion, ce n'est pas si moche, après tout.GolfScript , 19 octets
Essayez-le en ligne!
la source
CJam , 14 octets
Essayez-le en ligne!
la source
> <> , 14 octets
Essayez-le en ligne!
la source
Pyth, 10 octets
Z
commence comme zéro.~hyZ
post-attribue la valeur de2*Z+1
àZ
. Ainsi,Z
devient au0, 1, 3, 7, 15, ...
cours des itérations successives.h
imprime ensuite la valeur un de plus.#
exécute la boucle infinie et"+1/
obtient le bon formatage.la source
JavaScript (ES6) ,
3634 octetsEssayez-le en ligne!
Inspiré par la réponse de Jake Taylor .
Notez que cela est limité par la langue puisque
a
s'agit d'une variable à virgule flottante, pas d'un entier.-2 octets grâce à @Stefnotch .
la source
for(a=.5;;)console.log`${a*=2}+1/`
Cependant, votre solution est limitée par le langage, car a est un flottant, pas un grand entier. (Le défi dit qu'il ne devrait pas être limité par la langue, mais plutôt par les spécifications du système.)for(a=1;;a*=2)console.log(a+"+1/")
Rubis ,
2725 octetsEssayez-le en ligne!
la source
Java,
107102 octetsz=null
existe pour raccourcir leo=java.math.BigInteger.ONE
enz=null,o=z.ONE
, économisant 12 octets.z.ONE
ne lancera pasNullPointerException
car nous accédons à un membre statique et non à un membre d'instance.En utilisant
int
raccourcit le code, mais ne parvient pas à se conformer après 32 itérations.Sauvegarde
n.compareTo(o)>0
transformé enn.max(o)==o
, grâce à une idée de @Shufflepantsla source
int
et tous les autres types primitifs sont limités au niveau de la langue. En outre, leBigInteger
document indique explicitement qu'une limite est facultative, pas obligatoire (et que l'implémentation JVM par défaut utilise cette limite).Vim,
22, 21 octets / touchesLors de ce test, vous pouvez rencontrer des problèmes avec les valeurs de registre actuelles. Pour résoudre ce problème, exécutez
avant d'exécuter ceci, ou en lançant vim avec
la source
R,
3534 octetsL'espacement est un peu plus sombre, mais je comprends que ça va.
la source
repeat
au lieu dewhile(T)
:cat(i<-1);repeat cat("+1/",i<-i*2)
pour 1 octet de moins.Befunge 93: 14 octets
la source
Powershell, 34 octets
Essayez-le en ligne!
la source
Aceto , 20 octets
Imprime la séquence sans aucun espace. Lors de l'exécution, vous ne verrez rien pendant un petit moment, en raison de la mise en mémoire tampon, exécutez avec
-F
pour tout voir immédiatement.la source
Allez ,
102100 octetsGo peut être presque aussi mauvais que Java, apparemment.
Essayez-le en ligne! ( Ce serait une bonne idée d'éviter d'exécuter tout cela localement .: P)
la source
QBIC , 18 octets
Imprime chaque terme sur une nouvelle ligne.
Explication:
Nous pouvons enregistrer un octet avec un format de sortie plus libéral:
la source
Mathematica, 25 octets
la source
+
s ainsi que les chiffres?C #, ̶6̶8̶ 154 octets
Voici une version non contrainte par int
la source
int.MaxValue
BigInteger b=1;
et en raccourcissant la multiplication enb*=2;
JavaScript (ES6),
454342 octetsEnregistré 2 octets, merci @DanielM! 1 octet enregistré, merci @ eush77 de l'avoir signalé.
= console.log; a = 1; (1); pour (;;) _ (+1/${a*=2}
)= console.log; (a = 1); pour (;;) _ (+1/${a*=2}
)Mon premier rendez-vous chez Codegolf, allez-y doucement!
la source
a=1
peut aller dans la première partie du for,for(a=1;;)
vous faisant économiser un octet en point-virgule supplémentaire._(a=1)
, fonctionne aussi avec la suggestion de DanielM+1/
, pas une fraction.PHP, 32 octets
Version en ligne
-6 octets si des valeurs comme
9.2233720368548E+18
sont autoriséesEssayez-le en ligne!
la source
AWK ,
3732 octetsEssayez-le en ligne!
Pourrait supprimer le
BEGIN
et enregistrer 5 octets si l'entrée était autorisée. Utiliser des exposants nettement moins chers en octets que la multiplication. :)J'espère que 2 ^ 1023 est assez proche de l'infini (sur mon ordinateur de travail). Malheureusement, le lien TIO tronque plus tôt que cela (vers 921). Mais 17726622920963562283492833353875882150307419319860869157979152909707315649514250439943889552308992750523075148942386782770807567185698815677056677116184170553481231217950104164393978236130449019315710017470734562946173533283208371259654747728689409291887821024109648618981425152 ne semble à peu près à l'infini. :)
la source
Haskell
-6662605149 caractèresCeci imprime la chaîne construite en imprimant les représentations de chaîne des puissances de deux à partir de 1, séparées par la chaîne
" + 1/"
.Le code lui-même fait 49 octets, l'importation et la nouvelle ligne le poussent jusqu'à 66
Modifier: (62)
Rasé 4 octets en supprimant l'importation et en définissant l'intercalaire avec un nom beaucoup plus court
Édition 2: (60)
Rasé 2 caractères supplémentaires en réalisant que je n'avais pas besoin d'utiliser la convention de liste (x: xs):
Édition 3: (51)
Réimplémentation de la définition de f et de la carte comme corps d'un pli pour enregistrer 9 caractères supplémentaires
Édition 4: (49)
Comme l'a souligné Laokoni, je peux supprimer les espaces pour réduire de 2 octets supplémentaires le total:
la source
Braingolf ,
4137 octetsEnregistré 4 octets parce que j'ai réalisé que je n'ai pas besoin des espaces, lisez toujours attentivement la spécification
Essayez-le en ligne!
Peut probablement être mieux joué au golf, mais cela fonctionne.
la source
Fourier, 20 octets
Essayez-le en ligne!
Je pense que cela ne peut fonctionner que sur Try it Online en raison de différences dans la façon dont Python et Javascript traitent les grands nombres.
Explication du pseudo-code:
la source
Print i
au début de laWhile
boucle?i
.