มากมายเพียบℕ

Nov 30 2020

พื้นหลัง:

ลำดับของธรรมชาติที่ไม่มีที่สิ้นสุดคือลำดับที่มีจำนวนธรรมชาติทุกจำนวนไม่ จำกัด หลาย ๆ ครั้ง

เพื่อความชัดเจนทุกหมายเลขต้องพิมพ์หลายครั้ง!

ความท้าทาย:

เอาท์พุตลำดับของธรรมชาติที่ไม่มีที่สิ้นสุดด้วยรหัสที่สั้นที่สุด

กฎ:

  1. แต่ละหมายเลขต้องคั่นด้วยจำนวน (จำกัด ) ของช่องว่างที่มองเห็นได้ช่องว่างหรืออักขระบรรทัดใหม่ที่ไม่ใช่ตัวเลข
  2. โปรแกรมไม่สามารถยุติได้ (เว้นแต่คุณจะเขียนตัวเลขทั้งหมด)
  3. วิธีใดก็ตามในการเขียนลำดับดังกล่าวเป็นที่ยอมรับ

ตัวอย่าง:

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...

สังเกตว่าเราเขียน naturals ทั้งหมดตั้งแต่ 1 ถึง N สำหรับ N ∈ℕทั้งหมด

ยินดีรับข้อเสนอแนะและการแก้ไขคำถาม แรงบันดาลใจจากการสอบแคลคูลัสของฉัน

คำตอบ

23 Lyxal Nov 30 2020 at 21:03

Scratch 3.0 , 13 20 บล็อก / 121 70 ไบต์

เป็นไวยากรณ์ SB:

