Tak terhingga banyak ℕ

Nov 30 2020

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:

  1. Setiap angka harus dipisahkan oleh sejumlah karakter baris yang terlihat, spasi kosong, atau baru yang bukan digit.
  2. Program tidak dapat dihentikan (kecuali Anda entah bagaimana menulis semua nomor).
  3. 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

23 Lyxal Nov 30 2020 at 21:03

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.

17 cairdcoinheringaahing Nov 30 2020 at 18:18

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], ...]
15 ovs Nov 30 2020 at 18:14

05AB1E , 2 byte

∞L

Cobalah secara online! Footer memformat keluaran seperti contoh dari postingan.

mendorong daftar semua bilangan asli, Lmengambil kisaran [1 .. n]untuk setiap nomor.

13 RobinRyder Nov 30 2020 at 18:59

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 catberarti 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 1dan lebih banyak angka (termasuk beberapa angka yang sangat besar berkat catartefak). 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

10 xnor Dec 01 2020 at 07:26

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 .

9 xnor Nov 30 2020 at 23:38

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.

7 DigitalTrauma Nov 30 2020 at 18:18

Bash + GNU Coreutils, 20

seq -fseq\ %g inf|sh

Cobalah secara online! - Waktu habis setelah 60 detik.

7 DigitalTrauma Nov 30 2020 at 18:29

sed 4.2.2 , 20

:;s/(1*).*/1\1 &/p;b

Cobalah secara online!

Output tidak berubah, sesuai dengan meta konsensus ini .

7 Mukundan314 Dec 01 2020 at 04:51

Bash , 20 byte

seq inf|xargs -l seq

Cobalah secara online!

6 DominicvanEssen Dec 01 2020 at 08:36

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, 03untuk 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 ...

5 cairdcoinheringaahing Nov 30 2020 at 17:58

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.

5 LuisMendo Nov 30 2020 at 19:28

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)\$.

5 Giuseppe Nov 30 2020 at 23:06

R , 25 21 byte

repeat T=print(T:0+1)

Cobalah secara online!

Sidik Jari 2..1, 3..1, 4..1dan lain sebagainya.

Terima kasih kepada Robin Ryder untuk -4 byte.

Ini berfungsi karena printmengembalikan argumen pertamanya secara tidak terlihat.

5 PizgenalFilegav Dec 02 2020 at 03:18

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 2akan 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 ndalam 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.
4 WheatWizard Dec 17 2020 at 23:21

sampaikan , 27 byte

   >v
1","@"}
^+^<#-1
1+<<<

Cobalah secara online!

Ini menghitung mundur dari angka-angka berturut-turut.

4 J42161217 Nov 30 2020 at 18:20

Bahasa Wolfram (Mathematica) , 25 byte

Do[Print@n,{m,∞},{n,m}]

Cobalah secara online!

-1 byte @att

3 UnrelatedString Nov 30 2020 at 18:40

Brachylog , 4 byte

⟦₁ẉ⊥

Cobalah secara online!

  ẉ     Print with a newline
⟦₁      the range from 1 to something,
   ⊥    then try again.
3 Jonah Nov 30 2020 at 20:00

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, di 1..nmana n adalah panjang daftar saat ini. Ini dilakukan sebagai efek samping.
  • $:@,~Tambahkan daftar ke dirinya sendiri ,~dan panggil fungsi secara rekursif $:@.
3 Edgar Dec 01 2020 at 00:29

Rust , 54 byte

(2..).for_each(|x|(1..x).for_each(|y|print!("{} ",y)))

Cobalah secara online

3 Sisyphus Dec 01 2020 at 00:59

Ruby , 17 byte

loop{p *1..$.+=1}

Cobalah secara online!

3 Neil Nov 30 2020 at 23:00

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.

3 Sisyphus Dec 01 2020 at 01:04

C (gcc) , 43 byte

i;main(j){for(;;)printf("%d ",j=--j?:++i);}

Cobalah secara online!

3 NinaLisitsinskaya Dec 01 2020 at 05:42

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.

3 Noodle9 Nov 30 2020 at 18:26

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!

3 DMiddendorf Nov 30 2020 at 20:13

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.

3 AdamKatz Dec 03 2020 at 20:41

Bash, 21 byte

s(){ seq $[++n];s;};s
1
1
2
1
2
3
…

Jalankan versi 21B di Try It Online

Ini mendefinisikan fungsi syang berjalan di seq NUMBERmana NUMBERdimulai pada 1dan 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

3 roblogic Dec 01 2020 at 11:40

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/randomalternatif tetapi berantakan!

3 Xcali Nov 30 2020 at 19:51

Perl 5 , 22 20 byte

say while$_.=++$i.$"

Cobalah secara online!

2 Noodle9 Nov 30 2020 at 21:38

AWK , 34 byte

{for(;;++i)for(j=0;j++<i;)print j}

Cobalah secara online!

2 user Nov 30 2020 at 18:18

APL (Dyalog Unicode) , 12 11 byte (SBCS)

Disimpan 1 byte berkat @ovs

{∇1+⍴⎕←⍳⍵}1

Cobalah secara online!

Yang ini juga menggunakan urutan dari pertanyaan.