นับตลอดไป


71

เขียนโปรแกรมที่นับตลอดไปเริ่มจากโปรแกรมหนึ่ง

กฎ:

  • โปรแกรมของคุณต้องเข้าสู่ระบบSTDOUTหรือเป็นทางเลือกที่ยอมรับได้หากSTDOUTไม่สามารถใช้ได้
  • โปรแกรมของคุณจะต้องเป็นโปรแกรมที่รันได้เต็มรูปแบบไม่ใช่ฟังก์ชันหรือตัวอย่าง
  • โปรแกรมของคุณจะต้องแสดงผลแต่ละหมายเลขด้วยอักขระคั่นระหว่าง (ขึ้นบรรทัดใหม่เว้นวรรคแท็บหรือเครื่องหมายจุลภาค) แต่สิ่งนี้จะต้องสอดคล้องกับตัวเลขทั้งหมด
  • คุณอาจจะพิมพ์ตัวเลขในทศนิยมในเอกหรือในฐาน 256 ซึ่งแต่ละหลักจะถูกแทนด้วยค่าไบต์
  • โปรแกรมของคุณจะต้องนับอย่างน้อยเท่ากับ 2 128 (รวม) โดยไม่มีปัญหาและไม่มีหน่วยความจำไม่เพียงพอบนเดสก์ท็อปพีซีที่เหมาะสม โดยเฉพาะอย่างยิ่งซึ่งหมายความว่าหากคุณใช้เอกภาพคุณไม่สามารถเก็บการแสดงหมายเลขปัจจุบันในหน่วยความจำได้
  • แตกต่างจากกฎทั่วไปของเราอย่าลังเลที่จะใช้ภาษา (หรือรุ่นภาษา) แม้ว่าจะใหม่กว่าความท้าทายนี้ ภาษาที่เขียนขึ้นเพื่อส่งคำตอบแบบ 0 ไบต์ต่อความท้าทายนี้เป็นเกมที่ยุติธรรม แต่ไม่น่าสนใจเป็นพิเศษ

    โปรดทราบว่าจะต้องมีล่ามเพื่อให้สามารถส่งการทดสอบได้ ได้รับอนุญาต (และสนับสนุนให้) เขียนล่ามนี้ด้วยตัวคุณเองสำหรับภาษาที่ยังไม่ได้ใช้งานมาก่อน

  • นี่ไม่ได้เกี่ยวกับการค้นหาภาษาด้วยวิธีแก้ปัญหาที่สั้นที่สุดสำหรับเรื่องนี้ (มีบางโปรแกรมที่โปรแกรมเปล่าทำเคล็ดลับ) - สิ่งนี้เกี่ยวกับการค้นหาวิธีแก้ปัญหาที่สั้นที่สุดในทุกภาษา ดังนั้นจะไม่มีการทำเครื่องหมายคำตอบว่าเป็นที่ยอมรับ

แค็ตตาล็อก

สแต็คส่วนย่อยที่ด้านล่างของโพสต์นี้สร้างแคตตาล็อกจากคำตอบ a) เป็นรายการคำตอบสั้นที่สุดต่อภาษาและ b) เป็นลีดเดอร์บอร์ดโดยรวม

เพื่อให้แน่ใจว่าคำตอบของคุณปรากฏขึ้นโปรดเริ่มคำตอบด้วยหัวข้อโดยใช้เทมเพลต Markdown ต่อไปนี้:

## Language Name, N bytes

ที่Nมีขนาดของส่งของคุณ หากคุณปรับปรุงคะแนนของคุณคุณสามารถเก็บคะแนนเก่าไว้ในพาดหัวโดยการตีพวกเขาผ่าน ตัวอย่างเช่น

## Ruby, <s>104</s> <s>101</s> 96 bytes

หากคุณต้องการรวมหลายตัวเลขไว้ในส่วนหัวของคุณ (เช่นเนื่องจากคะแนนของคุณคือผลรวมของไฟล์สองไฟล์หรือคุณต้องการแสดงรายการบทลงโทษการตั้งค่าสถานะของล่ามแยกต่างหาก) ตรวจสอบให้แน่ใจว่าคะแนนจริงเป็นตัวเลขสุดท้ายในส่วนหัว:

## Perl, 43 + 2 (-p flag) = 45 bytes

คุณยังสามารถตั้งชื่อภาษาให้เป็นลิงค์ซึ่งจะปรากฏในตัวอย่างข้อมูล:

## [><>](http://esolangs.org/wiki/Fish), 121 bytes


29
ผมไม่แน่ใจว่าวิธีการรวมต้องส่งออกแต่ละหมายเลขด้วยตัวอักษรแยกในระหว่างที่มีอาจพิมพ์ตัวเลข [ ... ] ในฐาน 256
Dennis

6
สำหรับความท้าทายในอนาคตฉันขอแนะนำ sandboxว่ารายละเอียดทั้งหมดเหล่านี้จะถูกแยกออกก่อนที่ผู้คนจะเริ่มโพสต์คำตอบ? :)
Martin Ender

3
@IlmariKaronen ฉันตีความว่าเป็นการ จำกัด หน่วยความจำไม่ใช่การ จำกัด เวลา อาจเป็นเวลาที่ จำกัด ในการเพิ่มขึ้นต่อ เพียงตั้งค่าตัวนับเป็น 2 ** 128-10 และดูว่าใช้เวลานานแค่ไหนในการทำตามขั้นตอนสิบขั้นตอน
Sparr

