Kein Betrogene zu diesem . Diese Frage verlangt speziell, für immer hochzuzählen, während diese Frage viele andere Ansätze zulässt.
Schreiben Sie ein Programm oder eine Funktion, die bei unendlicher Zeit und Speicher eine unendliche nichtperiodische Ausgabe drucken würde.
Klarstellungen
- 'Unendlich' bedeutet, dass die Lösung nach erfolgreichem Start des Programms oder der Funktion weiterhin etwas ohne weitere Eingaben oder Operationen ausgibt.
- 'Nicht periodisch' bedeutet, dass die Ausgabe keine Möglichkeit hat, denselben Abschnitt für immer zu wiederholen (unabhängig davon, wie lange dieser Zeitraum dauert). Ein Beispiel für eine gültige Lösung wäre das Drucken der Ziffern einer irrationalen Zahl.
- Zufällige Lösungen würden nicht zählen, wenn Sie nicht nachweisen können, dass sie den Anforderungen entsprechen. Datums- / Zeit-basierte Lösungen können auch ungültig sein, wenn sie nicht mit willkürlicher Genauigkeit gespeichert werden.
Gewinner
Der kürzeste Code (in Bytes) gewinnt.
1\n12\n123
ungültig?Antworten:
Hexagonie , 2 Bytes
Probieren Sie es online aus!
Der entfaltete Quellcode sieht folgendermaßen aus:
Dies führt nur diese beiden Befehle in einer Schleife aus, die decrement (
(
) und print (!
) sind. Daher lautet die Ausgabe:Wir müssen Dekrement anstelle von Inkrement verwenden, um sicherzustellen, dass das Programm zur ersten Zeile zurückkehrt (wenn der Speicherwert positiv wäre, würde Hexagony zwischen der zweiten und dritten Zeile eine Schleife ausführen und in einer Endlosschleife enden, ohne etwas zu tun).
quelle
Python 2 , 23 Bytes
Probieren Sie es online aus!
Druckt
und so weiter. Beginnt mit der integrierten Funktion
id
, dem kürzesten vorinitialisierten Variablennamen, und verwandelt ihn wiederholt in ein Tupel für sich.In Python 3 ist diese Lösung aufgrund von ein Byte länger
print()
, aber das Byte kann aus derprint
Ausgabe wiederhergestellt werdenNone
:oder
quelle
Labyrinth , 3 Bytes
Probieren Sie es online aus!
Druckt alle nicht negativen geraden Ganzzahlen ohne Trennzeichen:
Die IP springt auf dem Code hin und her, so dass dies wirklich
#:!:
in einer Schleife ist:Eine Reihe von Alternativen:
quelle
Brachylog , 2 Bytes
Probieren Sie es online aus!
Dies gibt alle nach Größe geordneten ganzen Zahlen aus. Dies wird niemals überlaufen und bereits gesehene Ganzzahlen drucken, da Brachylog standardmäßig unbegrenzte Ganzzahlen verwendet.
Erläuterung
quelle
> <> 3 Bytes
l:n
Gibt einen Zahlenstrom aus, der von 0 zählt.
Ich glaube, inkrementelle Zahlen laufen nicht ...
Erläuterung:
l
schiebt die Stapellänge auf den Stapel:
dupliziert den obersten Stapelwert über dem Stapeln
gibt den Wert als Zahl ausWenn die Zeile fertig ist, geht sie zurück zum Anfang, also macht sie es wieder, aber jetzt ist der Stapel länger ...
online
quelle
PHP, 20 Bytes
Gibt dies aus:
Wenn Befehlszeilenargumente angegeben werden, ist die Ausgabe unterschiedlich, aber immer noch nicht periodisch.
Soweit ich die Dokumentation verstehe, beschränkt die Sprache selbst die Länge der Zeichenfolgen nicht.
quelle
JavaScript,
262220 Bytes(Warnung: es ist böse)
quelle
for(n=0;;)alert(n++)
for(;;)alert(Date())
für 20 Bytes tun .Haskell - 10 Bytes
Obwohl Sie in ghci einfach [1 ..] eingeben könnten, würde der Druck automatisch gestartet.
quelle
Brainfuck, 13 Bytes, unter der Annahme, dass keine Obergrenze vorliegt, sondern Mod 256 ausgegeben wird
Ausgabezeichencode 2 2 4 6 2 4 6 8 10 12 14 16 18 ...
Entschuldigung, dass die alte Codedruckschleife 0 2 4 6 ... 254,
Brainfuck,
1312 Bytes (-1 von Jo King)Ausgabe-Zeichencode 0 1 0 1 1 0 1 1 1 0 ...
quelle
[.>].
in kombinieren[>.]
?+[[>.]<[<]+]
druckt 010110111011110 ...Thanks
+[[>.]<[<],]
und füllen Sie die Eingabeleiste mit'\1'
Gelee , 3 Bytes
Probieren Sie es online aus!- schneidet die Ausgabe ab und löst einen Fehler aus, geht aber lokal viel länger (bis der Speicher knapp wird).
Bei einer impliziten Eingabe von Null besteht dieses Programm aus einer einzelnen Verknüpfung, die den neuen Wert inkrementiert
‘
, drucktȮ
und sich dann selbst aufruftß
.quelle
MATL, 4 Bytes
Diese Lösung erstellt eine
while
Schleife, die den Index der Schleife auf den Stapel schiebt, dupliziert, den Wert druckt und dann überprüft, ob der Schleifenindex ungleich Null ist, um ihn erneut zu wiederholen.Probieren Sie es online aus!
quelle
RProgN 2 , 13 Bytes
Es gibt viele Zweien in der Ausgabe, die durch zunehmend spärlichere Zeilenumbrüche getrennt sind.
Was 2 ^ n 2s druckt, gefolgt von einer neuen Zeile für jede Iteration.
Probieren Sie es online aus!
quelle
Befunge , 4 Bytes
Probieren Sie es online aus!
In Befunge ist der Stapel bodenlos und hat unendlich viele Nullen. Das gesagt:
1+
Fügt eins oben im Stapel hinzu:
dupliziert die Oberseite des Stapels.
Gibt den ASCII-Wert oben im Stapel als Zahl ausUnd es geht unendlich weiter, weil es keine Möglichkeit gibt, die
@
Ausführung zu stoppen. Dies ist tatsächlich eines dieser Probleme, die durch die Funktionsweise von befunge leichter zu lösen sind ... seltsam.quelle
APL (Dyalog APL) , 8 Bytes
{
emsp; eine anonyme Funktion ...∇
Rekurs auf⎕ ←
Ausgabe an STDOUT0 ⍵
Die Liste mit zwei Elementen besteht aus einer Null und dem Argument}
angewendet auf die Nummer einsDiese Ausgänge (auf separaten Leitungen)
[0,1]
,[0,[0,1]]
,[0,[0,[0,1]]]
usw.quelle
Verarbeitung,
3029 Bytes1 Byte gespart dank QwerpDerp für die Verwendung
millis()
anstelle vonframeRate
Gibt kontinuierlich die Anzahl der Millisekunden seit dem Start des Programms aus.
Beispielausgabe:
quelle
C (gcc) ,
8381 BytesZuerst wird ein Zeiger auf dem Heap zugewiesen, dann zählt die Funktion bis zu einem Segfault von in den Speicheradressen vor
*p++
, . Daher ist sie eher durch die Speichermenge im System als durch die verwendeten Datentypen begrenzt, die andernfalls eventuell überlaufen und die Serie wiederholen würden. Bei unendlichem Speicher mit unendlicher Adressierungsfähigkeit würde es für immer weitergehen.Probieren Sie es online aus!
quelle
p++
, um meinen Anspruch geltend zu machen.7 , 2 Bytes
Die Charaktere, aus denen dieses Programm besteht, sind:
Wenn Sie die Datei in einem Editor anzeigen, wird wahrscheinlich versucht, sie als ASCII zu interpretieren. In diesem Fall sieht sie folgendermaßen aus:
Probieren Sie es online aus!
Das Programm nimmt Eingaben entgegen. Ich habe hier angenommen, dass der Eingang bei EOF ist; Wenn Sie es eingeben, ist es möglich, dass es abstürzt.
Erläuterung
Zeroth-Iteration
Das gesamte Programm hier ist passiv, daher wird eine aktive Version von sich an das oberste Stapelelement angehängt (das anfangs leer ist). Das Programm befindet sich in einer impliziten Schleife, die das oberste Stapelelement bei jeder Iteration auswertet (während es auf dem Stapel belassen wird). Die aktive Version wird also ausgeführt. (So ziemlich alle 7 Programme beginnen so.)
Erste Iteration
Vor dem Ausgabebefehl enthält der Stapel zwei Kopien von
240223
(dh passiv). Das oberste wird ausgegeben (ohne erkennbaren Effekt außer der Auswahl des Ausgabeformats 2, "Zahlen"), das folgende bleibt erhalten und wird zum Programm für die nächste Iteration.Zweite Iteration
Das gleiche wie die nullte Iteration, richtig? Nicht ganz; Der Stapel hatte unterschiedliche Inhalte. Der Stapel ist jetzt
240223
unten .240223240223
Dritte Iteration
Dies gibt ein Stapelelement aus, das drei weitere 6s und 0s als 7s und 1s hat. Das Ausgabeformat 2 interpretiert dies als eine Anforderung zur Eingabe einer Zahl. Wir lesen EOF, mit der Folge, dass das nächste Element auf dem Stapel auf eine Zeichenfolge mit der Länge Null reduziert wird. Aufgrund eines Fehlers (der leicht nützlich erscheint und möglicherweise zu einer Funktion heraufgestuft wird?) Tritt dies jedoch erst auf, nachdem die Ausführung gestartet wurde. Der Stapel enthält
240223
unten erneut zwei Elemente, aber die maskierte Version dieses obersten Elements wird jetzt ausgeführt.240223240223240223
72402236240223240223
Vierte Iteration
Die Oberseite des Stapels war eine Zeichenfolge mit der Länge Null, sodass wir das Programm, das dort gelandet ist, im Grunde genommen nur entkoppeln.
Fünfte Iteration
Dies ist der dritten Iteration sehr ähnlich. Es gibt jedoch zwei Änderungen. Erstens gibt es jetzt 4 mehr 0s und 6s als 1s und 7s, also werden wir versuchen, ein Zeichen von der Standardeingabe anstelle einer Zahl einzugeben. Wir erhalten jedoch immer noch EOF und reduzieren dadurch immer noch die Oberseite des Stapels auf eine Zeichenfolge mit der Länge Null. Als nächstes wird nach der Reduzierung Code ausgeführt , sodass die nächste Iteration nicht sofort beginnt. Vielmehr führen wir eine Reihe von Operationen an diesem Element mit der Länge Null durch, die am Ende drei Elemente mit der Länge Null ergeben. Wir geben eins aus, die anderen beiden verschwinden (weil es das Ende einer Iteration ist) und wir landen im Grunde dort, wo wir am Ende der dritten Iteration waren.
Sechste Iteration
Das Programm, das wir von oben kopieren, ist jetzt . Alles funktioniert wie in der vorherigen Iteration, bis wir die erste Ausgabeanweisung (die erste ) erreichen. Dies hat jetzt fünf mehr 0s und 6s als 1s und 7s, so dass ein Modus festgelegt wird, in dem der nächste Ausgabeanweis als Anforderung zum Ändern des Ausgabeformats interpretiert wird. Dies führt auch zu einer bemerkenswerten Verhaltensänderung; Da es keine Eingabeanforderung gab, haben wir EOF nicht gelesen und somit nicht die Konsequenz des Lesens von EOF (das neue oberste Stapelelement wird ausgeblendet) ausgelöst. Daher bleibt die maskierte Version des ursprünglichen Stapelelements erhalten und nicht entfernt. Dies bedeutet, dass die nächste
240223240223240223240223
23
2402
ist kein No-Op mehr und erstellt zwei maskierte Kopien des maskierten Stapelelements (dh sie sind jetzt doppelt maskiert). Wir geben eins aus und setzen das Ausgabeformat auf 7 ("wie die Eingabe"); Dieses Ausgabeformat enthält keine E / A-Befehle und keine Befehle zum Ändern des Formats. Daher bleiben wir für den Rest des Programms darin. Wir geben auch724022362402232402232402232402236
(in der gleichen Codierung wie die Eingabe) an die Standardausgabe aus.Wie auch immer, es ist ziemlich klar, was das Programm von diesem Punkt an tun wird: Es ist eine Kombination aus dem Anhängen verschiedener Anzahlen von Kopien von unterschiedlich entkommenen
240223
an den oberen Rand des Stapels maskiert wurden, dem Escaping des oberen Randes des Stapels und dem Ausgeben von Kopien des oberen Randes des Stapels der Stapel. Ab diesem Zeitpunkt wird das oberste Stapelelement nie gelöscht (weil wir nie EOF lesen), also wächst es einfach und wächst und wächst. Das periodische Escapezeichen stellt sicher, dass sich die Ausgabe nie wiederholt (da dies bedeutet, dass bei jeder Iteration die erste Ausgabe mit mindestens einer mehr beginnt7
als bei der vorherigen Iteration).quelle
Ohm , 4 Bytes (CP437)
Druckt die Zählervariable, erhöht sie und geht in eine Endlosschleife! Einfach genug.
BEARBEITEN (1. März 17): Während ich einige andere Updates durchführte (nachdem ich diese Antwort gepostet hatte), habe ich das Verhalten von geändert
∞
. Die aktualisierte Antwort wäre∞^,
.quelle
"modernes" DC , 9 Bytes
Unendliche Erinnerung?
Dann ist ein kontinuierlich wachsender Stapel in Ordnung?
] :-)
Kommentiert:
Aufgrund der Verwendung des
r
Befehls wird dies auf einigen alten Domänencontrollern nicht ausgeführt.quelle
Ruby,
2112 BytesDrucken Sie alle natürlichen Zahlen. Soweit ich die Problembeschreibung verstehe, sollte dies in Ordnung sein.
quelle
PHP, 21 Bytes
Verwendungszweck:
php -r "for(;;)echo uniqid();"
Gibt eindeutige IDs basierend auf der aktuellen Zeit in Mikrosekunden aus:
58b3e065e4b4c58b3e065e4b6358b3e065e4b7b58b3e065e4b9458b3e065e4bac58b3e065e4bc458b3e065e4bdc58b3e065e4bf558b3e065e4c0e58b3e065e4c2658b3e065e4c3e58b3e065e4c5658b3e065e4c6f58b3e065e4c8758b3e065e4c9f...
als kontinuierliche Folge von:
58b3e09390617
58b3e09390651
58b3e0939068a
58b3e093906c3
58b3e093906fc
...
quelle
uniqid
eine feste Länge hat. Wenn Sie das Programm also lange genug laufen lassen, läuft die Zeichenfolge über und beginnt von vorne. Dann wird es irgendwann das anfängliche Timing erreichen und das Prinzip könnte wieder genau die gleiche Folge von IDs ausgeben. Das heißt, wenn Sie zeigen können, dass die Länge nicht festgelegt ist, sollte dies in Ordnung sein.Perl 6 , 11 Bytes
Druckt die natürlichen Zahlen.
Probieren Sie es online aus!
quelle
Python 2, 24 Bytes
Druckt 9 mal jede Potenz von 2.
Probieren Sie es online aus
quelle
while n:
.Stapel, 7 Bytes
Oder:
quelle
Powershell, 19 Bytes
Langweilige Antwort hochzählen.
Verbesserte Version der Antwort von Count Up Forever
quelle
gestapelt , 9 Bytes
Probieren Sie es online aus! Ähnlich wie bei meiner Antwort "Für immer zählen" werden hier natürliche Zahlen vom
0
Zähler ausgegeben.quelle
Bourne Shell, 11 Bytes
quelle
TI-Basic, 11 Bytes
quelle
GNU sed , 13 Bytes
Dies ist ein beliebiger Präzisionszähler in unär. Das ist eine ausgefallene Art zu sagen, dass ich eine
0
an den Musterraum anhänge und sie bei jeder Iteration drucke (Endlosschleife).Nach einiger Zeit würde dies normalerweise zu einem Speicherzuordnungsfehler führen und den Druckvorgang beenden, da der ständig wachsende Musterspeicher nicht mehr gespeichert werden kann. Das ist kein Problem für diese Herausforderung, da angenommen wird, dass der Speicher unendlich ist.
Probieren Sie es online aus!(Dieser Interpreter schränkt die verfügbaren Ressourcen durch das Design weiter ein.)
Ausgabevorschau: nur die ersten 5 Zeilen
quelle
Sesos , 2 Bytes
SASM
SBIN
Druckt alle nicht negativen Ganzzahlen der Reihe nach.
Probieren Sie es online aus!
quelle
set mask
Richtlinie verwendet Sesos Ganzzahlen mit beliebiger Genauigkeit.