Tak terhingga banyak ℕ
Latar Belakang:
Urutan bilangan asli tak terhingga adalah deret yang berisi setiap bilangan asli tak hingga berkali-kali.
Untuk memperjelas, setiap nomor harus dicetak berkali-kali!
Tantangan:
Menghasilkan urutan naturals tak terbatas dengan kode terpendek.
Aturan:
- Setiap angka harus dipisahkan oleh sejumlah karakter baris yang terlihat, spasi kosong, atau baru yang bukan digit.
- Program tidak dapat dihentikan (kecuali Anda entah bagaimana menulis semua nomor).
- Cara apa pun untuk menulis urutan seperti itu dapat diterima.
Contoh:
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...
Perhatikan bahwa kita menulis semua natural dari 1 sampai N untuk semua N ∈ ℕ.
Kami menyambut baik masukan dan pengeditan pertanyaan. Terinspirasi oleh ujian Kalkulus saya.
Jawaban
Scratch 3.0 , 13 20 blok / 121 70 byte

Sebagai Sintaks SB:
define(n)(i
say(i
((n)+<(i)=(n)>)((1)+((i)*<(i)<(n
Ini mengatakan setiap istilah dalam urutan. Penundaan dapat ditambahkan agar angka-angka tersebut tidak cepat menyala.
Saya belum pernah melihat goresan yang begitu disalahgunakan. Anda memanggil fungsi nama kosong dengan parameter kosong . Ya ampun. Apapun yang menghemat byte!
-51 berkat @att
Cobalah di Scratch
Penjelasan segera hadir.
Husk , 2 byte
ḣN
Cobalah secara online!
Jawaban First Husk! Juga menggunakan urutan dalam pertanyaan
Bagaimana itu bekerja
ḣN - Main program
N - The infinite list [1, 2, 3, ...]
ḣ - Prefixes; [[1], [1, 2], [1, 2, 3], ...]
05AB1E , 2 byte
∞L
Cobalah secara online! Footer memformat keluaran seperti contoh dari postingan.
∞
mendorong daftar semua bilangan asli, L
mengambil kisaran [1 .. n]
untuk setiap nomor.
R , 26 25 24 byte
-1 byte berkat Dominic van Essen
repeat cat(rpois(9,9)+1)
Cobalah secara online!
Menghasilkan urutan bilangan bulat acak tak terbatas, diambil dari \$Poisson(9)\$distribusi (+1 untuk menghindari keluaran 0s). Mereka adalah output dalam batch 9 sekaligus, untuk lebih "efisiensi". Setiap nilai positif dari mean akan berhasil; menggunakan rata-rata 9 memaksimalkan varians untuk angka 1 karakter.
Semua angka sering muncul tanpa batas dalam arti untuk bilangan bulat apa pun \$k\$, jumlah kemunculan yang diharapkan dari \$k\$di pertama \$n\$realisasi pergi ke \$\infty\$sebagai \$n\to\infty\$:
$$E\left[\sum_{i=1}^n\mathbb{I}_{X_i=k}\right]\xrightarrow[n\to\infty]{}\infty.$$
Panggilan tersebut cat
berarti bahwa ada bilangan bulat dalam satu kumpulan 9 yang dipisahkan oleh spasi, tetapi tidak ada pemisah di antara kumpulan. Sebagian besar angka 3 dan 4 digit dalam keluaran disebabkan oleh artefak ini, tetapi ada jaminan teoretis bahwa angka tersebut (dan angka yang lebih besar) pada akhirnya akan menjadi keluaran, setidaknya jika kita mengasumsikan bahwa pembuat bilangan acak yang mendasarinya sempurna.
Untuk varian yang lebih besar, kita dapat mengikuti saran Giuseppe untuk jumlah byte yang sama:
repeat cat(1%/%runif(9))
Cobalah secara online!
Ini menginduksi lebih banyak 1
dan lebih banyak angka (termasuk beberapa angka yang sangat besar berkat cat
artefak). Sekali lagi, jumlah kemunculan bilangan bulat apa pun menjadi tak terhingga ketika ukuran keluaran menjadi tak terhingga.
Dua jawaban R lainnya keluar lebih singkat, menggunakan metode deterministik: Giuseppe dan Dominic van Essen
Python 2 , 31 byte
R=1,
while 1:print R;R+=len(R),
Cobalah secara online!
Terima kasih kepada @Danis karena telah menghemat satu byte di sini R+=R[-1]+1,
. Ini
Cetakan:
(1,)
(1, 1)
(1, 1, 2)
(1, 1, 2, 3)
(1, 1, 2, 3, 4)
(1, 1, 2, 3, 4, 5)
...
Mengumpulkan daftar angka dari 1 hingga n (kecuali 1 muncul dua kali) setiap kali menambahkan elemen terakhir ditambah satu.
32 byte
R=[1]
for x in R:print R;R+=x+1,
Cobalah secara online!
Python 2 , 30 byte (terkira)
n=2
while 1:print~-2**n%n;n+=1
Cobalah secara online!
Urutan \$2^n \bmod n\$( A015910 ) diperkirakan mengambil semua nilai \$k \geq 0\$kecuali \$k=1\$. Saya tidak tahu apakah ini juga merupakan dugaan bahwa setiap nilai muncul berkali-kali tanpa batas, tetapi tampaknya konsisten dengan solusi yang diketahui untuk nilai tertentu .
Kami malah menghitung \$(2^n-1) \bmod n\$, yang membuat \$0\$daripada \$1\$ menjadi satu-satunya nilai yang hilang (jika dugaan tersebut berlaku).
Melihat hasilnya, Anda mungkin berpikir bahwa \$2\$tidak pernah dihasilkan, tetapi sebenarnya muncul pertama kali untuk \$n=4700063497\$dan untuk nilai yang semakin tinggi di A050259 .
Python 2 , 33 byte
R=[1]
for x in R:print x;R+=x+1,1
Cobalah secara online!
Ini lebih panjang, tapi cukup bagus, mencetak urutan ABACABA .
Haskell , 17 byte
[[1..x]|x<-[1..]]
Cobalah secara online!
Karena tantangan tampaknya mengizinkan keluaran non-datar, kita dapat membuat daftar daftar [1],[1,2],[1,2,3,],...
, seperti yang disarankan oleh @AZTECCO.
Haskell , 19 byte
l=1:do x<-l;[x+1,1]
Cobalah secara online!
Daftar datar tak hingga yang didefinisikan secara rekursif dengan urutan ABACABA1,2,1,3,1,2,1,4,...
( A001511 ).
Varian dengan panjang yang sama:
l=(:[1]).succ=<<0:l
Cobalah secara online!
20 byte
l=do x<-[1..];[1..x]
Cobalah secara online!
Menghitung 1,1,2,1,2,3,1,2,3,4,...
, tetapi sebagai daftar datar.
Bash + GNU Coreutils, 20
seq -fseq\ %g inf|sh
Cobalah secara online! - Waktu habis setelah 60 detik.
sed 4.2.2 , 20
:;s/(1*).*/1\1 &/p;b
Cobalah secara online!
Output tidak berubah, sesuai dengan meta konsensus ini .
Bash , 20 byte
seq inf|xargs -l seq
Cobalah secara online!
R , 21 byte
(juga hampir bersamaan diidentifikasi oleh Robin Ryder)
while(T<-T+1)cat(T:0)
Cobalah secara online!
Mirip dengan urutan contoh, tetapi setiap sub-seri dibalik, dan nilai awal di setiap subseries diwakili dengan nol awal (jadi, 03
untuk 3, misalnya).
Jika Anda tidak menyukai angka nol awal, lihat versi sebelumnya menggunakan show
(di bawah), atau jawaban Giuseppe .
R , 23 22 byte
Edit: -1 byte berkat Robin Ryder
while(T<-T+1)show(1:T)
Cobalah secara online!
Mengeluarkan urutan yang digunakan dalam contoh, ditambah jumlah salinan tak terbatas dari nomor tersebut 1
.
Setiap angka dipisahkan oleh spasi "
", baris baru plus tanda kurung, " \n[
", atau tanda kurung plus spasi " [
".
2-byte Golfier (pada saat posting, setidaknya ...) daripada lainnya dua R jawaban ...
Jelly , 4 byte
‘RṄß
Cobalah secara online!
Saya pikir ini mengeluarkan semua angka berkali-kali, tetapi karena ini adalah format output yang berbeda, saya tidak 100% yakin
Bagaimana itu bekerja
‘RṄß - Main link. Left argument is initially n = 0
‘ - Increment
R - Range
Ṅ - Print
ß - Recursively run the main link
Untuk n = 0
, ‘RṄ
keluaran [1]
. Kami kemudian mengulang, menggunakan n = [1]
. ‘RṄ
lalu mengeluarkan [[1, 2]]
, dan kami mengulang lagi, menggunakan n = [[1, 2]]
, yang mana menghasilkan [[[1, 2], [1, 2, 3]]]
dll.
Oktaf , 29 28 byte
do disp(fix(1/rand)) until 0
Cobalah secara online!
Ini menghasilkan urutan \$(x_k)\$independen, bilangan alam acak terdistribusi identik. Setiap nilai \$x_k\$diperoleh sebagai \$1/r\$dibulatkan menuju nol, di mana \$r\$memiliki distribusi seragam pada interval \$(0,1)\$.
Untuk indeks tertentu \$k\$, dan untuk setiap \$n \in \mathbb N\$, ada kemungkinan bukan nol bahwa \$x_k=n\$(mengabaikan ketidakakuratan floating-point). Oleh karena itu, dengan probabilitas \$1\$setiap \$n\$muncul tak terhingga sering dalam urutan \$(x_k)\$.
R , 25 21 byte
repeat T=print(T:0+1)
Cobalah secara online!
Sidik Jari 2..1, 3..1, 4..1
dan lain sebagainya.
Terima kasih kepada Robin Ryder untuk -4 byte.
Ini berfungsi karena print
mengembalikan argumen pertamanya secara tidak terlihat.
Befunge , 5 byte
>1+?.
Cobalah secara online!
Pada setiap keluaran, ada kemungkinan 50% nomor saat ini akan dicetak dan disetel ulang ke 1, dan kemungkinan 50% yang 2
akan dicetak dan nomor saat ini akan bertambah beberapa bilangan ganjil acak (mengikuti distribusi eksponensial). Ini bisa terjadi berkali-kali, jadi bilangan ganjil juga bisa dikeluarkan.
Setiap bilangan asli memiliki probabilitas kejadian bukan nol, sehingga pada akhirnya akan dicetak berkali-kali tanpa batas.
Penjelasan
>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 byte
]:.1-:0`j
]:+!
Cobalah secara online!
Solusi deterministik, mencetak setiap rentang dari 1 hingga n
dalam urutan menurun.
Penjelasan
] # 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.
sampaikan , 27 byte
>v
1","@"}
^+^<#-1
1+<<<
Cobalah secara online!

Ini menghitung mundur dari angka-angka berturut-turut.
Bahasa Wolfram (Mathematica) , 25 byte
Do[Print@n,{m,∞},{n,m}]
Cobalah secara online!
-1 byte @att
Brachylog , 4 byte
⟦₁ẉ⊥
Cobalah secara online!
ẉ Print with a newline
⟦₁ the range from 1 to something,
⊥ then try again.
J , 13 byte
$:@,~[echo@#\
Cobalah secara online!
Output 1
, 1 2
, 1 2 3 4
, 1 2 3 4 5 6 7 8
, dll, dengan setiap nomor pada baris sendiri.
echo@#\
Keluarkan panjang prefiks dari daftar saat ini, yaitu, di1..n
mana n adalah panjang daftar saat ini. Ini dilakukan sebagai efek samping.$:@,~
Tambahkan daftar ke dirinya sendiri,~
dan panggil fungsi secara rekursif$:@
.
Rust , 54 byte
(2..).for_each(|x|(1..x).for_each(|y|print!("{} ",y)))
Cobalah secara online
Ruby , 17 byte
loop{p *1..$.+=1}
Cobalah secara online!
Arang , 8 byte
W¹«I⊕ⅉD⸿
Cobalah secara online! Tautan adalah untuk verbose versi kode. Bekerja dengan mencetak berulang kali nomor berikutnya ke kanvas dan kemudian membuang seluruh kanvas.
2 byte untuk versi yang mencetak \$ n \$istilah urutan:
IΣ
Cobalah secara online! Penjelasan: Cukup mencetak jumlah digital dari input. Diberikan bilangan asli \$ n \$, semua nilai formulir \$ \frac { 10 ^ n - 1 } 9 10 ^ m \$memiliki jumlah digital \$ n \$untuk setiap \$ m \$, dengan demikian setiap bilangan asli sering muncul tanpa batas.
C (gcc) , 43 byte
i;main(j){for(;;)printf("%d ",j=--j?:++i);}
Cobalah secara online!
JavaScript (V8) , 26 byte
for(a=b='';;)write(a+=--b)
Cobalah secara online!
Karakter yang -
digunakan sebagai pemisah dan keluarannya dimulai dengannya, jadi saya tidak begitu yakin apakah ini dapat diterima.
C (gcc) , 52 49 44 byte
Disimpan 5 byte berkat AZTECCO !!!
f(i,j){for(j=1;printf("%d ",j--);)j=j?:++i;}
Cobalah secara online!
Java (JDK) , 61 byte
v->{for(int i,j=2;;j++)for(i=0;++i<j;)System.out.println(i);}
Cobalah secara online!
Sunting: Terima kasih @user karena telah mengurangi beberapa byte dan membantu saya mempelajari sesuatu hari ini! Terima kasih banyak kepada @KevinCruijssen untuk -2 byte.
Bash, 21 byte
s(){ seq $[++n];s;};s
1
1
2
1
2
3
…
Jalankan versi 21B di Try It Online
Ini mendefinisikan fungsi s
yang berjalan di seq NUMBER
mana NUMBER
dimulai pada 1
dan bertambah dengan setiap proses, lalu berjalan sendiri secara rekursif. Setelah definisi, kami jalankan s
.
Untuk biaya 5B untuk menentukan -s\
(pemisah adalah karakter spasi), ini dapat disesuaikan dengan solusi satu jawaban per baris pada 26 byte:
s(){ seq -s\ $[++n];s;};s
1
1 2
1 2 3
…
Jalankan versi 26B di Try It Online
Zsh, 29 .. 19 byte
Solusi oleh @AdamKatz: Cobalah Online!
for ((;++i;))seq $i
19 byte, port dari bash: s(){seq $[++n];s};s
25 byte (per @AdamKatz): for ((;++i;))echo {1..$i}
25 byte : for ((;;i++))shuf -i 1-$i
26 byte (per @AdamKatz): for ((;;))echo {1..$[++i]}
29 byte : for ((i=1;;))echo {1..$[i++]}
Saya mencoba menggunakan /dev/random
alternatif tetapi berantakan!
Perl 5 , 22 20 byte
say while$_.=++$i.$"
Cobalah secara online!
AWK , 34 byte
{for(;;++i)for(j=0;j++<i;)print j}
Cobalah secara online!
APL (Dyalog Unicode) , 12 11 byte (SBCS)
Disimpan 1 byte berkat @ovs
{∇1+⍴⎕←⍳⍵}1
Cobalah secara online!
Yang ini juga menggunakan urutan dari pertanyaan.