5
เราสามารถมีศูนย์นำหน้าในผลลัพธ์ได้หรือไม่?
Paŭlo Ebermann

4
ฮึ!!! ฉันมีคำตอบสำหรับ TI-89 (56b) แต่ฉันไม่สามารถโพสต์ b / c ฉันยังใหม่กับเว็บไซต์และไม่มีตัวแทน 10+!
gregsdennis

คำตอบ:


63

เขาวงกต 5 ไบต์

):
\!

IP IP ในรหัสนั้นวนไปเรื่อย ๆ round

คำแนะนำที่เกี่ยวข้อง:

)       Increment top of stack (stack has infinite zeroes at bottom)
:       Duplicate top of stack
!       Output top of stack
\       Output newline

77
โปรแกรมเศร้าที่ไม่หยุด ..
เครื่องมือเพิ่มประสิทธิภาพ

7
@Optimizer def เศร้า (แน่นอน):
YoYoYonnY

1
ทำไมถึงไม่ถึง 4 ไบต์
Aurel Bílý

2
@ Aurel300 ไบต์ที่ห้าคือบรรทัดใหม่ระหว่าง:และ\
Sp3000

@ Sp3000 อ่าใช่ โง่ฉัน :)
Aurel Bílý

46

> <> , 8 ไบต์

01+:nao!

ขั้นตอน:

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

(หน่วยความจำที่มีประสิทธิภาพน้อย (ที่ไม่ถูกต้องด้วยเหตุนี้) โปรแกรมllnao.)


66
+1 สำหรับโค้ดที่ต้องใช้การตอบโต้ที่ไม่จำเป็นอย่างเร่งด่วนในบรรทัดของโค้ดซึ่งโดยทั่วไปจะอ่าน“ บวกหนึ่งตอนนี้!”
Janus Bahs Jacquet

24

Haskell, 21 ไบต์

main=mapM_ print[1..]

จำนวนเต็มและรายการอนันต์ที่มีความแม่นยำตามอำเภอใจทำให้เป็นเรื่องง่าย :-)

โชคดีที่mapM_อยู่ในบทโหมโรง ถ้าData.Traversableเป็นเช่นนั้นเรายังสามารถลดขนาดมันเป็น 19 ไบต์:

main=for_[1..]print

ไม่มีสัญลักษณ์ที่ทำให้แผนที่ / mapM เป็นแบบทั่วไปหรือไม่?
JDługosz

@ JDługosz: ไม่ฉันรู้
Bergi

อา 'เพราะมันจะยังคงต้องมีsequenceผลเพื่อให้ได้ผลลัพธ์ที่เกิดขึ้นจริง
JDługosz

ไม่[1..]ได้รับอนุญาตเพียงเพราะมันพิมพ์ตัวเลขทั้งหมดด้วยเครื่องหมายจุลภาคเป็น beween? หรือ[สกรูแรกมันทั้งหมดขึ้นหรือไม่
Baconaro

@Baconaro: นั่นคือรายการมันไม่ได้พิมพ์อะไรเลย GHCi จะพิมพ์ผลลัพธ์หากคุณป้อนคำในแบบจำลอง แต่นั่นไม่ใช่โปรแกรมที่รันได้ และใช่ผู้นำ[ไม่ได้รับอนุญาตเช่นกัน
Bergi

23

Gol> <> , 3 ไบต์

P:N

ขั้นตอน:

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

21

Marbelous , 11450 4632 bytes

การพิมพ์ทศนิยมเป็นความเจ็บปวด !!

ไม่ชนะอย่างแน่นอนกับเรื่องนี้ แต่ฉันคิดว่าฉันจะให้มันยิง ฉันหวังว่ามันโอเคที่จะเอาท์พุทเป็นศูนย์ 40 (พอดี 2 ^ 128)

00@0..@1..@2..@3..@4..@5..@6..@7..@8..@9..@A..@B..@C..@D..@E..@F..@G..@H..@I..@J
\\++..00..00..00..00..00..00..00..00..00..00..00..00..00..00..00..00..00..00..00
..EhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhunEhun
....AddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddtAddt
..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7..&7\/
../\&8..........................................................................
....@0..........................................................................
....../\&8......................................................................
....//..@1......................................................................
........../\&8..................................................................
......////..@2..................................................................
............../\&8..............................................................
........//////..@3..............................................................
................../\&8..........................................................
..........////////..@4..........................................................
....................../\&8......................................................
............//////////..@5......................................................
........................../\&8..................................................
..............////////////..@6..................................................
............................../\&8..............................................
................//////////////..@7..............................................
................................../\&8..........................................
..................////////////////..@8..........................................
....................................../\&8......................................
....................//////////////////..@9......................................
........................................../\&8..................................
......................////////////////////..@A..................................
............................................../\&8..............................
........................//////////////////////..@B..............................
................................................../\&8..........................
..........................////////////////////////..@C..........................
....................................................../\&8......................
............................//////////////////////////..@D......................
........................................................../\&8..................
..............................////////////////////////////..@E..................
............................................................../\&8..............
................................//////////////////////////////..@F..............
................................................................../\&8..........
..................................////////////////////////////////..@G..........
....................................................................../\&8......
....................................//////////////////////////////////..@H......
........................................................................../\&8..
......................................////////////////////////////////////..@I..
............................................................................../\&8
........................................//////////////////////////////////////..@J
&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9&9
Sixteenbytedecimalprintermodulewitharegi

:Sixteenbytedecimalprintermodulewitharegi
}J}J}I}I}H}H}G}G}F}F}E}E}D}D}C}C}B}B}A}A}9}9}8}8}7}7}6}6}5}5}4}4}3}3}2}2}1}1}0}00A
/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A/A%A
%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..%A..
+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O..
+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O+O..

