Unendlich viele ℕ
Hintergrund:
Eine Folge von unendlichen Naturtönen ist eine Folge, die jede natürliche Zahl unendlich oft enthält.
Zur Verdeutlichung muss jede Nummer mehrfach gedruckt werden!
Die Herausforderung:
Geben Sie eine Folge von unendlichen Naturtönen mit dem kürzesten Code aus.
Regeln:
- Jede Zahl muss durch eine (endliche) Anzahl von sichtbaren Leerzeichen, Leerzeichen oder neuen Zeilenzeichen getrennt werden, die keine Ziffer sind.
- Das Programm kann nicht beendet werden (es sei denn, Sie haben irgendwie alle Zahlen geschrieben).
- Jede Art, eine solche Sequenz zu schreiben, ist akzeptabel.
Beispiele:
1
1 2
1 2 3
1 2 3 4
1 2 3 4 5
1 2 3 4 5 6
1 2 3 4 5 6 7
...
1, 1, 2, 1, 2, 3, 1, 2, 3, 4...
Beachten Sie, dass wir alle Naturtöne von 1 bis N für alle N ∈ ∈ schreiben.
Feedback und Änderungen an der Frage sind willkommen. Inspiriert von meiner Calculus-Prüfung.
Antworten
Scratch 3.0 , 13 20 Blöcke / 121 70 Bytes