define(n)(i
say(i
((n)+<(i)=(n)>)((1)+((i)*<(i)<(n

สิ่งนี้กล่าวถึงแต่ละคำในลำดับ สามารถเพิ่มการหน่วงเวลาเพื่อไม่ให้ตัวเลขเริ่มทำงานอย่างรวดเร็ว

ฉันไม่เคยเห็นเกาถูกทารุณกรรมขนาดนี้ คุณเรียกชื่อที่ว่างเปล่าฟังก์ชั่นที่มีพารามิเตอร์ที่ว่างเปล่า ความดีของฉัน. อะไรก็ตามที่ประหยัดไบต์!

-51 ขอบคุณ @att

ลองใช้กับ Scratch

คำอธิบายเร็ว ๆ นี้

17 cairdcoinheringaahing Nov 30 2020 at 18:18

แกลบ 2 ไบต์

ḣN

ลองออนไลน์!

คำตอบแรก Husk! ยังใช้ลำดับในคำถาม

มันทำงานอย่างไร

ḣ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 ไบต์

∞L

ลองออนไลน์! ส่วนท้ายจะจัดรูปแบบผลลัพธ์เหมือนกับตัวอย่างจากโพสต์

ผลักดันรายการตัวเลขธรรมชาติทั้งหมดLใช้ช่วง[1 .. n]ของแต่ละหมายเลข

13 RobinRyder Nov 30 2020 at 18:59

R , 26 25 24 ไบต์

-1 ไบต์ขอบคุณ Dominic van Essen

repeat cat(rpois(9,9)+1)

ลองออนไลน์!

แสดงลำดับเลขจำนวนเต็มแบบสุ่มแบบสุ่มซึ่งดึงมาจาก\$Poisson(9)\$การกระจาย (+1 เพื่อหลีกเลี่ยงการแสดงผล 0s) มีการส่งออกเป็นชุดครั้งละ 9 ชุดเพื่อ "ประสิทธิภาพ" ที่มากขึ้น ค่าบวกใด ๆ ของค่าเฉลี่ยจะใช้ได้ การใช้ค่าเฉลี่ย 9 จะเพิ่มความแปรปรวนสำหรับตัวเลข 1 อักขระ

ตัวเลขทั้งหมดมักจะปรากฏอย่างไม่สิ้นสุดในแง่ที่ว่าสำหรับจำนวนเต็ม\$k\$จำนวนที่คาดว่าจะเกิดขึ้นของ\$k\$ในช่วงแรก\$n\$การรับรู้ไปที่\$\infty\$เป็น\$n\to\infty\$:

$$E\left[\sum_{i=1}^n\mathbb{I}_{X_i=k}\right]\xrightarrow[n\to\infty]{}\infty.$$

การเรียกที่catหมายความว่ามีจำนวนเต็มภายในหนึ่งชุดของ 9 ถูกคั่นด้วยช่องว่าง แต่ไม่มีตัวคั่นระหว่างแบทช์ ตัวเลข 3 และ 4 หลักส่วนใหญ่ในเอาต์พุตเกิดจากสิ่งประดิษฐ์นี้ แต่มีการรับประกันทางทฤษฎีว่าตัวเลขดังกล่าว (และตัวเลขที่ใหญ่กว่า) จะได้รับผลลัพธ์ในที่สุดอย่างน้อยถ้าเราสมมติว่าตัวสร้างตัวเลขสุ่มที่อยู่ภายใต้ สมบูรณ์แบบ


สำหรับความแปรปรวนที่มากขึ้นเราสามารถทำตามคำแนะนำของ Giuseppe สำหรับจำนวนไบต์เดียวกัน:

repeat cat(1%/%runif(9))

ลองออนไลน์!

สิ่งนี้ทำให้เกิดจำนวนมากขึ้น1และจำนวนมากขึ้น (รวมถึงตัวเลขที่ใหญ่มากด้วยcatสิ่งประดิษฐ์) อีกครั้งจำนวนครั้งที่เกิดขึ้นของจำนวนเต็มใด ๆ จะไปที่อินฟินิตี้เมื่อขนาดของเอาต์พุตไปที่อินฟินิตี้


คำตอบ R อื่น ๆ อีกสองคำตอบสั้นกว่าโดยใช้วิธีการกำหนด: Giuseppe'sและDominic van Essen's

10 xnor Dec 01 2020 at 07:26

Python 2 , 31 ไบต์

R=1,
while 1:print R;R+=len(R),

ลองออนไลน์!

ขอขอบคุณที่ @Danis R+=R[-1]+1,สำหรับการบันทึกไบต์ที่นี่มากกว่า นี้

พิมพ์:

(1,)
(1, 1)
(1, 1, 2)
(1, 1, 2, 3)
(1, 1, 2, 3, 4)
(1, 1, 2, 3, 4, 5)
    ...

รวบรวมรายการของตัวเลขตั้งแต่ 1 ถึง n (ยกเว้น 1 ปรากฏขึ้นสองครั้ง) ทุกครั้งที่ต่อท้ายองค์ประกอบสุดท้ายบวกหนึ่ง

32 ไบต์

R=[1]
for x in R:print R;R+=x+1,

ลองออนไลน์!


Python 2 , 30 ไบต์ (คาดเดา)

n=2
while 1:print~-2**n%n;n+=1

ลองออนไลน์!

ลำดับของ\$2^n \bmod n\$( A015910 ) คาดว่าจะรับค่าทั้งหมด\$k \geq 0\$ยกเว้น\$k=1\$. ผมไม่ทราบว่ามันยังสันนิษฐานว่าแต่ละค่าจะปรากฏขึ้นมากมายหลายครั้ง แต่ดูเหมือนว่ามีความสอดคล้องกับการแก้ปัญหาที่รู้จักกันสำหรับค่าเฉพาะ

เราคำนวณแทน\$(2^n-1) \bmod n\$ซึ่งทำให้\$0\$มากกว่า\$1\$ เป็นค่าเดียวที่ขาดหายไป (หากการคาดเดามีอยู่)

กำลังมองหาที่ออกคุณอาจจะคิดว่า\$2\$จะไม่ส่งออก แต่ในความเป็นจริงจะปรากฏก่อนสำหรับ\$n=4700063497\$และค่าที่มีความก้าวหน้าสูงขึ้นในA050259


Python 2 , 33 ไบต์

R=[1]
for x in R:print x;R+=x+1,1

ลองออนไลน์!

นี่คืออีกต่อไป แต่ก็สวยดี, พิมพ์ลำดับ ABACABA

9 xnor Nov 30 2020 at 23:38

Haskell , 17 ไบต์

[[1..x]|x<-[1..]]

ลองออนไลน์!

เนื่องจากความท้าทายดูเหมือนว่าจะอนุญาตให้มีเอาต์พุตแบบไม่แบนเราจึงสามารถสร้างรายการ[1],[1,2],[1,2,3,],...ตามที่แนะนำโดย @AZTECCO

Haskell , 19 ไบต์

l=1:do x<-l;[x+1,1]

ลองออนไลน์!

รายการแบบไม่มีที่สิ้นสุดที่กำหนดแบบวนซ้ำพร้อมลำดับ ABACABA1,2,1,3,1,2,1,4,... ( A001511 )

ตัวแปรที่มีความยาวเท่ากัน:

l=(:[1]).succ=<<0:l

ลองออนไลน์!

20 ไบต์

l=do x<-[1..];[1..x]

ลองออนไลน์!

นับขึ้น1,1,2,1,2,3,1,2,3,4,...แต่เป็นรายการแบน

7 DigitalTrauma Nov 30 2020 at 18:18

Bash + GNU Coreutils, 20

seq -fseq\ %g inf|sh

ลองออนไลน์! - หมดเวลาหลังจาก 60 วินาที

7 DigitalTrauma Nov 30 2020 at 18:29

ข้อ 4.2.2 , 20

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

ลองออนไลน์!

เอาต์พุตเป็นเอกภาพตามความเห็นพ้องของเมตานี้

7 Mukundan314 Dec 01 2020 at 04:51

ทุบตี 20 ไบต์

seq inf|xargs -l seq

ลองออนไลน์!

6 DominicvanEssen Dec 01 2020 at 08:36

R , 21 ไบต์

(ยังระบุใกล้เคียงกันโดย Robin Ryder)

while(T<-T+1)cat(T:0)

ลองออนไลน์!

คล้ายกับลำดับตัวอย่าง แต่แต่ละชุดย่อยจะกลับรายการและค่าเริ่มต้นในแต่ละชุดย่อยจะแสดงด้วยศูนย์เริ่มต้น (ดังนั้น03สำหรับ 3 เช่น)

ถ้าคุณทำไม่ได้เช่นศูนย์เริ่มต้นแล้วมองไปที่รุ่นก่อนหน้าโดยใช้show(ด้านล่าง) หรือที่คำตอบของจูเซปเป้


R , 23 22 ไบต์

แก้ไข: -1 ไบต์ขอบคุณ Robin Ryder

while(T<-T+1)show(1:T)

ลองออนไลน์!

1ขาออกลำดับที่ใช้ในตัวอย่างบวกจำนวนอนันต์เพิ่มเติมสำเนาของจำนวน
แต่ละหมายเลขจะคั่นด้วยช่องว่าง " ", วงเล็บปีกกาขึ้นบรรทัดใหม่ " \n[" หรือวงเล็บเหลี่ยมบวกช่องว่าง " [ "

2 ไบต์ golfier (ในขณะที่การโพสต์อย่างน้อย ... ) กว่าอื่น ๆ สอง Rคำตอบ ...

5 cairdcoinheringaahing Nov 30 2020 at 17:58

เยลลี่ 4 ไบต์

‘RṄß

ลองออนไลน์!

ฉันคิดว่าสิ่งนี้ส่งผลให้ตัวเลขทั้งหมดเป็นจำนวนครั้งที่ไม่สิ้นสุด แต่เนื่องจากเป็นรูปแบบผลลัพธ์ที่แตกต่างกันฉันจึงไม่แน่ใจ 100%

มันทำงานอย่างไร

‘RṄß - Main link. Left argument is initially n = 0
‘    - Increment
 R   - Range
  Ṅ  - Print
   ß - Recursively run the main link

สำหรับn = 0, เอาท์พุท‘RṄ [1]จากนั้นเราจะเรียกคืนโดยใช้n = [1]. ‘RṄจากนั้นเอาต์พุต[[1, 2]]และเราจะเรียกคืนอีกครั้งโดยใช้n = [[1, 2]]เอาต์พุตใด[[[1, 2], [1, 2, 3]]]เป็นต้น

5 LuisMendo Nov 30 2020 at 19:28

Octave , 29 28 ไบต์

do disp(fix(1/rand)) until 0

ลองออนไลน์!

สิ่งนี้ส่งออกลำดับ\$(x_k)\$ของจำนวนธรรมชาติสุ่มที่เป็นอิสระและกระจายเหมือนกัน แต่ละค่า\$x_k\$ได้รับเป็น\$1/r\$ปัดเศษเข้าหาศูนย์โดยที่\$r\$มีการกระจายสม่ำเสมอในช่วงเวลา\$(0,1)\$.

สำหรับดัชนีที่กำหนด\$k\$และสำหรับ\$n \in \mathbb N\$มีความน่าจะเป็นที่ไม่ใช่ศูนย์ที่\$x_k=n\$(เพิกเฉยต่อความไม่ถูกต้องของทศนิยม) ดังนั้นด้วยความน่าจะเป็น\$1\$ทุก\$n\$มักปรากฏในลำดับไม่สิ้นสุด\$(x_k)\$.

5 Giuseppe Nov 30 2020 at 23:06

R , 25 21 ไบต์

repeat T=print(T:0+1)

ลองออนไลน์!

พิมพ์2..1, 3..1, 4..1และอื่น ๆ

ขอบคุณ Robin Ryder สำหรับ -4 ไบต์

สิ่งนี้ได้ผลเนื่องจากprintส่งคืนอาร์กิวเมนต์แรกสุดมองไม่เห็น

5 PizgenalFilegav Dec 02 2020 at 03:18

Befunge 5 ไบต์

>1+?.

ลองออนไลน์!

ในแต่ละเอาต์พุตมีโอกาส 50% ที่ตัวเลขปัจจุบันจะถูกพิมพ์และรีเซ็ตเป็น 1 และมีโอกาส 50% ที่2จะถูกพิมพ์และจำนวนปัจจุบันจะเพิ่มขึ้นตามจำนวนคี่แบบสุ่ม (ตามการแจกแจงแบบเอ็กซ์โพเนนเชียล) ซึ่งอาจเกิดขึ้นได้หลายครั้งดังนั้นจำนวนคี่ก็สามารถนำออกมาใช้ได้เช่นกัน

จำนวนธรรมชาติทุกตัวมีความน่าจะเป็นที่ไม่ใช่ศูนย์ดังนั้นในที่สุดก็จะถูกพิมพ์ออกมาเรื่อย ๆ หลาย ๆ ครั้ง

คำอธิบาย

>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 ไบต์

]:.1-:0`j
]:+!

ลองออนไลน์!

โซลูชันที่กำหนดโดยการพิมพ์แต่ละช่วงจาก 1 ถึงnจากมากไปหาน้อย

คำอธิบาย

]           # 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

ถ่ายทอด 27 ไบต์

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

ลองออนไลน์!

สิ่งนี้นับถอยหลังจากตัวเลขต่อเนื่อง

4 J42161217 Nov 30 2020 at 18:20

ภาษา Wolfram (Mathematica) , 25 ไบต์

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

ลองออนไลน์!

-1 ไบต์ @att

3 UnrelatedString Nov 30 2020 at 18:40

Brachylog , 4 ไบต์

⟦₁ẉ⊥

ลองออนไลน์!

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

J , 13 ไบต์

$:@,~[echo@#\

ลองออนไลน์!

เอาท์พุท1, 1 2, 1 2 3 4, 1 2 3 4 5 6 7 8ฯลฯ ที่มีจำนวนอยู่บนเส้นของตัวเองทุกคน

  • echo@#\แสดงความยาวคำนำหน้าของรายการปัจจุบันกล่าวคือโดย1..nที่ n คือความยาวของรายการปัจจุบัน นี่เป็นผลข้างเคียง
  • $:@,~ท้ายรายการเพื่อตัวเองและเรียกใช้ฟังก์ชันซ้ำ,~$:@
3 Edgar Dec 01 2020 at 00:29

สนิม 54 ไบต์

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

ลองออนไลน์

3 Sisyphus Dec 01 2020 at 00:59

ทับทิม 17 ไบต์

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

ลองออนไลน์!

3 Neil Nov 30 2020 at 23:00

ถ่าน 8 ไบต์

W¹«I⊕ⅉD⸿

ลองออนไลน์! ลิงก์คือรหัสเวอร์ชันที่ละเอียด ทำงานโดยการพิมพ์หมายเลขถัดไปซ้ำ ๆ ลงบนผืนผ้าใบจากนั้นทิ้งทั้งผืนผ้าใบ

2 ไบต์สำหรับเวอร์ชันที่พิมพ์\$ n \$คำศัพท์ลำดับ:

IΣ

ลองออนไลน์! คำอธิบาย: เพียงแค่พิมพ์ผลรวมดิจิทัลของอินพุต ระบุจำนวนธรรมชาติ\$ n \$ค่าทั้งหมดของแบบฟอร์ม\$ \frac { 10 ^ n - 1 } 9 10 ^ m \$มีผลรวมดิจิทัล\$ n \$สำหรับทุกๆ\$ m \$ดังนั้นจำนวนธรรมชาติแต่ละตัวจึงปรากฏบ่อยครั้งอย่างไม่สิ้นสุด

3 Sisyphus Dec 01 2020 at 01:04

C (gcc) , 43 ไบต์

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

ลองออนไลน์!

3 NinaLisitsinskaya Dec 01 2020 at 05:42

JavaScript (V8) 26 ไบต์

for(a=b='';;)write(a+=--b)

ลองออนไลน์!

อักขระที่-ใช้เป็นตัวคั่นและผลลัพธ์จะขึ้นต้นด้วยดังนั้นฉันไม่แน่ใจจริงๆว่าเป็นที่ยอมรับหรือไม่

3 Noodle9 Nov 30 2020 at 18:26

C (gcc) , 52 49 44 ไบต์

บันทึก 5 ไบต์ขอบคุณAZTECCO !!!

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

ลองออนไลน์!

3 DMiddendorf Nov 30 2020 at 20:13

Java (JDK) , 61 ไบต์

v->{for(int i,j=2;;j++)for(i=0;++i<j;)System.out.println(i);}

ลองออนไลน์!

แก้ไข: ขอบคุณ @user สำหรับการโกนออกไม่กี่ไบต์และช่วยให้ฉันเรียนรู้บางสิ่งในวันนี้! ขอบคุณมากที่ @KevinCruijssen สำหรับ -2 ไบต์

3 AdamKatz Dec 03 2020 at 20:41

Bash, 21 ไบต์

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

รันเวอร์ชัน 21B บน Try It Online

สิ่งนี้กำหนดฟังก์ชันsที่ทำงานseq NUMBERโดยNUMBERเริ่มต้นที่1และเพิ่มขึ้นในแต่ละรันจากนั้นจะทำงานซ้ำ sหลังจากที่ความหมายที่เราทำงาน

สำหรับค่าใช้จ่าย 5B ในการระบุ-s\ (ตัวคั่นเป็นอักขระช่องว่าง) สามารถปรับให้เป็นคำตอบหนึ่งคำตอบต่อบรรทัดที่ 26 ไบต์:

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

รันเวอร์ชัน 26B บน Try It Online

3 roblogic Dec 01 2020 at 11:40

Zsh, 29 .. 19 ไบต์

วิธีแก้ไขโดย @AdamKatz: ลองออนไลน์!

for ((;++i;))seq $i

19 ไบต์พอร์ตจาก bash: s(){seq $[++n];s};s
25 ไบต์ (ต่อ @AdamKatz): for ((;++i;))echo {1..$i}
25 ไบต์ : for ((;;i++))shuf -i 1-$i
26 ไบต์ (ต่อ @AdamKatz): for ((;;))echo {1..$[++i]}
29 ไบต์ : for ((i=1;;))echo {1..$[i++]}
ฉันพยายามใช้/dev/randomทางเลือกอื่น แต่มันยุ่ง!

3 Xcali Nov 30 2020 at 19:51

Perl 5 , 22 20 ไบต์

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

ลองออนไลน์!

2 Noodle9 Nov 30 2020 at 21:38

AWK , 34 ไบต์

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

ลองออนไลน์!

2 user Nov 30 2020 at 18:18

APL (Dyalog Unicode) , 12 11 ไบต์ (SBCS)

บันทึก 1 ไบต์ขอบคุณ@ovs

{∇1+⍴⎕←⍳⍵}1

ลองออนไลน์!

อันนี้ใช้ลำดับจากคำถามด้วย