:/A
..}0..}0..
..>>}0....
..>>>>\\..
....//..//
../\>>\\..
....>>..//
....>>\\..
....>>....
\\>>//....
..>>......
..>>......
../\......
..../\<<..
......<<..
..\\<<//..
....~~....
....++....
....\\..//
\\....>9\/
..\\..?0..
......++..
....\\....
......{0..

:%A
@0..
}0..
<A-A
{0@0

:Eg
}0}0}0}0}0}0}0}0
^7^6^5^4^3^2^1^0
~~....~~~~..~~~~
^0^0^0^0^0^0^0^0
{0{0{0{0{0{0{0{0

:Ehun
}0..}0
Eg..&0
=8&0{0
&1\/00
0100&0
&1&1{1
{1{0

:Addt
}0}1
{1{1

การพิมพ์แบบไบนารีจะสั้นกว่านี้หรือไม่
SuperJedi224

3
(หรือสิ่งที่เกี่ยวกับเอกภาพ)
Doorknob

@Doorknob ที่แสดงผลลัพธ์ไม่ใช่ปัญหา มันเป็นสิ่งที่อยู่บนEhunกระดานซึ่งควรจะเพิ่มเลขตัวถัดไป แต่ทำงานไม่ถูกต้อง
TheDoctor

1
คุณรู้หรือไม่ว่าคุณสามารถละทิ้งช่วงท้ายของทุกบรรทัดและบรรทัดว่างระหว่างบอร์ดและใช้อักขระเดี่ยวสำหรับชื่อบอร์ด? คุณเพียงแค่ต้องทำซ้ำตัวอักษรตัวเดียวในปริมาณที่เหมาะสมของเวลาที่จะเรียกร้องให้มัน วิธีนี้จะทำให้คำตอบของคุณลดลงเหลือประมาณ 3000 ไบต์
overactor

ในที่สุดฉันจะผลักดันคอมมิชชันไปยัง marbelous.py ซึ่งรวมถึงinclude/ค่าเริ่มต้นทั้งหมด
Sparr

18

C (สถาปัตยกรรม 64- บิตเท่านั้น), 53 ไบต์

อาศัยพอยน์เตอร์อย่างน้อย 64 บิตและพิมพ์เป็น hex โดยใช้ตัว%pระบุ โปรแกรมจะกลับมาทันทีเมื่อกดปุ่ม 2 ^ 128

char*a,*b;main(){for(;++b||++a;)printf("%p%p ",a,b);}

1
ดังนั้นถ้าพอยน์เตอร์เหล่านั้นอยู่ที่ 64 บิตคุณจะนับได้แค่ 2 ^ 128-1 ใช่ไหม
ข้อบกพร่อง

6
ไม่ถูกต้องเนื่องจากไม่สามารถนับได้ถึง 2 ^ 128
edc65

14
ฉันชอบ CodeGolf เมื่อมันเกี่ยวกับการแสดงออกและให้รางวัลความคิดสร้างสรรค์ เห็นได้ชัดว่า feersum ไม่ใช่การแข่งขันเพื่อชัยชนะที่นี่ หากต้องการดู downvotes มากมายเกี่ยวกับเทคนิคและการปรับเปลี่ยนถ้อยคำของคำถามเพื่อให้แน่ใจว่าคำตอบของเขาเป็นการละเมิดทำให้ฉันเศร้า
flodel

3
ผมคิดว่าคำว่า "อย่างน้อยเท่าที่ 2 ^ 128" ได้ชัดเจนพอ ...
vrwim

5
@vrwim คุณไม่ได้เขียน คุณเขียน "จนถึง 2 ^ 128" SuperJedi แก้ไขมันเมื่อไม่กี่นาทีที่ผ่านมา
feersum

17

Hexagony , 12 11 10 7 ไบต์

ขอบคุณ alephalpha สำหรับการติดตั้งรหัสในด้านยาว 2

10})!';

กางออก:

 1 0
} ) !
 ' ;

อันนี้ค่อนข้างง่าย 10เขียน 10 คือ linefeed ไปที่ขอบหน่วยความจำเริ่มต้น จากนั้น})!';จะถูกดำเนินการซ้ำ ๆ ในลูป:

  • } ย้ายไปที่ขอบหน่วยความจำถัดไป
  • ) เพิ่มขึ้น
  • ! พิมพ์เป็นจำนวนเต็ม
  • ' ย้ายกลับไปที่ 10
  • ; พิมพ์เป็นตัวอักษร

ฉันเชื่อว่านี่เป็นสิ่งที่ดีที่สุด (แม้ว่าจะไม่ได้โดดเด่น) ผมได้แจ้งให้สคริปต์กำลังดุร้ายผมเขียนสำหรับคำตอบนี้การค้นหาสำหรับการแก้ปัญหา 6 ไบต์ภายใต้สมมติฐานว่ามันจะต้องมีอย่างน้อยหนึ่งแต่ละ;และ!และทั้ง(หรือ)และจะไม่ประกอบด้วย?, ,หรือ@และมันไม่ได้ ค้นหาวิธีแก้ปัญหาใด ๆ


13

Pyth, 4 ไบต์

.V1b

คำอธิบาย:

.V1    for b in range(1 to infinity):
   b      print b

f!\n( ลิงค์ TIO ) จะใช้งานได้ 3 ไบต์ไม่แน่ใจว่าใช้คุณสมบัติใด ๆ ที่เพิ่มเข้ามาหลังจากคำตอบของคุณ
Sok

@Sok Clever อย่างไรก็ตามฉันจะไม่เปลี่ยนคำตอบเพราะฉันคิดว่านั่นfเป็นคุณสมบัติของ Pyth 4 ปีที่แล้ว
Jakube

ฉันก็คิดเช่นนั้นด้วยเหตุนี้ฉันจึงทิ้งมันไว้เป็นความคิดเห็น - คุณสมบัติภาษาใหม่ที่จะเอาชนะคำตอบที่เก่ากว่ามักจะรู้สึกว่าราคาถูก IMO
Sok

13

bc, 10

for(;;)++i

แปลกที่สั้นกว่าbcdc

จากman bc:

รายละเอียด

bc เป็นภาษาที่รองรับตัวเลขความแม่นยำโดยพลการ


มันพิมพ์ออกมาที่ไหน
Bálint

@ Bálint ++iเป็นนิพจน์ แต่ไม่ใช่การกำหนดค่าและจะแสดงผลลัพธ์อย่างชัดเจน คุณลองใช้งานหรือไม่ echo 'for(;;)++i' | bcในสถานี Linux ที่ใกล้ที่สุด
Digital Trauma

ฉันไม่มีเทอร์มินัล Linux เดียวในบ้านของฉัน ผมก็แค่อยากรู้.
Bálint

6
@Bálintบ้านทุกหลังควรมีเทอร์มินัล Linux
Digital Trauma

1
@ Bálintการรันโปรแกรมนี้เป็นการใช้งานของคุณ;)
Insane

12

Java, 139 138 127 123 ไบต์

class K{public static void main(String[]a){java.math.BigInteger b=null;for(b=b.ZERO;;)System.out.println(b=b.add(b.ONE));}}

2
วงวนอนันต์ที่มีขนาดเล็กกว่าใน java นั้นfor(;;)ง่ายสำหรับ 3 ไบต์
ankh-morpork

คุณสามารถบันทึก 2 อีกด้วยBigInteger b=null;b=b.ZERO;น่าเศร้าที่=nullจำเป็นแม้จะคิดว่ามันเป็นการเข้าถึงแบบคงที่
TWiStErRob

แล้วอีก 9 เพราะคุณสามารถกำจัดการนำเข้าโดยการอ้างอิงBigIntegerโดย FQCN เพียงครั้งเดียว
TWiStErRob

@TWiStErRob อย่างใดฉันไม่ได้ตระหนักว่าจะสั้นลง
SuperJedi224

2
สำหรับ Java 8 หรือใหม่กว่าคุณสามารถแทนที่คลาสด้วยinterfaceและลบออกpublicจากฟังก์ชัน อย่าต้องการคัดลอกรหัสของคุณและโพสต์เป็นคำตอบใหม่
Luca H

10

Mathematica ขนาด 22 ไบต์

i=0;While[Echo[++i]>0]

Echo เป็นฟังก์ชั่นใหม่ใน Mathematica 10.3


Echoให้สี่ตัวอักษรแยก: ">> "ขึ้นบรรทัดใหม่บวก ไม่แน่ใจว่าถูกต้อง - อาจใช้Printแทนหรือไม่ i=0;While[Echo@++i>0]นอกจากนี้บันทึกไบต์ด้วย
โรมัน

7

Ruby, 15 12 ไบต์

loop{p$.+=1}
  • pเมื่อได้รับจำนวนเต็มให้พิมพ์จำนวนเต็มตาม - คือ (ความอนุเคราะห์ของ@philomory )
  • $.เป็นตัวแปรมหัศจรรย์ที่ถือจำนวนบรรทัดที่อ่านจาก stdin เห็นได้ชัดว่าถูกกำหนดค่าเริ่มต้นเป็น 0 และกำหนดได้ด้วย :)

