นับคน!


30

บทนำ

มันอาจฟังดูแปลก แต่เราไม่ได้มีความท้าทายหนึ่งอย่างในการนับจาก1ถึงnรวม

นี่ไม่ใช่สิ่งเดียวกัน สิ่งนั้นเป็นความท้าทายที่ไม่ได้อธิบายอย่างดี
นี่ไม่ใช่สิ่งเดียวกัน อันนั้นเกี่ยวกับการนับอย่างไม่มีกำหนด

ท้าทาย

เขียนโปรแกรมหรือฟังก์ชั่นที่พิมพ์ทุกจำนวนเต็มจาก1การnรวม

กฎระเบียบ

  • คุณสามารถไปได้nทุกทาง
  • คุณสามารถสันนิษฐานได้ว่าnจะเป็นจำนวนเต็มบวกเสมอ
  • คุณสามารถnเข้าฐานใดก็ได้ แต่คุณควรส่งออกเป็นทศนิยมเสมอ
  • การส่งออกจะต้องคั่นด้วยตัวอักษรใด ๆ (หรือรูปแบบ) 0123456789ไม่ได้อยู่ใน อนุญาตให้ใช้อักขระนำหน้าหรือต่อท้ายทศนิยม (ตัวอย่างเช่นเมื่อใช้อาร์เรย์เช่น[1, 2, 3, 4, 5, 6])
  • ช่องโหว่มาตรฐานถูกปฏิเสธ
  • เราต้องการค้นหาวิธีที่สั้นที่สุดในแต่ละภาษาไม่ใช่ภาษาที่สั้นที่สุดดังนั้นฉันจะไม่ยอมรับคำตอบใด ๆ
  • คุณต้องอัปเดตคำตอบของคุณหลังจากการแก้ไขนี้คำตอบที่โพสต์ก่อนการแก้ไขครั้งสุดท้ายจะต้องเป็นไปตามกฎการเปลี่ยนแปลงเกี่ยวกับช่องโหว่มาตรฐาน (ฉันไม่ต้องการปฏิเสธพวกเขา แต่ฉันไม่ต้องการทำให้ชุมชนคำราม) ฉันปฏิเสธพวกเขา)
  • คุณสามารถใช้รุ่นภาษาโพสต์การนัดหมายใด ๆ (หรือภาษา) คุณไม่สามารถใช้ภาษาหรือรุ่นภาษาใด ๆ ที่สร้างขึ้นสำหรับความท้าทายนี้

โบนัส

20%

  • โปรแกรมของคุณจะต้องสามารถนับได้อย่างน้อยสูงสุด18446744073709551615( 2^64-1) ตัวอย่างเช่นถ้าประเภทข้อมูลใหม่เป็นวิธีเดียวที่จะสนับสนุนจำนวนเต็มขนาดใหญ่คุณต้องสร้างมัน หากภาษาของคุณไม่มีวิธีใดที่จะรองรับจำนวนเต็มขนาดใหญ่มากถึง 2 ^ 64-1 จะต้องสนับสนุนขีด จำกัด สูงสุดของภาษานั้น ๆ แทน

แก้ไข : ฉันเปลี่ยนขีด จำกัด จาก2^64เป็น2^64-1เป็นอนุญาตคำตอบเพิ่มเติม

แก้ไข : ฉันสร้างโบนัส 2 ^ 64-1 เนื่องจากไม่มีความสนใจในการท้าทายนี้มากนัก หากคำตอบของคุณรองรับ 2 ^ 64-1 ตอนนี้คุณสามารถแก้ไขได้เพื่อรวมโบนัส นอกจากนี้คุณสามารถโพสต์คำตอบที่ไม่สนับสนุนถ้ามันสั้นลง



"คุณสามารถไปได้nทุกทาง" หมายความว่าเราสามารถสันนิษฐานnได้ว่าบันทึกไว้ในตัวแปรหรือไม่?
ข้อบกพร่อง

@ flawr คุณจะได้รับ nวิธีใด ๆ คุณสามารถบันทึกไว้ในตัวแปร แต่ต้องไม่ฮาร์ดโค้ด
Erik the Outgolfer

มันอาจมีประโยชน์ในการเชื่อมโยงไปยังวิธีการ I / O ที่ยอมรับ
Ephphatha

@phphatha ใช่มันอาจจะเป็นความท้าทายนี้มาจากสมัยก่อนที่ฉันเป็นคนใหม่ที่สุด
Erik the Outgolfer

คำตอบ:


60

MarioLANG , 29 ไบต์

;
)    <
+===="
>:(-[!
=====#

ลองออนไลน์!

ฉันรู้ว่ารหัสของฉันคือเศร้าสุด ๆ หรือโกรธ:



> :(

Happy MarioLANG 46 ไบต์

;
)       <
+======="
>  >((-[!
=:)^====#
 ===

ลองออนไลน์!

วิธีที่มีความสุขกว่า:




 :)

MarioLANG ที่ไม่เกี่ยวกับอารมณ์ 41 ไบต์

;
)     <
+====="
> >(-[!
= "===#
 :!
 =#

ลองออนไลน์!


1
ยังมีอารมณ์ความรู้สึกในตัวอย่างล่าสุด, :!)
คุกกี้

1
@cookie ในกรณีนี้คุณสามารถเห็นหลายสิ่งหลายอย่างในรูปแบบอิโมติคอนที่มีจินตนาการเช่น=#หรือหรือ>(หรือ(-[อื่น ๆ นอกจากนี้ยังไม่รู้ว่าทำไม แต่มีหน้ารายการ List of Wikipediaซึ่งไม่มี:!หรือ สิ่งที่ฉันพูดถึง
Kevin Cruijssen

19 ไบต์ได้รับแรงบันดาลใจจากคำถามอื่น
Dorian

28

Pyth, 1 ไบต์

S

เนื้อหาต้องมีอย่างน้อย 30 ตัวอักษร คุณป้อน 14


2
คุณพูดอย่างนั้นเหรอ ฉันกำลังดิ้นรนกับชื่อ!
Erik the Outgolfer

43
นั่นเป็นเพราะคุณไม่สามารถเพิ่มคำอธิบายได้ เราควรเข้าใจโค้ดที่ซับซ้อนเช่นนี้โดยไม่มีคำอธิบายได้อย่างไร
Luis Mendo เมื่อ

10
Nah รหัสนี้เป็นวิธีที่เกินความเข้าใจของฉัน ยาวเกินไปฉันไม่สามารถเข้าใจโครงสร้างเชิงตรรกะที่ซับซ้อนเช่นนี้ :-P
Luis Mendo

7
@ LuisMendo ฉันรู้ว่า ... orlp ต้องเป็นอัจฉริยะที่จะเข้าใจโค้ดที่มีความยาวเช่นนั้นด้วยตรรกะขั้นสูง : P
HyperNeutrino

1
คุณยังคงเป็นผู้ชนะในปัจจุบัน!
Erik the Outgolfer

16

Cjam, 5 ไบต์

{,:)}

ลองออนไลน์!

นี่คือบล็อกที่ไม่มีชื่อซึ่งคาดว่าจะnอยู่ในสแต็กและปล่อยรายการที่มีช่วง[1...n]อยู่
ทำงานโดยเพียงแค่สร้างช่วงด้วย,แล้วเพิ่มองค์ประกอบทุกช่วงด้วย:)เพื่อทำให้ช่วงเป็นหนึ่งเดียว


9
+1 สำหรับยิ้มที่ปรากฎอย่างลึกลับในรหัส::)
user48538

