Wikipedia: Zenos Dichotomie-Paradoxon
Eine unendliche Anzahl von Mathematikern betritt eine Bar. Der erste bestellt ein Bier. Der zweite bestellt ein halbes Bier. Der dritte bestellt ein viertes Bier. Der Barkeeper stoppt sie, schenkt zwei Biere ein und sagt: "Ihr seid alle Idioten."
Geben Sie die folgenden Reihen so lange aus, wie das Programm ausgeführt wird, wobei der Nenner jedes Elements jedes Mal mit zwei multipliziert wird:
1 + 1/2 + 1/4 + 1/8 + 1/16 + 1/32 + ...
Wenn n
sich die Unendlichkeit nähert, nähert sich die Summe dieser Sequenz 2
.
Regeln
Nein, Sie dürfen nicht drucken 2
.
Sie können möglicherweise nicht 1/1
als erstes Element drucken .
Sie können Leerzeichen entfernen 1+1/2+...
oder 1 + 1 / 2 + ...
nach Bedarf Leerzeichen hinzufügen .
Aufgrund der großen Nachfrage können Sie Zeilenumbrüche anstelle von Leerzeichen als Trennzeichen verwenden.
Bei Bedarf können Sie dem Nenner ein .
Pluszeichen mit einer konstanten Anzahl von 0
s hinzufügen.
"Unendlich" bedeutet keine unnötigen Verzögerungen und wird so lange wie möglich von den Spezifikationen des aktuellen (variablen) Systems begrenzt, jedoch nicht von Ihrer aktuellen Sprache.
Es gelten Standardlücken .
Das ist Code-Golf , also gewinnt die kürzeste Antwort in Bytes.
quelle
+1/
s nur eine diagonale Linie bilden. Die Länge der Nenner ändert sich jedoch linear (bis zur Rundung): Die Anzahl der Stellen2^n
beträgt ungefährn log(2)/log(10)
. Diese lineare Änderung führt zu einer linearen Änderung der relativen Position in+1/
Bezug auf die vorhergehende, die einer quadratischen Änderung der absoluten Position entspricht.Antworten:
05AB1E ,
109 BytesDank Erik the Outgolfer 1 Byte gespeichert
Probieren Sie es online!
Erläuterung
quelle
[No?…+1/?
«
statt verwenden,J
aber das funktioniert auch.Python 2 , 30 Bytes
-5 Danke an Erik den Outgolfer
Probieren Sie es online!
quelle
Gelee , 12 Bytes
Probieren Sie es online!
quelle
Pyth , 10 Bytes
Probieren Sie es online!
quelle
APL (Dyalog Unicode) , 15 Byte
Mehr Spaß , wenn
⎕FR
( F loating Punkt R ePresentation) ist1287
(128 bit dezimal) und⎕PP
( P RINT P recision) beträgt 34.Probieren Sie es online!
{
…}1
Wende folgende Funktion auf die Nummer 1 an:⎕←⍵'+1/'
gib das Argument und den String aus⊃
wähle den ersten (dh das Argument)2×
verdopple das∇
Tail Call Rekursion darauf (optimiert, so dass es unendlich oft wiederholt werden kann)quelle
C (gcc) , 60 Bytes
Erhöht das 64-Bit-Limit ohne Vorzeichen.
Probieren Sie es online!
Dieser geht für immer weiter; (Es ist so klein wie es nur geht)
C (tcc) ,
312264255251233231208204195190188170 BytesProbieren Sie es online!
Hier ist die nicht so golfene Version;
quelle
Bash , 33 Bytes
Probieren Sie es online!
Ändern Sie
print
fürprintf
undecho
fürprintf
, um Zeilenumbrüche zu vermeidenquelle
printf 1
vermeidet auch die newline, nein?+1/inf
ab dem 1024. Semester wiederholt . :-(Gleichstrom,
1918 BytesErläuterung
Wir schieben
1
und[rdp+[+1/]Prdx]
auf den Stapel. Wir duplizieren dann und führen aus[rdp+[+1/]Prdx]
. Das erste, was es tut, ist, den Stapel (r
) zu drehen, so dass der Wert oben ist.dp+
gibt den Wert aus und addiert sich (mit 2 multiplizieren).[+1/]P
druckt die Invariante aus+1/
, dann drehen wir die Argumente so, dass sich die gespeicherte Makrodefinition oben befindet, duplizieren sie und beginnen erneut.Anmerkungen
GNU
dc
wird normalerweise mit 70 Spalten umbrochen. Fügen SieDC_LINE_LENGTH=0
zu Ihren Umgebungsvariablen hinzu, um das zu überschreiben und eine unendliche Zeile zu erhalten.Ausgabe (teilweise)
...
...
...
quelle
dp
stattddn
, um ein Byte zu speicherndn
vermieden, einen Zeilenumbruch einzuführen, aber überlegtp
(auf Kosten einer hässlicheren Ausgabe). Eigentlich ist es ja gar nicht so hässlich, wenn man darüber nachdenkt.GolfScript , 19 Bytes
Probieren Sie es online!
quelle
CJam , 14 Bytes
Probieren Sie es online!
quelle
> <> , 14 Bytes
Probieren Sie es online!
quelle
Pyth, 10 Bytes
Z
beginnt mit null.~hyZ
weist den Wert von2*Z+1
nachZ
. SoZ
wird0, 1, 3, 7, 15, ...
über aufeinanderfolgende Iterationen.h
druckt dann den Wert eins größer aus.#
führt die Endlosschleife aus und"+1/
sorgt für die richtige Formatierung.quelle
JavaScript (ES6) ,
3634 BytesProbieren Sie es online!
Inspiriert von Jake Taylors Antwort .
Beachten Sie, dass dies durch die Sprache begrenzt ist, da
a
es sich um eine Gleitkommavariable handelt, keine Ganzzahl.-2 Bytes dank @Stefnotch .
quelle
for(a=.5;;)console.log`${a*=2}+1/`
Ihre Lösung ist jedoch sprachlich begrenzt, da a eine Gleitkommazahl und keine große ganze Zahl ist. (Die Herausforderung besagt, dass es nicht durch die Sprache, sondern durch die Systemspezifikationen begrenzt werden sollte.)for(a=1;;a*=2)console.log(a+"+1/")
Ruby ,
2725 BytesProbieren Sie es online!
quelle
Java,
107102 Bytesz=null
existiert, um dieo=java.math.BigInteger.ONE
in zu verkürzenz=null,o=z.ONE
und 12 Bytes zu sparen.z.ONE
Wirft kein,NullPointerException
weil wir auf ein statisches Mitglied und kein Instanzmitglied zugreifen.Durch
int
die Verwendung von wird der Code verkürzt, jedoch nach 32 Iterationen nicht mehr eingehalten.Speichert
n.compareTo(o)>0
verwandelte sich inn.max(o)==o
, dank einer Idee von @Shufflepants gegebenquelle
int
und alle anderen primitiven Typen sind auf Sprachebene begrenzt . DasBigInteger
Dokument gibt außerdem ausdrücklich an, dass ein Limit optional und nicht obligatorisch ist (und dass die Standard-JVM-Implementierung dieses Limit verwendet).Vim,
22, 21 Bytes / TastenanschlägeWährend Sie dies testen, können Probleme mit den aktuellen Registerwerten auftreten. Führen Sie den folgenden Befehl aus, um das Problem zu beheben
bevor Sie dies ausführen oder indem Sie vim mit starten
quelle
R,
3534 BytesDer Abstand ist ein bisschen klein, aber ich verstehe, dass das in Ordnung ist.
quelle
repeat
anstelle vonwhile(T)
:cat(i<-1);repeat cat("+1/",i<-i*2)
für 1 Byte weniger verwenden.Befunge 93: 14 Bytes
quelle
Powershell, 34 Bytes
Probieren Sie es online!
quelle
Aceto , 20 Bytes
Druckt die Sequenz ohne Leerzeichen. Wenn Sie laufen, werden Sie für eine Weile nichts sehen. Wegen der Pufferung müssen Sie mit laufen,
-F
um sofort alles zu sehen.quelle
Los ,
102100 BytesGo kann anscheinend fast so schlecht sein wie Java.
Probieren Sie es online! ( Wäre eine gute Idee, um zu vermeiden, diese lokal auszuführen .: P)
quelle
QBIC , 18 Bytes
Gibt jeden Begriff in einer neuen Zeile aus.
Erläuterung:
Wir können ein Byte mit einem liberaleren Ausgabeformat speichern:
quelle
Mathematica, 25 Bytes
quelle
+
s sowie die Zahlen drucken ?C #, ~ 6 ~ 8 ~ 154 Bytes
Hier ist eine Version, die nicht durch int eingeschränkt ist
quelle
int.MaxValue
BigInteger b=1;
und Verkürzung der Multiplikationb*=2;
JavaScript (ES6),
454342 Byte2 Bytes gespart, danke @DanielM! 1 Byte gespeichert, danke @ eush77 für den Hinweis.
= console.log; a = 1; (1); für (;;) _ (+1/${a*=2}
)= console.log; (a = 1); für (;;) _ (+1/${a*=2}
)Mein erster Versuch bei Codegolf, mach es einfach!
quelle
a=1
kann in den ersten Teil des for gehen undfor(a=1;;)
erspart Ihnen ein Byte in extra Semikolon._(a=1)
, arbeite auch mit DanielMs Vorschlag+1/
, kein Bruch.PHP, 32 Bytes
Online Version
-6 Bytes, wenn Werte wie
9.2233720368548E+18
zulässig sindProbieren Sie es online!
quelle
AWK ,
3732 BytesProbieren Sie es online!
Konnte das entfernen
BEGIN
und 5 Bytes sparen, wenn Eingabe erlaubt wäre. Die Verwendung von Exponenten ist auf jeden Fall byteweise günstiger als die Multiplikation. :)Hoffentlich ist 2 ^ 1023 nahe genug an der Unendlichkeit (auf meinem Arbeitscomputer). Leider schneidet die TIO-Verbindung früher ab (ungefähr 921). Aber 17726622920963562283492833353875882150307419319860869157979152909707315649514250439943889552308992750523075148942386782770807567185698815677056677116184170553481231217950104164393978236130449019315710017470734562946173533283208371259654747728689409291887821024109648618981425152 scheint ziemlich nah bis unendlich. :)
quelle
Haskell
-6662605149 ZeichenDies gibt die Zeichenfolge aus, die durch Drucken der Zeichenfolgendarstellungen der Zweierpotenzen ab 1, durch die Zeichenfolge getrennt, erstellt wurde
" + 1/"
.Der Code selbst ist 49 Bytes, der Import und der Zeilenvorschub 66 Bytes
Bearbeiten: (62)
Rasiert 4 Bytes durch Ausschneiden des Imports und Definieren von intercalate mit einem viel kürzeren Namen
Edit 2: (60)
Rasiert 2 weitere Zeichen durch die Erkenntnis, dass ich die (x: xs) -Listenkonvention nicht verwenden musste:
Edit 3: (51)
Die Definition von f und der Karte als Rumpf einer Falte wurde neu implementiert, um 9 weitere Zeichen zu speichern
Edit 4: (49)
Wie von Laokoni hervorgehoben, kann ich die Leerzeichen entfernen, um 2 weitere Bytes der Gesamtmenge zu reduzieren:
quelle
Braingolf ,
4137 Bytes4 Bytes gespart, weil mir klar wurde, dass ich die Leerzeichen nicht benötige. Lies die Spezifikation immer gründlich durch, Kinder
Probieren Sie es online!
Kann wahrscheinlich besser golfen werden, aber es funktioniert.
quelle
Fourier, 20 Bytes
Probieren Sie es online!
Ich denke, dass dies möglicherweise nur bei Try it Online funktioniert, da Python und Javascript unterschiedlich mit großen Zahlen umgehen.
Erklärung Pseudocode:
quelle
Print i
an den Anfang derWhile
Schleife verschieben?i
.