@philomory โดยทั่วไปผู้ใช้จะต้องแสดงความคิดเห็นเพื่อแนะนำวิธีแก้ปัญหาการประหยัด byte นอกจากนี้ฉันต้องการเห็นคำอธิบายสำหรับสิ่งนี้ c:
Addison Crump

7

Python 3, 33 25 ไบต์

เท่าที่ฉันเข้าใจจำนวนเต็ม Pythons เป็นความแม่นยำโดยพลการและprint()สร้างบรรทัดใหม่โดยอัตโนมัติ

ขอบคุณสำหรับ @Jakub และ @ Sp3000 และ @wnnmaw! ฉันไม่รู้จักงูหลามมากนักเพียง แต่ฉันคิดว่าฉันรู้ว่ามันรองรับจำนวนเต็มขนาดโดยพลการ =)

k=1
while 1:print(k);k+=1

1เป็นค่าความจริงใน Python (และภาษาอื่น ๆ ส่วนใหญ่) ดังนั้นwhile 1:ก็พอ
Jakube

นอกจากนี้คุณสามารถใส่ทั้งหมดwhileในหนึ่งบรรทัด
Sp3000

คุณสามารถบันทึกไบต์โดยใช้มากกว่าrepr(k) print(k)นอกจากนี้ฉันนับขนาดไบต์ของคุณเป็น 25 (โดยไม่มีการเปลี่ยนแปลงที่แนะนำของฉัน)
wnnmaw