1
@ zyabin101 หน้ายิ้มเป็นปรากฏการณ์ CJam ที่พบบ่อยมาก!
ซิมมอนส์

4
@ASimmons สรุป Cjam มีความสุข?
Erik the Outgolfer

14

Mathematica, 5 ไบต์

Range

เรียบง่ายพอสมควร


33
ไม่ง่ายเมื่อคุณต้องจ่ายเพื่อจ่ายภาษานี้ :(
Erik the Outgolfer

1
@ ΈρικΚωνσταντόπουλοςฉันจะยืนยันว่าตอนนี้คนที่รวยมีมันได้ง่ายขึ้น แต่คุณมีการจัดการที่จะชนะคำตอบนี้โดย 4 ไบต์;)
Sebb

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀฉันรู้ว่ามันเป็นเวลานานหลังจากความคิดเห็นของคุณ แต่คุณไม่ต้องจ่ายเงินเพื่อจ่ายภาษาคุณจ่ายสำหรับภาษา
NoOne อยู่ที่นี่

@NoOneIsHere ที่จะจ่ายหมายถึงการเรียกร้องความเป็นเจ้าของสิ่งที่จ่าย ฉันคิดว่าคุณหมายถึงมีการสมัครสมาชิกแทนที่จะจ่ายครั้งเดียว
Erik the Outgolfer

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀมีการจ่ายครั้งเดียว ~ 150 เหรียญ แต่เพื่อเถียงกันต่อไปคุยกัน
NoOne อยู่

14

Hexagony, 19