Als SB-Syntax:
define(n)(i
say(i
((n)+<(i)=(n)>)((1)+((i)*<(i)<(n
Dies sagt jeder Begriff in der Sequenz. Eine Verzögerung kann hinzugefügt werden, damit die Zahlen nicht schnell ausgelöst werden.
Ich habe noch nie einen so missbrauchten Kratzer gesehen. Sie rufen die Funktion für leere Namen mit leeren Parametern auf . Meine Güte. Was auch immer Bytes spart!
-51 danke an @att
Probieren Sie es bei Scratch aus
Erklärung kommt bald.
Schale , 2 Bytes
ḣN
Probieren Sie es online aus!
Erste Husk Antwort! Verwendet auch die Reihenfolge in der Frage
Wie es funktioniert
ḣN - Main program
N - The infinite list [1, 2, 3, ...]
ḣ - Prefixes; [[1], [1, 2], [1, 2, 3], ...]
05AB1E , 2 Bytes
∞L
Probieren Sie es online aus! Die Fußzeile formatiert die Ausgabe wie im Beispiel aus dem Beitrag.
∞
schiebt eine Liste aller natürlichen Zahlen, L
nimmt den Bereich [1 .. n]
für jede Zahl.
R , 26 25 24 Bytes
-1 Byte dank Dominic van Essen
repeat cat(rpois(9,9)+1)
Probieren Sie es online aus!
Gibt eine zufällige unendliche Folge von ganzen Zahlen aus, die aus dem \ gezogen werden$Poisson(9)\$Verteilung (+1, um die Ausgabe von Nullen zu vermeiden). Sie werden in Chargen von jeweils 9 Stück ausgegeben, um mehr "Effizienz" zu erzielen. Jeder positive Wert des Mittelwerts würde funktionieren; Die Verwendung eines Mittelwerts von 9 maximiert die Varianz für 1-stellige Zahlen.
Alle Zahlen erscheinen unendlich oft in dem Sinne, dass für jede ganze Zahl \$k\$, die erwartete Anzahl von Vorkommen von \$k\$im ersten \$n\$Realisierungen gehen an \$\infty\$as \$n\to\infty\$::
$$E\left[\sum_{i=1}^n\mathbb{I}_{X_i=k}\right]\xrightarrow[n\to\infty]{}\infty.$$
Die Aufrufe cat
bedeuten, dass die Ganzzahlen innerhalb eines 9er-Stapels durch Leerzeichen getrennt sind, es jedoch kein Trennzeichen zwischen den Stapeln gibt. Die überwiegende Mehrheit der 3- und 4-stelligen Zahlen in der Ausgabe ist auf dieses Artefakt zurückzuführen, aber es gibt eine theoretische Garantie dafür, dass solche Zahlen (und größere Zahlen) schließlich ausgegeben werden, zumindest wenn wir davon ausgehen, dass der zugrunde liegende Zufallszahlengenerator ist perfekt.
Für eine größere Varianz können wir Giuseppes Vorschlag für dieselbe Byteanzahl folgen:
repeat cat(1%/%runif(9))
Probieren Sie es online aus!
Dies führt zu immer mehr 1
s (einschließlich einiger sehr großer Zahlen dank des cat
Artefakts). Wiederum geht die Anzahl der Vorkommen einer ganzen Zahl auf unendlich, wenn die Größe der Ausgabe auf unendlich geht.
Zwei weitere R-Antworten kommen mit deterministischen Methoden kürzer heraus: die von Giuseppe und Dominic van Essen
Python 2 , 31 Bytes
R=1,
while 1:print R;R+=len(R),
Probieren Sie es online aus!
Vielen Dank an @Danis für das Speichern eines Bytes hier R+=R[-1]+1,
. Diese
Drucke:
(1,)
(1, 1)
(1, 1, 2)
(1, 1, 2, 3)
(1, 1, 2, 3, 4)
(1, 1, 2, 3, 4, 5)
...
Sammelt jedes Mal eine Liste mit Zahlen von 1 bis n (außer 1 erscheint zweimal), wenn das letzte Element plus eins angehängt wird.
32 Bytes
R=[1]
for x in R:print R;R+=x+1,
Probieren Sie es online aus!
Python 2 , 30 Bytes (vermutet)
n=2
while 1:print~-2**n%n;n+=1
Probieren Sie es online aus!
Die Reihenfolge von \$2^n \bmod n\$( A015910 ) wird vermutet, alle Werte anzunehmen \$k \geq 0\$außer \$k=1\$. Ich weiß nicht, ob auch vermutet wird, dass jeder Wert unendlich oft vorkommt, aber er scheint mit bekannten Lösungen für bestimmte Werte übereinzustimmen .
Wir berechnen stattdessen \$(2^n-1) \bmod n\$, was macht \$0\$eher als \$1\$ sei der einzige fehlende Wert (wenn die Vermutung gilt).
Wenn Sie sich die Ausgabe ansehen, denken Sie vielleicht, dass \$2\$wird nie ausgegeben, aber es erscheint tatsächlich zuerst für \$n=4700063497\$und für zunehmend höhere Werte in A050259 .
Python 2 , 33 Bytes
R=[1]
for x in R:print x;R+=x+1,1
Probieren Sie es online aus!
Dies ist länger, aber es ist ziemlich geschickt, die ABACABA-Sequenz zu drucken .
Haskell , 17 Bytes
[[1..x]|x<-[1..]]
Probieren Sie es online aus!
Da die Herausforderung eine nicht flache Ausgabe zu ermöglichen scheint, können wir einfach eine Liste der Listen [1],[1,2],[1,2,3,],...
erstellen, wie von @AZTECCO vorgeschlagen.
Haskell , 19 Bytes
l=1:do x<-l;[x+1,1]
Probieren Sie es online aus!
Eine rekursiv definierte unendliche flache Liste mit der ABACABA-Sequenz 1,2,1,3,1,2,1,4,...
( A001511 ).
Eine gleichlange Variante:
l=(:[1]).succ=<<0:l
Probieren Sie es online aus!
20 Bytes
l=do x<-[1..];[1..x]
Probieren Sie es online aus!
Aufzählen 1,1,2,1,2,3,1,2,3,4,...
, aber als flache Liste.
Bash + GNU Coreutils, 20
seq -fseq\ %g inf|sh
Probieren Sie es online aus! - Zeitüberschreitung nach 60 Sekunden.
sed 4.2.2 , 20
:;s/(1*).*/1\1 &/p;b
Probieren Sie es online aus!
Die Ausgabe ist gemäß diesem Metakonsens unär .
Bash , 20 Bytes
seq inf|xargs -l seq
Probieren Sie es online aus!
R , 21 Bytes
(auch nahezu gleichzeitig von Robin Ryder identifiziert)
while(T<-T+1)cat(T:0)
Probieren Sie es online aus!
Ähnlich wie in der Beispielsequenz, jedoch wird jede Unterserie umgekehrt, und der Anfangswert in jeder Unterreihe wird mit einer anfänglichen Null dargestellt ( 03
z. B. für 3).
Wenn Ihnen die anfänglichen Nullen nicht gefallen, schauen Sie sich die vorherige Version mit show
(unten) oder die Antwort von Giuseppe an .
R , 23 22 Bytes
Edit: -1 Byte dank Robin Ryder
while(T<-T+1)show(1:T)
Probieren Sie es online aus!
Gibt die im Beispiel verwendete Sequenz sowie eine zusätzliche unendliche Anzahl von Kopien der Nummer aus 1
.
Jede Zahl wird entweder durch ein Leerzeichen "
", eine neue Zeile plus Klammer " \n[
" oder eine Klammer plus Leerzeichen " [
" getrennt.
2 Bytes Golf (mindestens zum Zeitpunkt der Veröffentlichung ...) als die beiden anderen R- Antworten ...
Gelee , 4 Bytes
‘RṄß
Probieren Sie es online aus!
Ich denke, dies gibt unendlich oft alle Zahlen aus, aber da es sich um ein anderes Ausgabeformat handelt, bin ich mir nicht 100% sicher
Wie es funktioniert
‘RṄß - Main link. Left argument is initially n = 0
‘ - Increment
R - Range
Ṅ - Print
ß - Recursively run the main link
Für n = 0
, ‘RṄ
Ausgänge [1]
. Wir rekursieren dann mit n = [1]
. ‘RṄ
dann gibt es aus [[1, 2]]
, und wir rekursieren erneut, wobei wir verwenden n = [[1, 2]]
, welche Ausgaben [[[1, 2], [1, 2, 3]]]
usw.
Oktave , 29 28 Bytes
do disp(fix(1/rand)) until 0
Probieren Sie es online aus!
Dies gibt eine Sequenz \ aus$(x_k)\$von unabhängigen, identisch verteilten natürlichen Zufallszahlen. Jeder Wert \$x_k\$wird erhalten als \$1/r\$gegen Null gerundet, wobei \$r\$hat eine gleichmäßige Verteilung auf das Intervall \$(0,1)\$.
Für einen bestimmten Index \$k\$und für jedes \$n \in \mathbb N\$gibt es eine Wahrscheinlichkeit ungleich Null, dass \$x_k=n\$(Ignorieren von Gleitkomma-Ungenauigkeiten). Daher mit Wahrscheinlichkeit \$1\$jeder \$n\$erscheint unendlich oft in der Sequenz \$(x_k)\$.
R , 25 21 Bytes
repeat T=print(T:0+1)
Probieren Sie es online aus!
Drucke 2..1, 3..1, 4..1
und so weiter.
Vielen Dank an Robin Ryder für -4 Bytes.
Dies funktioniert, weil print
das erste Argument unsichtbar zurückgegeben wird.
Befunge , 5 Bytes
>1+?.
Probieren Sie es online aus!
Bei jeder Ausgabe besteht eine 50% ige Chance, dass die aktuelle Zahl gedruckt und auf 1 zurückgesetzt wird, und eine 50% ige Chance, dass 2
die aktuelle Zahl gedruckt wird und sich die aktuelle Zahl um eine zufällige ungerade Zahl erhöht (nach einer Exponentialverteilung). Dies kann mehrmals vorkommen, sodass auch ungerade Zahlen ausgegeben werden können.
Jede natürliche Zahl hat eine Wahrscheinlichkeit ungleich Null, so dass sie schließlich unendlich oft gedruckt wird.
Erläuterung
>1+?.
> # Go east.
1+ # Initialize a counter to 1.
? # Go in a random direction.
# If the instruction pointer goes west:
+ # Add the top two stack elements together.
# If there is a 2 on top, this adds it to the counter.
# If not, this does nothing.
1 # Create a new 1 on the top of the stack.
> # Go east.
1+ # Add 1 to get 2, which remains on top of the counter.
? # Repeat.
? # If the IP goes east:
. # Print and delete the top of the stack.
> # Go east.
1+ # Add 1.
# If there was a 2 that was printed and the counter remains, the 1 gets added to it.
# If the counter was printed instead, this creates a new 1.
? # Repeat.
? # If the IP goes north or south, it wraps around to the ? instruction and repeats.
Befunge-98 , 14 Bytes
]:.1-:0`j
]:+!
Probieren Sie es online aus!
Eine deterministische Lösung, bei der jeder Bereich von 1 bis n
in absteigender Reihenfolge gedruckt wird.
Erläuterung
] # Turn right (to the south) and go to the second line.
]:+!
] # Turn right again (to the west).
! # Take the logical NOT of the secondary counter (which is now 0) to get 1.
+ # Add the 1 to the main counter.
: # Duplicate the main counter to form a secondary counter.
] # Turn right (to the north) and go to the first line.
]:.1-:0`j
] # Turn right (to the east).
: # Duplicate the secondary counter.
. # Print and delete the duplicate.
1- # Subtract 1 from the secondary counter.
0` # Is the secondary counter greater than 0?
j # If so, jump over the ] instruction and repeat the first line.
] # If not, turn right (to the south) and go to the second line.
vermitteln , 27 Bytes
>v
1","@"}
^+^<#-1
1+<<<
Probieren Sie es online aus!

Dies zählt von aufeinanderfolgenden Zahlen herunter.
Wolfram Language (Mathematica) , 25 Bytes
Do[Print@n,{m,∞},{n,m}]
Probieren Sie es online aus!
-1 Byte @att
Brachylog , 4 Bytes
⟦₁ẉ⊥
Probieren Sie es online aus!
ẉ Print with a newline
⟦₁ the range from 1 to something,
⊥ then try again.
J , 13 Bytes
$:@,~[echo@#\
Probieren Sie es online aus!
Ausgänge 1
, 1 2
, 1 2 3 4
, 1 2 3 4 5 6 7 8
, usw, mit jeder Nummer in einer eigenen Zeile.
echo@#\
Geben Sie die Präfixlängen der aktuellen Liste aus, dh1..n
wobei n die aktuelle Listenlänge ist. Dies geschieht als Nebeneffekt.$:@,~
Hängen Sie die Liste an sich selbst an,~
und rufen Sie die Funktion rekursiv auf$:@
.
Rost , 54 Bytes
(2..).for_each(|x|(1..x).for_each(|y|print!("{} ",y)))
Probieren Sie es online aus
Ruby , 17 Bytes
loop{p *1..$.+=1}
Probieren Sie es online aus!
Holzkohle , 8 Bytes
W¹«I⊕ⅉD⸿
Probieren Sie es online aus! Der Link führt zur ausführlichen Version des Codes. Funktioniert, indem wiederholt die nächste Nummer auf die Leinwand gedruckt und dann die gesamte Leinwand ausgegeben wird.
2 Bytes für eine Version, die das \ druckt$ n \$th Term einer Sequenz:
IΣ
Probieren Sie es online aus! Erläuterung: Druckt einfach die digitale Summe der Eingabe. Bei jeder natürlichen Zahl \$ n \$, alle Werte des Formulars \$ \frac { 10 ^ n - 1 } 9 10 ^ m \$habe eine digitale Summe von \$ n \$für jeden \$ m \$somit erscheint jede natürliche Zahl unendlich oft.
C (gcc) , 43 Bytes
i;main(j){for(;;)printf("%d ",j=--j?:++i);}
Probieren Sie es online aus!
JavaScript (V8) , 26 Bytes
for(a=b='';;)write(a+=--b)
Probieren Sie es online aus!
-
Als Trennzeichen verwendetes Zeichen und die Ausgabe beginnt damit, daher bin ich mir nicht sicher, ob dies akzeptabel ist.
C (gcc) , 52 49 44 Bytes
5 Bytes dank AZTECCO gespart !!!
f(i,j){for(j=1;printf("%d ",j--);)j=j?:++i;}
Probieren Sie es online aus!
Java (JDK) , 61 Byte
v->{for(int i,j=2;;j++)for(i=0;++i<j;)System.out.println(i);}
Probieren Sie es online aus!
Edit: Danke @user, dass du ein paar Bytes rasiert und mir geholfen hast, heute etwas zu lernen! Vielen Dank an @KevinCruijssen für -2 Bytes.
Bash, 21 Bytes
s(){ seq $[++n];s;};s
1
1
2
1
2
3
…
Führen Sie die 21B-Version auf Try It Online aus
Dies definiert eine Funktion s
, die seq NUMBER
dort ausgeführt wird , wo sie NUMBER
beginnt 1
und mit jedem Lauf inkrementiert wird. Anschließend wird sie selbst rekursiv ausgeführt. Nach der Definition laufen wir s
.
Für die Angabe der Kosten von 5B -s\
(Trennzeichen ist ein Leerzeichen) kann es an eine Lösung mit einer Antwort pro Zeile und 26 Byte angepasst werden :
s(){ seq -s\ $[++n];s;};s
1
1 2
1 2 3
…
Führen Sie die 26B-Version auf Try It Online aus
Zsh, 29 .. 19 Bytes
Lösung von @AdamKatz: Probieren Sie es online aus!
for ((;++i;))seq $i
19 Bytes, Port von Bash: s(){seq $[++n];s};s
25 Bytes (pro @AdamKatz): for ((;++i;))echo {1..$i}
25 Bytes : for ((;;i++))shuf -i 1-$i
26 Bytes (pro @AdamKatz): for ((;;))echo {1..$[++i]}
29 Bytes : for ((i=1;;))echo {1..$[i++]}
Ich habe versucht, /dev/random
eine Alternative zu verwenden, aber es war ein Chaos!
Perl 5 , 22 20 Bytes
say while$_.=++$i.$"
Probieren Sie es online aus!
AWK , 34 Bytes
{for(;;++i)for(j=0;j++<i;)print j}
Probieren Sie es online aus!
APL (Dyalog Unicode) , 12 11 Bytes (SBCS)
1 Byte dank @ovs gespeichert
{∇1+⍴⎕←⍳⍵}1
Probieren Sie es online aus!
Dieser verwendet auch die Sequenz aus der Frage.