1
คุณไม่สามารถใช้แทนrepr ไม่ส่งออกอะไร @wnnmawprintrepr
Zach Gates

ถ้าreprเช่นนั้นจะทำอะไร?
ข้อบกพร่อง

6

กำลังประมวลผล , 95 85 71 ไบต์

java.math.BigInteger i;{i=i.ZERO;}void draw(){println(i=i.add(i.ONE));}

ฉันพยายามบางสิ่งบางอย่างด้วยการวนรอบ แต่มันทำให้การประมวลผลทั้งหมดล้มเหลวดังนั้นฉันจะติดกับเรื่องนี้ในตอนนี้

(ขอบคุณ @ SuperJedi224 และ @TWiStErRob สำหรับคำแนะนำ)


ช่องว่างคืออะไร ฉันค่อนข้างมั่นใจว่าimport java.math.*;BigInteger i=BigInteger.ZERO;void draw(){println(i=i.add(BigInteger.ONE));}จะได้ผล
SuperJedi224

ใช่แค่แก้ไขมัน
geokavel

การประมวลผลอนุญาตให้BigInteger.ONEเปลี่ยนi.ONEหรือไม่
SuperJedi224

@ SuperJedi224 ใช่มันเป็นเช่นนั้น ขอบคุณ!
geokavel

เอาล่ะมีการโหวต
SuperJedi224

6

ซามัว 2 ไบต์

N)

คำอธิบาย:

N     push the infinite list [0 1 2 ...] onto the stack
 )    increase by 1

เมื่อเอาต์พุตของโปรแกรมเป็นรายการวงเล็บเหลี่ยมด้านนอกจะถูกตัดออก


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

1
@cat Samau ถูกเขียนใน Haskell และก็ขี้เกียจ มันจะไม่สร้างรายการทั้งหมดก่อนที่จะพิมพ์
alephalpha

แค่หัวขึ้น ในหน้า GitHub สำหรับ Samau ในคำอธิบายของ@"push" นั้นเป็นคำที่สะกดผิด
Carcigenicate

@Carcigenicate ขอบคุณ
alephalpha

6

JavaScript (ES6), 99 94 67 ไบต์

for(n=[i=0];;)(n[i]=-~n[i++]%10)&&alert([...n].reverse(i=0).join``)

alertเป็นSTDOUTเทียบเท่าที่ยอมรับกันโดยทั่วไปสำหรับ JavaScript แต่การใช้หมายความว่าหมายเลขที่ต่อเนื่องกันจะถูกคั่นโดยอัตโนมัติ ฉันคิดว่าการแสดงผลอักขระหลังจากตัวเลขไม่จำเป็นเพราะสิ่งนี้


12
นี่คือเหตุผลที่ฉันมีตัวบล็อกป๊อปอัพ
องค์การคอมมิวนิสต์สากล

1
เพียงแค่พูดว่า: สำหรับ (i = 0 ;;) การแจ้งเตือน (i ++) ฉันไม่คิดว่าคุณต้องการการควบคุมทั้งหมด
towc

3
@towc มันไม่ทำงาน ตัวเลขทั้งหมดอยู่ลอย 64 บิตใน JavaScript ซึ่งมีมูลค่าสูงสุดจำนวนเต็มปลอดภัยแต่คำถามมันต้องขึ้นไป2^53 2^128
user81655

1
โอ้จุดยุติธรรม ...
towc

5

Matlab, 132 ไบต์

a=0;while 1;b=a==9;n=find(cumsum(b)-(1:numel(b)),1);a(n)=a(n)+1;a(1:n-1)=0;if ~numel(n);a=[0*a,1];end;disp([a(end:-1:1)+'0','']);end

ตกลงฉันคิดว่านี่เป็นคำตอบแรกที่จริงจังที่ทำให้งานนี้สำเร็จโดยไม่ต้องมีจำนวนเต็มขนาดเล็กน้อย โปรแกรมนี้ใช้จำนวนเต็มขนาดโดยพลการเป็นอาร์เรย์ของจำนวนเต็ม จำนวนเต็มแต่ละค่าจะอยู่ระหว่าง 0 ถึง 9 ดังนั้นองค์ประกอบแต่ละอาร์เรย์จะแทนหนึ่งหลักทศนิยม ขนาดอาร์เรย์ wil 999จะเพิ่มขึ้นโดยหนึ่งเร็วที่สุดเท่าที่เราอยู่ที่เช่น ขนาดหน่วยความจำไม่มีปัญหาที่นี่เนื่องจาก2^128ต้องการอาเรย์ที่มีความยาว 39 เท่านั้น

a=0;
while 1
    b=a==9;
    %first number that is not maxed out
    n=find(cumsum(b)-(1:numel(b)),1);
    %increase that number, and sett all maxed out numbers to zero
    a(n)=a(n)+1; 
    a(1:n-1)=0;
    if ~numel(n) %if we maxed out all entries, add another digit
        a=[0*a,1];
    end    
    disp([a(end:-1:1)+'0',''])%print all digits
end

5

C ++, 146 141 138 ไบต์

การใช้ไลบรารี bigint มาตรฐานอาจเป็นวิธีที่น่าเบื่อที่สุดในการตอบคำถามนี้ แต่มีบางคนต้องทำ

#include<stdio.h>
#include<boost/multiprecision/cpp_int.hpp>
int main(){for(boost::multiprecision::uint512_t i=1;;){printf("%u\n",i++);}}