$@?!{M8.</(=/>').$;

หรือในรูปแบบหกเหลี่ยมแบบขยาย:

  $ @ ?
 ! { M 8
. < / ( =
 / > ' ) 
  . $ ;

ขอบคุณมาร์ตินอย่างมากสำหรับการเข้าร่วมโปรแกรมนี้ฉันเพิ่งเล่นกอล์ฟเพื่อให้พอดีกับความยาวหกเหลี่ยม 3 ด้าน

ลองออนไลน์!

ฉันไม่มีโปรแกรมที่เกี่ยวข้องกับ Hexagony ที่ยอดเยี่ยมของ Timwi ดังนั้นคำอธิบายนี้จะไม่มีสีสันมาก แต่คุณจะได้อ่านข้อความจำนวนมาก มันไม่ดีเหรอ?

ไม่ว่าในกรณีใด ๆ IP จะเริ่มที่มุมซ้ายบน$ย้ายไปทางทิศตะวันออกหากคุณคิดว่าโปรแกรมนี้ถูกวางโดยหันทิศเหนือขึ้นไปบนแผนที่ $ทำให้เราข้ามคำสั่งถัดไปซึ่งจะเป็น@ซึ่งจะสิ้นสุดของโปรแกรม แต่เราดำเนินการ?ซึ่งกำหนดขอบหน่วยความจำปัจจุบันเป็นหมายเลขอินพุต ตอนนี้เรามาถึงจุดสิ้นสุดของแถวซึ่งพาเราไปยังแถวกลางของรูปหกเหลี่ยมยังคงเคลื่อนที่ไปทางตะวันออก

ส่วนที่เหลือของโปรแกรมส่วนใหญ่เป็นลูป เราเริ่มต้นด้วย.สิ่งที่ไม่ต้องทำ ต่อไปเราจะเจอทางแยกใน ... เอ่อ ... รูปหกเหลี่ยม ... <คำสั่งทำให้ IP หมุน 60 องศาไปทางขวาหากขอบหน่วยความจำปัจจุบันเป็นค่าบวกมิฉะนั้นเราจะหมุนไปทางซ้าย 60 องศา เนื่องจากเรากำลังเคลื่อนไปทางทิศตะวันออกเราก็จบลงด้วยการมุ่งหน้าไปทางใต้หรือตะวันออกเฉียงเหนือ เนื่องจากอินพุตมีค่ามากกว่าศูนย์ (และเป็นบวกดังนั้น) เราจึงเริ่มต้นด้วยการไปทางตะวันออกเฉียงใต้

ต่อไปเรากดปุ่ม>ซึ่งนำเราไปทางตะวันออก ตัวดำเนินการเหล่านี้จะแยกเฉพาะเมื่อคุณกดส่วนของส้อม จากนั้นเราก็ไป'ที่สิ่งที่เปลี่ยนแปลงขอบหน่วยความจำที่เรากำลังดู จากนั้นเราก็กดปุ่ม)ซึ่งจะเพิ่มมูลค่าของขอบหน่วยความจำปัจจุบัน เนื่องจากขอบหน่วยความจำทั้งหมดเริ่มต้นที่ 0 ครั้งแรกที่เราทำเช่นนี้เราจะได้รับค่า 1 ต่อไปเราจะกระโดดขึ้นไปที่บรรทัดที่สองถึงด้านบนและดำเนินการ!ที่พิมพ์หมายเลขของเรา จากนั้นเราย้ายไปยังอีกขอบด้วย{และเก็บค่า ASCII ของ M คูณด้วย 10 บวก 8 (778) /จากนั้นเราจะกระโดดกลับไปที่สองไปยังบรรทัดสุดท้ายของหกเหลี่ยมและตี สิ่งนี้ทำให้เราเคลื่อนไหวไปทางตะวันตกเฉียงเหนือ เราผ่าน.แถวกลางแล้วออกไป;ที่ด้านล่างขวา สิ่งนี้จะพิมพ์ขอบหน่วยความจำในปัจจุบัน mod 256 เป็น ASCII สิ่งนี้เกิดขึ้นกับการขึ้นบรรทัดใหม่ เราตี'ที่พาเรากลับไปที่ขอบแรกที่มีค่าที่เราอ่านมาเราตี/ที่ทำให้เราย้ายไปทางตะวันออกอีกครั้ง จากนั้นเราก็กดปุ่ม(ซึ่งจะลดค่า =ทำให้เราต้องเผชิญกับทิศทางที่ถูกต้องอีกครั้งสำหรับการกระโดดขอบหน่วยความจำในอนาคต

ทีนี้เนื่องจากค่าเป็นบวก (นอกเสียจากว่ามันจะเป็นศูนย์) เรากลับไปที่ด้านล่างของรูปหกเหลี่ยม ที่นี่เราตี.แล้วเรากระโดดข้าม;ไม่มีอะไรเกิดขึ้นและเรากลับไปที่จุดเริ่มต้นของวง เมื่อค่าเป็นศูนย์เรากลับไปที่จุดเริ่มต้นของโปรแกรมที่สิ่งเดียวกันเกิดขึ้นอีกครั้ง แต่?ไม่สามารถหาหมายเลขอื่นและเราใช้เส้นทางการแยกสาขาอื่น ๆ เส้นทางนั้นค่อนข้างง่าย: เรากดปุ่ม{ซึ่งเปลี่ยนขอบหน่วยความจำ แต่เราไม่สนใจอีกต่อไปจากนั้นเราก็กดปุ่ม@ซึ่งจบโปรแกรม



11

CoreUtils GNU, 6 ไบต์

seq $1

แบ่งคำตอบให้กับ bash บริสุทธิ์ดูด้านล่าง ...


1
สำหรับฉันคำตอบที่ดีที่สุดสำหรับ bash / etc ^^ อัตราส่วนระหว่างเครื่องมือกับงานที่สมบูรณ์แบบ
Olivier Dulac

10

R, 13 ไบต์

cat(1:scan())

เนื้อหาต้องมีอย่างน้อย 30 ตัวอักษร


ฉันไม่สามารถแก้ไขคำตอบของคุณได้
Erik the Outgolfer

@ ΈρικΚωνσταντόπουλοςคุณสามารถแนะนำการแก้ไขที่ต้องได้รับการอนุมัติด้วยชื่อเสียงปัจจุบันของคุณเท่านั้น และโปรดทราบว่าโค้ดการแก้ไขไม่สามารถใช้ได้ที่นี่ หากคุณมีคำแนะนำการเล่นกอล์ฟเขียนความคิดเห็นเพื่อให้ผู้เขียนสามารถทดสอบก่อนที่จะปรับปรุงวิธีการแก้ปัญหา
Denker

@DenkerAffe ฉันหมายถึงปุ่มแก้ไขเป็นสีเทามาก่อน
Erik the Outgolfer

1
ฉันทำถ้าฉันต้องการให้มันเขียนแม้ในขณะที่คุณเรียกสคริปต์
Masclins

9
ฉันคิดว่า CAT Scan เหมาะที่สุดสำหรับการดูอาการบาดเจ็บที่กระดูกวินิจฉัยปอดและปัญหาหน้าอกและตรวจหามะเร็งไม่นับ
Stewie Griffin

10

Javascript 182 177 160 154 139 138 132 ไบต์ (ถูกต้อง)

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

n=>{c=[e=0];for(;c.join``!=n;){a=c.length-1;c[a]++;for(;a+1;a--){c[a]+=e;e=0;if(c[a]>9)c[a]=0,e++;}e&&c.unshift(1);alert(c.join``)}}

ความแม่นยำโดยพลการเพื่อช่วยเหลือ!

เนื่องจากจาวาสคริปต์สามารถนับได้สูงสุด 2 ^ 53-1 (ขอขอบคุณไปที่ @ MartinBüttnerเพื่อชี้ให้เห็น) ฉันจึงต้องสร้างความแม่นยำทางโบราณคดีเพื่อทำสิ่งนี้ มันเก็บข้อมูลในอาเรย์และ "ติ๊ก" แต่ละตัวจะเพิ่ม 1 ไปยังองค์ประกอบสุดท้ายจากนั้นไปที่อาเรย์และถ้ามีอะไรเกิน 9 มันจะกำหนดองค์ประกอบนั้นเป็น 0 และเพิ่ม 1 ไปทางซ้ายมือ

ลองที่นี่! หมายเหตุ: กด F12 เพื่อดูผลลัพธ์จริงเนื่องจากฉันไม่ต้องการให้คุณรอกล่องข้อความ

BTW: ฉันเป็นคนเดียวที่ไม่ทราบว่าผู้ประกอบการที่สามมีประโยชน์มากใน codegolf?

if(statement)executeSomething();

นานกว่า

statement?executeSomething():0;

1 ไบต์

Javascript, 28 ไบต์ (ไม่ถูกต้อง - ไม่สามารถนับเป็น 2 64 )

n=>{for(i=0;i++<n;)alert(i)}

2
ใช่คุณเป็นคนเดียว: P
Erik the Outgolfer

รุ่นที่ไม่ถูกต้องสามารถนับได้ถึง 2 ^ 64-1 หรือไม่ ถ้าเป็นเช่นนั้นจะต้องขอบคุณกฎใหม่
Erik the Outgolfer

@ ΈρικΚωνσταντόπουλοςไม่มากถึง 2 ^ 53-1
Bálint

เพราะหากไม่มีสิ่งใดที่&&จะเป็นประโยชน์เช่นกันเพียงแค่ต้องระมัดระวังเกี่ยวกับการ cohersion condition&&action()
Shaun H

1
e?c.unshift(1):0เพื่อe&&c.unshift(1)ประหยัด byte
Shaun H

9

Java 8, 43/69/94 ไบต์

ข้ามไป 44 ยังคงเป็น 44 ปกติ - เดี๋ยวก่อนฉันไม่ข้ามมันฉันเพิ่งแทนที่มัน :(

ถ้าฉันสามารถคืน a LongStream: ( 43 bytes)

n->java.util.stream.LongStream.range(1,n+1)

Function<Long,LongStream>นี่คือแลมบ์ดาสำหรับเป็น ในทางเทคนิคแล้วฉันควรใช้rangeClosedแทนrangeเช่นฉันตัดหนึ่งจากการป้อนข้อมูลสูงสุดของฉันในทางนี้ แต่มีความยาวมากกว่าrangeClosedrange

ถ้าฉันต้องพิมพ์ในฟังก์ชั่น: ( 69 bytes)

n->java.util.stream.LongStream.range(1,n+1).peek(System.out::println)

Consumer<Long>นี่คือแลมบ์ดาสำหรับเป็น ในทางเทคนิคฉันดูถูกpeekเนื่องจากเป็นการดำเนินการระดับกลางซึ่งหมายความว่าแลมบ์ดานี้ได้ส่งคืนตัวอย่างทางเทคนิคเป็นLongStreamครั้งแรก ฉันควรจะใช้forEachแทน อีกครั้งกอล์ฟไม่ใช่รหัสที่ดี

น่าเสียดายเนื่องจากlongช่วงของมันเป็นจำนวนเต็ม 64 บิตที่มีการลงชื่อจึงไม่ถึงที่ร้องขอ2^64-1แต่เพียง2^63-1อย่างเดียว

อย่างไรก็ตาม , Java SE 8 มีฟังก์ชันในการรักษาlongs ราวกับว่าพวกเขาได้รับการลงนามโดยเรียกวิธีการเฉพาะในLongระดับอย่างชัดเจน น่าเสียดายที่ Java ยังคงเป็นภาษาจาวาอยู่ค่อนข้างนานแม้ว่าจะสั้นกว่ารุ่น BigInteger ก็ตาม ( 94 bytes)

n->{for(long i=0;Long.compareUnsigned(i,n)<0;)System.out.println(Long.toUnsignedString(++i));}

นี่คือConsumer<Long>ก่อนหน้านี้

และยาวเกินไปที่จะหลีกเลี่ยงการเลื่อน


เปลี่ยนขีด จำกัด 2 ^ 64-1: D
เอริคผู้เล่นนอกรีต

1
ฟังก์ชั่นแรกไม่ควรเป็นn->java.util.stream.LongStream.range(1,n+1)ใช่มั้ย
Mego

2
@ zyabin101>.> คุณไม่เห็นอะไรเลย
CAD97

1
@KevinCruijssen มันจะช่วยได้ยกเว้นเหตุผลในการใช้BigIntegerคือการใช้int(หรือแม้แต่long) สำหรับตัววนซ้ำนั้นไม่ใหญ่พอ
CAD97

1
ฉันเข้าใจผิด J8 มีวิธีการใช้งานlongในลักษณะที่ไม่ได้ลงชื่อดังนั้นการใช้วิธีดังกล่าวจึงสั้นกว่าBigIntegerแนวทาง (คงไม่เป็นเช่นนั้นหากเราต้องใช้การรักษาแบบไม่ลงนามนานเท่าที่เราต้องทำก่อน J8)
CAD97



7

Haskell ขนาด 10 ไบต์

f n=[1..n]

ตัวอย่างการใช้งาน: ->f 4[1,2,3,4]


คุณต้องไม่ hardcode คุณจะต้องใช้เวลาn n
Erik the Outgolfer

4
@ ΈρικΚωνσταντόπουλος nไม่ใช่ฮาร์ดโค้ดที่นี่ - มันเป็นอาร์กิวเมนต์ของฟังก์ชัน ไวยากรณ์ของ Haskell อาจแปลกสำหรับคนที่ใช้รูปแบบ C-like
Mego

@Mego โอ้ฉันสับสนกับตัวอย่างการใช้งาน
Erik the Outgolfer

7

MarioLANG , 19 ไบต์

;
)<
+"
:[
(-
>!
=#

ลองออนไลน์!

โปรแกรมแนวตั้งมักจะเล่นกอล์ฟได้ง่ายขึ้นสำหรับการวนซ้ำแบบง่าย ๆ ใน MarioLANG ฉันไม่แน่ใจว่าล่ามทำอะไรเมื่อเผชิญหน้ากับ[ลิฟต์ แต่ดูเหมือนว่าจะยุติโปรแกรมเมื่อเซลล์ปัจจุบันเป็น 0 นั่นอาจเป็นกลอุบายที่มีประโยชน์โดยทั่วไป

คำอธิบาย

MarioLANG เป็นภาษาที่เหมือน Brainfuck (ด้วยเทปหน่วยความจำที่ไม่มีที่สิ้นสุดของจำนวนเต็มที่มีความแม่นยำตามอำเภอใจ) ซึ่งตัวชี้การเรียนการสอนมีลักษณะคล้ายกับมาริโอเดินและกระโดดไปรอบ ๆ

มาริโอเริ่มต้นที่มุมซ้ายบนและตกลงมา ;อ่านจำนวนเต็มจาก STDIN และวางไว้ในเซลล์หน่วยความจำปัจจุบัน ตอนนี้ทราบว่า=เป็นเซลล์พื้นดินสำหรับมาริโอที่จะเดินไป"และ#รูปแบบลิฟท์ (ด้วย#การเริ่มต้น) และ!ทำให้มาริโอหยุดที่ลิฟท์เพื่อที่เขาจะไม่เดินออกไปทันที >และ<กำหนดทิศทางการเคลื่อนไหวของเขา เราจะเห็นว่าสิ่งนี้ให้วนรอบง่ายประกอบด้วยรหัสต่อไปนี้:

)   Move memory pointer one cell right.
+   Increment (initially zero).
:   Print as integer, followed by a space.
(   Move memory pointer one cell left.
-   Decrement.
[   Conditional, see below.

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


มันยุติโปรแกรมเพราะ "ตก" ฉันคิดว่า
Erik the Outgolfer

คุณเลือก 56 เช่นกัน?
Erik the Outgolfer

@ ΈρικΚωνσταντόπουλοςฉันไม่สามารถหาสถานที่ที่มาริโอตกลงไปได้ ดูเหมือนว่าล่ามเพิ่งจะจบลงด้วยข้อผิดพลาดทางขวา[ซึ่งสะดวกกว่าจริง ๆ
Martin Ender

TIO มีแนวโน้มที่จะไม่แสดงข้อความแสดงข้อผิดพลาด (STDERR) โดยไม่มีการเปิดใช้งานการดีบัก ดูเหมือนว่ามันเป็นข้อผิดพลาดอย่างแน่นอน
Erik the Outgolfer

@ ΈρικΚωνσταντόπουλοςใช่แล้วและมันก็ดีจริง ๆ เพราะSTDERR ถูกละเว้นเว้นแต่จะระบุไว้เป็นอย่างอื่น
Martin Ender

6

โจ - 2 หรือ 6

ในขณะที่คุณสามารถใช้ชุดตัวแปรของฟังก์ชันช่วง ..

1R

..เบื่อ! ลองหาผลรวมสะสม ( \/+) ของตารางของรูปร่างที่ n ( 1~T) แทน

\/+1~T

คุณช่วยระบุลิงก์ไปยังภาษาได้
ไหม


4

Pyth - 3 2 ไบต์

บันทึก 1 ไบต์ด้วย @DenkerAffe

โดยไม่ต้องใช้ builtin

hM

ลองมันออนไลน์


hMถ้าคุณต้องการที่จะได้รับแฟนซีจริง :)
Denker

@DenkerAffe โอ้ใช่จริง
Maltysen

คุณลืมอัปเดตจำนวนไบต์
Conor O'Brien

@ CᴏɴᴏʀO'Bʀɪᴇɴ-.-
Maltysen

@ ΈρικΚωνσταντόπουλος orlp คำตอบในตัวแล้ว
Maltysen


4

dc, 15

?[d1-d1<m]dsmxf

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

เนื่องจากตัวเลขทั้งหมดถูกส่งไปยังสแต็กนี่จึงมีโอกาสสูงที่จะมีหน่วยความจำไม่เพียงพอก่อนที่จะเข้าใกล้ 2 ^ 64 หากนี่เป็นปัญหาเราสามารถทำสิ่งนี้แทน:


dc, 18

?sn0[1+pdln>m]dsmx

อาจใช้ได้กับ 2 ^ 64-1 (ขีด จำกัด ใหม่)
Erik the Outgolfer

คนแรกจะหมดหน่วยความจำนานก่อนที่คุณจะถึง 2 ^ 64-1 อย่างที่สองจะยังคงดำเนินต่อไปอย่างมีความสุขจนกว่าดวงอาทิตย์ของเราจะไปถึงซุปเปอร์โนวา
Digital Trauma

@DigitalTraumaskcsockso ฉันหมายความว่าคุณสามารถแก้ไขคำตอบที่สองของคุณถ้ามันสั้นกว่า 2 ^ 64-1
Erik the Outgolfer

@ ΈρικΚωνσταντόπουλος dcเช่นbcใช้คณิตศาสตร์ที่มีความแม่นยำตามอำเภอใจตามค่าเริ่มต้นและทำให้ขอบเขตดังกล่าวไม่เกี่ยวข้องกับภาษานี้
Digital Trauma

4

ArnoldC, 415 ไบต์

IT'S SHOWTIME
HEY CHRISTMAS TREE n
YOU SET US UP 0
GET YOUR ASS TO MARS n
DO IT NOW
I WANT TO ASK YOU A BUNCH OF QUESTIONS AND I WANT TO HAVE THEM ANSWERED IMMEDIATELY
HEY CHRISTMAS TREE x
YOU SET US UP n
STICK AROUND x
GET TO THE CHOPPER x
HERE IS MY INVITATION n
GET DOWN x
GET UP 1
ENOUGH TALK
TALK TO THE HAND x
GET TO THE CHOPPER x
HERE IS MY INVITATION n
GET DOWN x
ENOUGH TALK
CHILL
YOU HAVE BEEN TERMINATED

สิ่งเดียวที่น่าสนใจคือการใช้ nx (โดยที่ n คือเป้าหมายและ x ตัวแปรที่เพิ่มขึ้น) เพื่อทดสอบจุดสิ้นสุดของ while loop แทนที่จะมีตัวแปรเฉพาะดังนั้นฉันจึงจบลงด้วย nx และ n- (nx) = x ในแต่ละวงวิ่ง

หมายเหตุ : ฉันสามารถนับได้เพียง 2 ^ 31-1 ฉันเดาได้ว่า Terminators นั้นไม่ได้เป็นอันตรายอย่างแท้จริง


3
แน่นอนว่ามีภาษาการเขียนโปรแกรมที่ออกแบบรอบ ๆ Arnold Schwarzenegger memes ...
Nzall

4

Piet, 64 Codels codelsize 1

ด้วย codelsize 20:

codelsize 20

ติดตามภาพ

วงแรก:

tracestart

ร่องรอยที่เหลืออยู่สำหรับn=2:

traceend

หมายเหตุ

  • ยังไม่มีคำตอบ Piet? ให้ฉันแก้ไขด้วยโปรแกรม Piet ครั้งแรกของฉัน! นี่อาจจะสั้นกว่าด้วยการหมุนที่ดีขึ้นและการจัดการตัวชี้ที่น้อยลงแม้ว่า ...

  • ขีด จำกัด สูงสุดที่สนับสนุนขึ้นอยู่กับการใช้งานล่าม ในทางทฤษฎีมันจะเป็นไปได้ที่จะให้การสนับสนุนล่ามที่มีจำนวนมากตามอำเภอใจ

  • เดลิมิเตอร์คือETX(Ascii 3) อย่างไรก็ตามมันไม่สามารถแสดงได้อย่างถูกต้องในคำตอบนี้ดังนั้นฉันจะปล่อยพวกมันออกไป มันทำงานได้ในคอนโซล:

ป้อนคำอธิบายรูปภาพที่นี่

เอาท์พุต

Input:  1
Output: 1

Input:  20
Output: 1234567891011121314151617181920

Input:  100
Output: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100

Undefined behaviour:

Input:  -1
Output: 1

Input:  0
Output: 1

ติดตาม Npiet สำหรับ n=2

trace: step 0  (0,0/r,l nR -> 1,0/r,l lB):
action: in(number)
? 2
trace: stack (1 values): 2

trace: step 1  (1,0/r,l lB -> 2,0/r,l nB):
action: push, value 1
trace: stack (2 values): 1 2

trace: step 2  (2,0/r,l nB -> 3,0/r,l nG):
action: duplicate
trace: stack (3 values): 1 1 2

trace: step 3  (3,0/r,l nG -> 4,0/r,l dY):
action: out(number)
1
trace: stack (2 values): 1 2

trace: step 4  (4,0/r,l dY -> 5,0/r,l lY):
action: push, value 1
trace: stack (3 values): 1 1 2

trace: step 5  (5,0/r,l lY -> 6,0/r,l lG):
action: add
trace: stack (2 values): 2 2

trace: step 6  (6,0/r,l lG -> 7,0/r,l lR):
action: duplicate
trace: stack (3 values): 2 2 2

trace: step 7  (7,0/r,l lR -> 10,0/r,l nR):
action: push, value 3
trace: stack (4 values): 3 2 2 2

trace: step 8  (10,0/r,l nR -> 12,0/r,l dR):
action: push, value 2
trace: stack (5 values): 2 3 2 2 2

trace: step 9  (12,0/r,l dR -> 13,0/r,l lB):
action: roll
trace: stack (3 values): 2 2 2

trace: step 10  (13,0/r,l lB -> 14,0/r,l lG):
action: duplicate
trace: stack (4 values): 2 2 2 2

trace: step 11  (14,0/r,l lG -> 15,2/d,r nG):
action: push, value 3
trace: stack (5 values): 3 2 2 2 2

trace: step 12  (15,2/d,r nG -> 15,3/d,r dG):
action: push, value 1
trace: stack (6 values): 1 3 2 2 2 2

trace: step 13  (15,3/d,r dG -> 14,3/l,l lR):
action: roll
trace: stack (4 values): 2 2 2 2

trace: step 14  (14,3/l,l lR -> 13,1/l,r lC):
action: greater
trace: stack (3 values): 0 2 2

trace: step 15  (13,1/l,r lC -> 11,1/l,r nC):
action: push, value 3
trace: stack (4 values): 3 0 2 2

trace: step 16  (11,1/l,r nC -> 10,1/l,r lB):
action: multiply
trace: stack (3 values): 0 2 2

trace: step 17  (10,1/l,r lB -> 9,1/l,r nY):
action: pointer
trace: stack (2 values): 2 2

trace: step 18  (9,1/l,r nY -> 7,1/l,r dY):
action: push, value 2
trace: stack (3 values): 2 2 2

trace: step 19  (7,1/l,r dY -> 6,1/l,r lY):
action: push, value 1
trace: stack (4 values): 1 2 2 2

trace: step 20  (6,1/l,r lY -> 5,1/l,r nM):
action: roll
trace: stack (2 values): 2 2

trace: step 21  (5,1/l,r nM -> 4,1/l,r dM):
action: push, value 3
trace: stack (3 values): 3 2 2

trace: step 22  (4,1/l,r dM -> 3,1/l,r lG):
action: pointer
trace: stack (2 values): 2 2

trace: step 23  (3,1/d,r lG -> 2,3/l,l nG):
action: push, value 3
trace: stack (3 values): 3 2 2

trace: step 24  (2,3/l,l nG -> 2,2/u,r lY):
action: out(char)

trace: stack (2 values): 2 2
trace: white cell(s) crossed - continuing with no command at 2,0...

trace: step 25  (2,2/u,r lY -> 2,0/u,r nB):

trace: step 26  (2,0/u,r nB -> 3,0/r,l nG):
action: duplicate
trace: stack (3 values): 2 2 2

trace: step 27  (3,0/r,l nG -> 4,0/r,l dY):
action: out(number)
2
trace: stack (2 values): 2 2

trace: step 28  (4,0/r,l dY -> 5,0/r,l lY):
action: push, value 1
trace: stack (3 values): 1 2 2

trace: step 29  (5,0/r,l lY -> 6,0/r,l lG):
action: add
trace: stack (2 values): 3 2

trace: step 30  (6,0/r,l lG -> 7,0/r,l lR):
action: duplicate
trace: stack (3 values): 3 3 2

trace: step 31  (7,0/r,l lR -> 10,0/r,l nR):
action: push, value 3
trace: stack (4 values): 3 3 3 2

trace: step 32  (10,0/r,l nR -> 12,0/r,l dR):
action: push, value 2
trace: stack (5 values): 2 3 3 3 2

trace: step 33  (12,0/r,l dR -> 13,0/r,l lB):
action: roll
trace: stack (3 values): 2 3 3

trace: step 34  (13,0/r,l lB -> 14,0/r,l lG):
action: duplicate
trace: stack (4 values): 2 2 3 3

trace: step 35  (14,0/r,l lG -> 15,2/d,r nG):
action: push, value 3
trace: stack (5 values): 3 2 2 3 3

trace: step 36  (15,2/d,r nG -> 15,3/d,r dG):
action: push, value 1
trace: stack (6 values): 1 3 2 2 3 3

trace: step 37  (15,3/d,r dG -> 14,3/l,l lR):
action: roll
trace: stack (4 values): 2 3 2 3

trace: step 38  (14,3/l,l lR -> 13,1/l,r lC):
action: greater
trace: stack (3 values): 1 2 3

trace: step 39  (13,1/l,r lC -> 11,1/l,r nC):
action: push, value 3
trace: stack (4 values): 3 1 2 3

trace: step 40  (11,1/l,r nC -> 10,1/l,r lB):
action: multiply
trace: stack (3 values): 3 2 3

trace: step 41  (10,1/l,r lB -> 9,1/l,r nY):
action: pointer
trace: stack (2 values): 2 3
trace: white cell(s) crossed - continuing with no command at 9,3...

trace: step 42  (9,1/d,r nY -> 9,3/d,l nR):

มันมีจำนวนไบต์ว่างระหว่างตัวเลขหรือไม่?
Erik the Outgolfer

@ ΈρικΚωνσταντόπουλοςคุณหมายถึงอะไร? ในคอนโซลคุณสามารถเห็นETXอักขระ (Ascii 3) แยกเอาท์พุทอักขระ ETX ไม่สามารถแสดงบนไซต์นี้ได้
Marv

4

JavaScript (ES6), 77 76 63 59 58 ไบต์

n=>{for(s=a=b=0;s!=n;console.log(s=[a]+b))a+=!(b=++b%1e9)}

รับอินพุตnเป็นสตริงควรสนับสนุนได้ถึง 9007199254740991999999999

อธิบาย:

n=>{ //create function, takes n as input
    for( //setup for loop
        s=a=b=0; //init s, a, and b to 0
        s!=n; //before each cycle check if s!=n
        console.log(s=[a]+b) //after each cycle concat a and b into to s and print
    )
        a+=!(b=++b%1e9) //During each cycle set b to (b+1)mod 1e9, if b == 0 and increment a
} //Wrap it all up

กรุณาอธิบาย
Bálint

2^64-1ไม่เป็นไรฉันเปลี่ยนสเป็คแล้ว
Erik the Outgolfer

1
ที่น่าสนใจฉันไม่ได้คิดว่าการต่อเลขสองตัวเข้าด้วยกันเพื่อให้ได้ค่าต่ำสุด BTW คุณสามารถบันทึกไบต์จำนวนมากได้โดยใช้ตัวแปรสองตัวแทนอาร์เรย์:n=>{for(a=b="";a+""+b!=n;console.log(a+""+b))++b-1e9||(++a,b=0)}
user81655

ขอบคุณที่ @ user81655 สมองของฉันชอบอาร์เรย์ด้วยเหตุผลบางอย่าง
Shaun H

1
คุณสามารถบันทึกไบต์ได้โดยเปลี่ยนa+""+bเป็น[a]+b
Bassdrop Cumberwubwubwub


3

ที่จริงแล้ว 1 ไบต์

R

เบื่อในตัวน่าเบื่อ ต้องใช้รุ่น 64 บิตของงูใหญ่ 3 2**64จะได้รับทั้งหมดทางขึ้นไป

ลองออนไลน์!(เนื่องจากข้อ จำกัด ด้านหน่วยความจำและความยาวเอาต์พุตล่ามออนไลน์ไม่สามารถไปได้สูงมาก)

ต่อไปนี้เป็นรุ่น 5 ไบต์ที่ไม่ต้องใช้ Python 3 64 บิตและดีกว่าสำหรับการใช้หน่วยความจำ:

W;DWX

ลองออนไลน์! (ดูข้อสังเกตข้างบน)


@StewieGriffin ปัญหาขึ้นอยู่กับ RAM ที่อยู่ไม่ จำกัด จำนวนเต็ม (Python ต่อเนื่องเปลี่ยนระหว่าง ints พื้นเมืองและจำนวนเต็มขนาดใหญ่) ฉันทดสอบกับ Python 32- บิต 3 และ 64-bit Python 3 ล้มเหลว 32- บิต 64- บิตไม่ได้
Mego

@ ฉันได้เปลี่ยนข้อ จำกัด ถึงแม้ว่าฉันไม่คิดว่า Python แบบ 32 บิตรองรับ 2 ^ 64-1 แต่ฉันคิดว่ามันรองรับได้มากถึง 2 ^ 32-1 ดังนั้นฉันขอแนะนำให้ใช้ตัวหลังในกรณี Python .
Erik the Outgolfer

ทำไมคุณถึงเรียกว่าจริงจังจริงๆ
Erik the Outgolfer

@ ΈρικΚωνσταντόπουλοςอย่างที่ฉันพูดกับ Stewie ปัญหาไม่ได้เป็น 64- บิต ints แต่การจัดการกับหน่วยความจำ เนื่องจากการใช้งานหน่วยความจำอย่างไม่มีประสิทธิภาพอย่างจริงจังและจริงจังพวกเขาหมดแรง จำกัด หน่วยความจำของกระบวนการแบบ 32 บิตอย่างรวดเร็ว และที่จริงและอย่างจริงจังก็เป็นภาษาที่แตกต่าง - จริง ๆ แล้วเป็นผู้สืบทอดไปอย่างจริงจัง
Mego

@Mego โอ้ฉันเคยคลิกลิงค์สำหรับจริงและมันเชื่อมโยงฉันโดยตรงกับอย่างจริงจัง
Erik the Outgolfer

3

Fuzzy-Octo-Guacamole ขนาด 7 ไบต์

^!_[+X]

คำอธิบาย:

^ get input to ToS
! set for loop to ToS
_ pop
[ start for loop
+ increment ToS (which aparently happens to be 0)
X print ToS
] end for loop

นอกจากนี้Xการทำงานแทนo;, 7 ไบต์
Rɪᴋᴇʀ

จะไม่พิมพ์ [n] ที่?
Bald Bantha

มากกว่าn
Bald Bantha

ไม่ :พิมพ์สแต็กเต็ม Xใหม่.
Rɪᴋᴇʀ

นอกจากนี้ยังมีอีกวิธีที่ 7 ^!$[_;]ไบต์: $เป็นช่วง
Rɪᴋᴇʀ

3

ปราศรัย, 31 ไบต์ (ไม่ใช่การแข่งขัน)

literally, print range(input())

หลามนี้literally, อยู่ข้างหน้าคำสั่งทุกข้อหรือไม่? (คำถามที่ 2: วันที่ล่วงหน้าหรือโพสต์วันที่หากเป็นของคุณหรือไม่ทั้งสองเป็นที่ยอมรับเว้นแต่คุณจะทำสิ่งนี้เพื่อท้าทายซึ่งในกรณีนี้คือช่องโหว่)
Erik the Outgolfer

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀฉันเชื่อว่าคำปราศรัยเป็นของ ConorO'Brien github.com/ConorOBrien-Foxx/Assorted-Programming-Language/tree/ …นอกจากนี้หากภาษานี้ถูกคิดค้นหลังจากการท้าทาย (ซึ่งไม่ใช่) มันจะไม่แข่งขัน แต่ก็ยังเป็นคำตอบที่ถูกต้อง ฉันไม่ใช่แฟนตัวยงของกฎ "ภาษาของคุณจะต้องมีการแก้ไขปัญหาล่วงหน้า" ฉันคิดว่าถ้ามีคนคิดค้นวิธีแก้ปัญหาแบบ 0 หรือ 1 ไบต์ให้กับความท้าทายนั่นเป็นสิ่งที่ขัดกับกฎอย่างชัดเจน แต่ควรอนุญาตให้ใช้ภาษาจริงใหม่
DJMcMayhem

@ EʀɪᴋᴛʜᴇGᴏʟғᴇʀนี่คือสิ่งที่ดร. กรีนไข่กล่าว จริงๆแล้วฉันเป็น chatbot ของ Easterlyirk
Żáłģó

ดังนั้นไม่มีความเห็นสำหรับคุณ?
NoOne อยู่ที่นี่

@ ไม่มีใครอยู่นี่อะไรนะ?
Żáłģó

3

QBASIC ขนาด 43 ไบต์

1 INPUT a
2 FOR b=1 TO a
3 PRINT b
4 NEXT b

คุณต้องการจริงๆINPUT e;aหรือINPUT aเพียงพอหรือไม่ ฉันไม่เห็นคุณใช้eซ้ำ
Erik the Outgolfer

จุดที่ดีไม่แน่ใจว่าทำไมถึงอยู่ที่นั่น
Michelfrancis Bustillos

นอกจากนี้คุณต้องการช่องว่างระหว่างหมายเลขบรรทัดและตัวอักษรและระหว่าง1 TOหรือไม่
Erik the Outgolfer

ใช่สิ่งเหล่านี้จำเป็น
Michelfrancis Bustillos

รุ่นนี้ของ QBasic คืออะไร? คุณสามารถใช้:ระหว่างใบแจ้งยอดแทนการส่งคืนและหมายเลขบรรทัดได้หรือไม่? QB4.5 ให้ฉันทำสิ่งนี้:INPUT a: FOR b=1 TO a (\n) ?b:NEXT
steenbergh

3

Cubix , 17 ไบต์

..U;I0-!@;)wONow!

ลองที่นี่

Cubix เป็นภาษา 2D ที่สร้างขึ้นโดย @ETHProductions โดยที่คำสั่งจะถูกพันเข้ากับก้อน โปรแกรมนี้ล้อมรอบลูกบาศก์ด้วยความยาวขอบ 2 ดังนี้

    . .
    U ;
I 0 - ! @ ; ) w
O N o w ! . . .
    . .
    . .
  • I รับอินพุตจำนวนเต็ม
  • 0 กด 0 ไปที่สแต็ก
  • - ลบรายการด้านบนของสแต็ก
  • ! ถ้ากระโดดจริงคำสั่งต่อไป @ยุติ
  • ; แสดงผลลัพธ์การลบออกจากสแต็ก
  • ) เพิ่มส่วนบนสุดของสแต็ก
  • wย้าย ip ไปทางขวาและดำเนินการต่อ นี่เป็นสาเหตุที่ทำให้ดรอปไปยังบรรทัดถัดไป
  • O เอาต์พุตด้านบนของสแต็กเป็นตัวเลข
  • N กด linefeed (10) ไปที่สแต็ก
  • o ส่งออก linefeed
  • wย้าย ip ไปทางขวาและดำเนินการต่อ นี่เป็นสาเหตุที่ทำให้หน้าต่อไป
  • ! เพราะ TOS ความจริงกระโดด @ยุติ
  • ; pop linefeed จากสแต็ค
  • Uเชื่อมต่อไปทางซ้ายเข้าสู่การ-ลบและดำเนินการต่อจากที่นั่น

2

Python 2, 37 33 32 33 ไบต์

for i in xrange(input()):print-~i

คงได้ผลมากไป2**64กว่านั้น

ยิงลงสี่ไบต์ขอบคุณที่ @dieter , และขอขอบคุณอีกครั้งเพื่อให้ @orlp แต่เห็นได้ชัดเช่น @ SP3000 พบว่าrange()xrange()อาจมีปัญหาเกี่ยวกับค่าสูงขึ้นเพื่อให้ฟังก์ชั่นได้เปลี่ยนไป หมายเหตุ: แม้xrange()อาจมีปัญหาอย่างน้อยใน 2.7.10


1
Python 2 ต้องแน่นอน :)
Erik the Outgolfer

33 bytes ->for i in range(input()):print i+1
dieter

2
32 bytes ->for i in range(input()):print-~i
orlp

1
"น่าจะทำงานได้มากไป2**64กว่านั้น" - สงสัยใน Python 2 แต่อาจมีxrange(แก้ไข: แม้xrangeอาจมีปัญหาอย่างน้อย 2.7.10)
Sp3000

วิธีการ-~ทำงานหรือไม่ แก้ไข : ฉันคิดออก นอกจากนี้เคล็ดลับดี!
Erik the Outgolfer

2

Zsh, 12 ไบต์

echo {1..$1}

ใช้งานได้เนื่องจากตัวแปรถูกขยายก่อนการจัดฟัน


2
ฉันไม่แน่ใจว่าคุณสามารถนับได้ถึง 2 ^ 64 (หรือแม้แต่น้อยลงเล็กน้อย)?
Olivier Dulac

@OlivierDulac 2^64-1ไม่เป็นไร
Erik the Outgolfer

1
ค่าสูงสุดของ zsh คือ2^63 - 1
joeytwiddle

2

V, 11 ไบต์

é1@añYpñdd

เนื่องจากสิ่งนี้มีสิ่งที่น่ารังเกียจ UTF-8 และ unprintables นี่คือ hexdump ที่ย้อนกลับได้:

00000000: e931 4061 f159 7001 f164 64              .1@a.Yp..dd

V เป็นภาษาที่ฉันยังไม่เสร็จ แต่นี่ใช้งานได้ตั้งแต่19ปี คำตอบนี้เป็น verbose มากกว่าที่ฉันต้องการเล็กน้อย แต่นั่นเป็นเพราะ V ไม่มีความรู้เกี่ยวกับจำนวนเต็มมีเพียงสตริงเท่านั้น ดังนั้นจึงเป็นคำตอบที่ดี! สิ่งนี้จะทำงานได้ถึง 2 ^ 64 แต่อาจใช้เวลานานมาก

เพื่อให้คำอธิบายของฉันง่ายต่อการอ่าน / เขียนฉันจะทำงานกับ "Human readable form" ซึ่งเป็นวิธีที่คุณจะพิมพ์ใน vim

<A-i>1@a<A-q>Yp<C-a><A-q>dd

คำอธิบาย:

'Implicit: register "a" == arg 1, and any generated text is printed. 

<A-i>1                       'Insert a single character: "1"
      @a                     ' "a" times, 
        <A-q>       <A-q>    'Repeat the following:
             Yp<C-a>         'Duplicate the line, and increment it
                         dd  'Delete the last line, since we have one too many.

หากอนุญาตให้มีช่องโหว่ได้นี่เป็นเวอร์ชั่นที่สั้นกว่าที่พิมพ์ 1 ถึง n แต่จะพิมพ์ 0 (8 ไบต์) ด้วย:

é0@añYp

และในรูปแบบที่อ่านได้:

<A-i>1@a<A-q>Yp<C-a>

สิ่งนี้จะสั้นลงเพราะ<A-q>ท้ายที่สุดเป็นนัยดังนั้นเราไม่จำเป็นต้องใช้ถ้าเราไม่ต้องลบบรรทัดสุดท้าย


อาจใช้เวลานานเท่าที่ต้องการ ดีใจที่เห็นคำตอบในการทำงานกับ 2 ^ 64 โดยเฉพาะอย่างยิ่งกับภาษาที่ยังไม่เสร็จ +1
Erik the Outgolfer

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