Ungolfed:

#include<cstdio>
#include<boost/multiprecision/cpp_int.hpp>

int main()
{
    for(boost::multiprecision::uint512_t i=1;;)
    {
        std::printf("%u\n", i++);
    }
}

เหตุผลที่เวอร์ชั่น golfed ใช้งานstdio.hและไม่ใช่cstdioเพื่อหลีกเลี่ยงการใช้std::เนมสเปซ

นี่เป็นครั้งแรกที่ฉันเล่นกอล์ฟใน C ++ แจ้งให้เราทราบหากมีลูกเล่นใด ๆ


บางทีคุณสามารถใช้'\n'แทนstd::endlจะช่วยให้คุณ 8 ไบต์ นอกจากนี้ยังอาจมีวิธีการใช้ CPP #define เพื่อบีบอัดการทำซ้ำบางอย่าง
Kenney

@Kenney ขอบคุณสำหรับสิ่งนั้น! (มันประหยัดได้เพียง 5 ไบต์ไม่ใช่ 8) ฉันคิดว่าฉันอาจคิดวิธีปรับแต่งส่วนนั้นให้สั้นลง
felixphew

ฉันไม่ทราบว่าจะเพิ่ม (และฉันจะไม่บอกว่ามันเป็นมาตรฐานอย่างใดอย่างหนึ่ง) แต่ไม่ได้iสร้างค่าเริ่มต้นด้วยค่า 0? จากนั้นคุณสามารถถอดคำจำกัดความและเปลี่ยน postincrement เป็น preincremet ซึ่งจะประหยัด 2b
Zereges

วิธีการเกี่ยวกับการเลิก#import?
connectyourcharger

5

C # .NET 4.0, 111 103 102 97 ไบต์

class C{static void Main(){System.Numerics.BigInteger b=1;for(;;)System.Console.WriteLine(b++);}}

ฉันไม่พบคำตอบ C # ที่นี่ดังนั้นฉันต้องเขียนมัน

.NET 4.0 เป็นสิ่งจำเป็นเพราะมันเป็นรุ่นแรกที่มีBigInteger คุณต้องอ้างอิงSystem.Numerics.dllว่า

ด้วยการเยื้อง:

class C
{
    static void Main()
    {   
        System.Numerics.BigInteger b = 1;
        for (;;)
            System.Console.WriteLine(b++);
    }
}

ขอบคุณ sweerpotato, Kvam, Berend สำหรับการบันทึกบางส่วน


คุณสามารถบันทึกได้ 8 ไบต์ด้วยclass C{static void Main(){var b=System.Numerics.BigInteger.One;for(;;)System.Console.WriteLine(b++);}}: ~)!
sweerpotato

1
ย้ายการประกาศ b และConsole.WriteLineไปยังโครงสร้างลูป:class C{static void Main(){for(var b=System.Numerics.BigInteger.One;;Console.WriteLine(b++));}}
Kvam

Systemคุณยังคงต้อง นั่นช่วยประหยัดหนึ่งไบต์!
sweerpotato

ถูกของคุณ.
Kvam

หากคุณเพิ่มusing System;(13 ไบต์) คุณสามารถทำได้ด้วยSystem.(7 ไบต์) สองครั้งประหยัดได้ 1 ไบต์
Kenney

5

Clojure, 17 ไบต์

(map prn (range))

ลำดับ Lazy และเลขจำนวนเต็มความแม่นยำทำให้เป็นเรื่องง่าย (สำหรับ Haskell และ CL) prnช่วยฉันสักสองสามไบต์เนื่องจากฉันไม่จำเป็นต้องพิมพ์สตริงรูปแบบ doseqอาจจะเป็นสำนวนมากขึ้นเพราะที่นี่เรากำลังเผชิญกับผลข้างเคียงเท่านั้น mapไม่สมเหตุสมผลนักเนื่องจากมันจะสร้างลำดับของnil(ซึ่งเป็นค่าตอบแทนของการprnโทรแต่ละครั้ง

สมมติว่าฉันนับตลอดไปลำดับตัวชี้โมฆะซึ่งเป็นผลมาจากการดำเนินการนี้จะไม่ได้รับคืน


4

MarioLANG 11 ไบต์

+<
:"
>!
=#

แรงบันดาลใจจากคำตอบของ Martin Büttnerในอีกคำถามหนึ่ง


คุณแน่ใจหรือว่าทำงานได้โดยไม่มีปัญหากับ 2 ^ 128
ข้อบกพร่อง


@flawr MarioLANG มีล่าม Ruby และประเภทจำนวนเต็มของ Ruby มีความแม่นยำตามอำเภอใจ
Martin Ender

@flawr มันขึ้นอยู่กับล่าม ล่ามที่ฉันใช้นั้นเขียนขึ้นในรูบีและสนับสนุนความแม่นยำโดยพลการ
alephalpha

4

CJam, 7 ไบต์

0{)_p}h

คำอธิบาย:

0         e# Push a zero to the stack
 {        e# Start a block
  )         e# Increment top of stack
   _        e# Duplicate top of stack
    p       e# Print top of stack
     }    e# End block
      h   e# Do-while loop that leaves the condition on the stack

หมายเหตุ: ต้องใช้ล่าม Java


4

C, 89 ไบต์

วิธีการใหม่ (ใช้การเพิ่มขึ้นเล็กน้อยใน C):

b[999],c,i;main(){for(;;)for(i=c=0,puts(b);i++<998;)putchar(48+(c?b[i]:(b[i]=c=!b[i])));}

หักกอล์ฟ

int b[999], c, i;
main() {
  for(;;)
    for(i=c=0, puts(b); i++ < 998;)
      putchar(48 + (c ? b[i] : (b[i] = c = !b[i])));
}

ยุติ

รุ่นนี้มีข้อบกพร่องเล็กน้อยซึ่งยังไม่ยุติ (ซึ่งไม่เป็นข้อกำหนดในขณะนี้) ในการทำเช่นนี้คุณจะต้องเพิ่ม 3 ตัวอักษร:

b[129],c=1,i;main(){for(;c;)for(i=c=0,puts(b);i++<128;)putchar(48+(c?b[i]:(b[i]=c=!b[i])));}

4
ในความเป็นจริงมันไม่ควรยุติ นั่นคือความหมายของforever
edc65


4

Minkolang , 4 ไบต์

1+dN

ลองที่นี่ (เอาล่ะจริง ๆ ระวังเวลาทำงาน 3 วินาทีก็มากพอที่จะเพิ่มได้ ~ 40,000)

1+เพิ่ม 1 ไปที่ด้านบนสุดของสแต็กdทำซ้ำและNส่งเอาต์พุตด้านบนของสแต็กเป็นจำนวนเต็มที่มีช่องว่างต่อท้าย สิ่งนี้เกิดขึ้นเนื่องจาก Minkolang เป็นแบบ Toroidal ดังนั้นเมื่อตัวนับโปรแกรมปิดขอบขวามันจะปรากฏขึ้นทางด้านซ้าย


4

ชุดประกอบ Intel 8086+, 19 ไบต์

68 00 b8 1f b9 08 00 31 ff f9 83 15 00 47 47 e2 f9 eb f1

นี่คือรายละเอียด:

68 00 b8                push   0xb800             # CGA video memory
1f                      pop    ds                 # data segment
b9 08 00           L1:  mov    cx, 8              # loop count
31 ff                   xor    di, di             # ds:di = address of number
f9                      stc                       # set carry
83 15 00           L2:  adc    word ptr [di], 0   # add with carry
47                      inc    di
47                      inc    di
e2 f9                   loop   L2
eb f1                   jmp    L1

มันส่งออกหมายเลข 128 บิตที่ตำแหน่งหน้าจอด้านซ้าย 8 ตำแหน่ง ตำแหน่งหน้าจอแต่ละตำแหน่งมีอักขระ ASCII 8 บิตและสี 4 บิตสองสี

หมายเหตุ: มันล้อมรอบที่ 2 128 ; เพียงแค่เปลี่ยน8ในmov cx, 8การ9แสดงหมายเลข 144 บิตหรือแม้กระทั่ง80*25การแสดงตัวเลขได้ถึง 2 32000

วิ่ง

1.44Mb bzip2 ที่ถูกบีบอัด, ภาพฟลอปปี้ base64 ที่เข้ารหัสซึ่งสามารถบูตได้

สร้างภาพฟลอปปี้โดยการคัดลอกวางต่อไปนี้

QlpoOTFBWSZTWX9j1uwALTNvecBAAgCgAACAAgAAQAgAQAAAEABgEEggKKAAVDKGgAaZBFSMJgQa
fPsBBBFMciogikZcWgKIIprHJDS9ZFh2kUZ3QgggEEh/i7kinChIP7HrdgA=

เข้าสู่ commandline นี้:

base64 -d | bunzip2 > floppy.img

และทำงานด้วยเช่น qemu -fda floppy.img -boot a

1.8Mb ที่บูตได้ ISO

นี่คืออิมเมจ ISO แบบบีบอัด b64 แบบฐาน 64 สร้าง iso โดยการวาง

QlpoOTFBWSZTWZxLYpUAAMN/2//fp/3WY/+oP//f4LvnjARo5AAQAGkAEBBKoijAApcDbNgWGgqa
mmyQPU0HqGCZDQB6mQ0wTQ0ZADQaAMmTaQBqekyEEwQaFA0AA0AxBoAAA9Q0GgNAGg40NDQ0A0Bi
BoDIAANNAA0AyAAABhFJNIJiPSmnpMQDJpp6nqeo0ZDQaAANB6IA0NAGj1EfIBbtMewRV0acjr8u
b8yz7cCM6gUUEbDKcCdYh4IIu9C6EIBehb8FVUgEtMIAuvACCiO7l2C0KFaFVABcpglEDCLmQqCA
LTCAQ5EgnwJLyfntUzNzcooggr6EnTje1SsFYLFNW/k+2BFABdH4c4vMy1et4ZjYii1FbDgpCcGl
mhZtl6zX+ky2GDOu3anJB0YtOv04YISUQ0JshGzAZ/3kORdb6BkTDZiYdBAoztZA1N3W0LJhITAI
2kSalUBQh60i3flrmBh7xv4TCMEHTIOM8lIurifMNJ2aXr0QUuLDvv6b9HkTQbKYVSohRPsTOGHi
isDdB+cODOsdh31Vy4bZL6mnTAVvQyMO08VoYYcRDC4nUaGGT7rpZy+J6ZxRb1b4lfdhtDmNwuzl
E3bZGU3JTdLNz1uEiRjud6oZ5kAwqwhYDok9xaVgf0m5jV4mmGcEagviVntDZOKGJeLjyY4ounyN
CWXXWpBPcwSfNOKm8yid4CuocONE1mNqbd1NtFQ9z9YLg2cSsGQV5G3EhhMXKLVC2c9qlqwLRlw4
8pp2QkMAMIhSZaSMS4hGb8Bgyrf4LMM5Su9ZnKoqELyQTaMAlqyQ3lzY7i6kjaGsHyAndc4iKVym
SEMxZGG8xOOOBmtNNiLOFECKHzEU2hJF7GERK8QuCekBUBdCCVx4SDO0x/vxSNk8gKrZg/o7UQ33
Fg0ad37mh/buZAbhiCIAeeDwUYjrZGV0GECBAr4QVYaP0PxP1TQZJjwT/EynlkfyKI6MWK/Gxf3H
V2MdlUQAWgx9z/i7kinChITiWxSo

เข้าไป

base64 -d bunzip2 > cdrom.iso

และกำหนดค่าเครื่องเสมือนให้บู๊ตเครื่อง

DOS .COM

นี่เป็นโปรแกรมเรียกทำงานDOS .COM แบบเข้ารหัส base64 :

aAC4H7kIADH/+YMVAEdH4vnr8Q==

สร้างไฟล์. COM โดยใช้

/bin/echo -n aAC4H7kIADH/+YMVAEdH4vnr8Q== | base64 -d > COUNTUP.COM

และรันใน (ฟรี) DOS


4

Perl , 34 32 30 28 26 23 ไบต์

-Mbigint -E '{say$_+=1;redo}'

ทดสอบด้วย

perl -Mbigint -E '{say$_+=1;redo}'

คุณสามารถแทนที่for(,,){...}ด้วย{...;redo}สำหรับสอง
โม่

ใช่ฉันเห็น (perl 5.18+) แต่ฉันคิดว่ามันอาจเป็นการโกง คำตอบก็จะเหมือนกัน ฉันใหม่ที่นี่ดังนั้น ;-)
Kenney

1
อ้างอิงเกลาจะอัตโนมัติ vivified เป็นSV UNDEFซึ่งเมื่อเพิ่มขึ้นจะไม่เรียกBigIntเกิน - BigIntเพราะมันไม่ได้เป็น อย่างไรก็ตามตัวอักษรจำนวนเต็มถูกสร้างเป็นBigInts ไม่แปลกจริงๆ;)
Primo

1
คุณสามารถใช้$-เพื่อให้มันเป็นจำนวนเต็มและกลับไปใช้++$-?
Dom Hastings

1
@ DomHastings ฉันทดสอบด้วยperl -Mbigint -E '{say++$-;$-+=$-;redo}' | moreและมันล้อมรอบเป็น 1 มันยังคง int แต่ bigint ไม่ได้เข้ามาโชคไม่ดี
Kenney

4

Marbelous, 358 ไบต์

..@F..@E..@D..@C..@B..@A..@9..@8..@7..@6..@5..@4..@3..@2..@1..@001@Z01
..AddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddoAddo/\&I
00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I00&I....@Z
@FHd@EHd@DHd@CHd@BHd@AHd@9Hd@8Hd@7Hd@6Hd@5Hd@4Hd@3Hd@2Hd@1Hd@0Hd
0A@N
..&I
@N/\..
:Hd
}0
Hp
}0
..
{<
#include hex_out.mbl
#include arithmetic.mbl

ผู้ต่อครึ่ง 16 คนถูกล่ามโซ่ไว้ด้วยกันคนที่ถูกต้องที่สุดดำเนินการ N ++ ในแต่ละรอบและแต่ละคนให้อาหารมันล้น (00 หรือ 01) ต่อไปในห่วงโซ่ต่อไป เอาต์พุตอยู่ในรูปแบบเลขฐานสิบหก

python interpreter มีข้อบกพร่องที่เอาต์พุตจากฟังก์ชันที่บันทึกความจำหายไปดังนั้นคุณต้องรันด้วย "-m 0" เพื่อให้มันทำงานได้ หากไม่มีพารามิเตอร์นั้นคุณจะเห็นว่ามันจะทำงานเร็วแค่ไหนโดยไม่มีข้อบกพร่อง แต่เอาต์พุตจะไม่ทำงาน

หมายเหตุถึงตนเอง: แก้ไขข้อผิดพลาดใน marbelous.pyข้อผิดพลาดนี้ได้รับการแก้ไขใน marbelous.py รุ่นล่าสุด


4

R, 52 ไบต์

a=gmp::as.bigz(1);repeat{cat(paste(a,""));a=a+1}

(หมายเหตุ: gmpเป็นห้องสมุดภายนอกดังนั้นคุณอาจต้องดาวน์โหลดเพื่อให้วิธีนี้ใช้งานได้)


1
+1 ... ขออภัยเกี่ยวกับความพิเศษทั้งหมด a=gmp::as.bigz(0);repeat{cat(paste(a<-a+1,''))}เพื่อให้ได้คู่กลับมาคุณอาจจะลอง คุณอาจต้องการทำบันทึกย่อที่gmpเป็นไลบรารีภายนอกที่อาจจำเป็นต้องดาวน์โหลด
MickyT


4

BotEngine, 128 120 112 8x13 = 104

v2 2 01
>e>S SS
   e1e1
   e2 e0 12
   > > S SS P
  ^   <e0e1 R
     ^ < <lC^
^         <

เอาต์พุตอยู่ในรูปแบบไบนารี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.