วง infinite ที่สั้นที่สุดทำให้ไม่มีเอาต์พุต


121

งานของคุณคือการสร้างวงที่ไม่มีที่สิ้นสุดที่สั้นที่สุด!

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

กฎระเบียบ

  • การส่งแต่ละครั้งจะต้องเป็นโปรแกรมเต็มรูปแบบ
  • คุณต้องสร้างการวนซ้ำแบบไม่สิ้นสุดที่สั้นที่สุด
  • แม้ว่าในที่สุดโปรแกรมของคุณจะมีหน่วยความจำไม่เพียงพอก็ตามก็ยังคงได้รับการยอมรับตราบใดที่มีการเรียกใช้ตลอดเวลาตั้งแต่เริ่มต้นจนถึงเมื่อหน่วยความจำไม่เพียงพอ นอกจากนี้เมื่อหน่วยความจำไม่เพียงพอก็ยังไม่ควรพิมพ์สิ่งใดไปยัง STDERR
  • โปรแกรมต้องไม่มีการป้อนข้อมูล (อย่างไรก็ตามอนุญาตให้อ่านจากไฟล์) และไม่ควรพิมพ์อะไรไปยัง STDOUT ห้ามส่งออกไปยังไฟล์
  • โปรแกรมจะต้องไม่เขียนอะไรไปยัง STDERR
  • อย่าลังเลที่จะใช้ภาษา (หรือรุ่นภาษา) แม้ว่ามันจะใหม่กว่าความท้าทายนี้ - โปรดทราบว่าจะต้องมีล่ามเพื่อให้สามารถส่งการทดสอบได้ ได้รับอนุญาต (และสนับสนุนให้) เขียนล่ามนี้ด้วยตัวคุณเองสำหรับภาษาที่ยังไม่ได้ใช้งานมาก่อน : D
  • ส่งเป็นคะแนนในไบต์ในการเข้ารหัสที่เหมาะสม (ที่มีอยู่ก่อน) โดยปกติ (แต่ไม่จำเป็น) UTF-8 บางภาษาเช่นโฟลเดอร์มีความยุ่งยากเล็กน้อยในการให้คะแนน - หากมีข้อสงสัยกรุณาถาม Meta
  • นี่ไม่เกี่ยวกับการค้นหาภาษาด้วยโปรแกรมวนรอบสั้นที่ไม่มีที่สิ้นสุด นี่คือการค้นหาโปรแกรมวนรอบสั้นที่สั้นที่สุดในทุกภาษา ดังนั้นฉันจะไม่ยอมรับคำตอบ
  • หากภาษาที่คุณเลือกเป็นภาษาที่แตกต่างกันเล็กน้อยของภาษาอื่น (อาจเป็นที่นิยมมากกว่า) ซึ่งมีคำตอบอยู่แล้ว (คิดว่าภาษาเบสิกหรือภาษา SQL, เชลล์ Unix หรือ Brainf ** k-Derivative เช่น Alphuck) พิจารณาเพิ่มข้อความลงไป ตอบว่าการแก้ปัญหาที่เหมือนกันหรือคล้ายกันมากนั้นก็สั้นที่สุดในภาษาอื่นเช่นกัน
  • ควรมีเว็บไซต์เช่น Wikipedia, Esolangs หรือ GitHub สำหรับภาษา ตัวอย่างเช่นถ้าเป็นภาษา CJam #[CJam](http://sourceforge.net/p/cjam/wiki/Home/), X bytesแล้วหนึ่งสามารถเชื่อมโยงไปยังเว็บไซต์ในส่วนหัวเช่น
  • ไม่อนุญาตช่องโหว่มาตรฐาน

(ฉันได้นำกฎเหล่านี้มาจากการท้าทาย "Hello World" ของ Martin Büttner)


โปรดโพสต์ในความคิดเห็นเพื่อบอกฉันว่าความท้าทายนี้จะดีขึ้นได้อย่างไร

แค็ตตาล็อก

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

# Language name, X bytes

เห็นได้ชัดว่าแทนที่Language nameและX bytesด้วยรายการที่เหมาะสม หากคุณต้องการเชื่อมโยงไปยังเว็บไซต์ของภาษาให้ใช้เทมเพลตนี้ตามที่โพสต์ไว้ด้านบน:

#[Language name](http://link.to/the/language), X bytes

ตอนนี้สุดท้ายนี่คือตัวอย่างข้อมูล: (ลองกด "เต็มหน้า" เพื่อดูที่ดีกว่า)

var QUESTION_ID=59347;var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";var COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk";var OVERRIDE_USER=41805;var answers=[],answers_hash,answer_ids,answer_page=1,more_answers=true,comment_page;function answersUrl(index){return"//api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+index+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(index,answers){return"//api.stackexchange.com/2.2/answers/"+answers.join(';')+"/comments?page="+index+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:true,success:function(data){answers.push.apply(answers,data.items);answers_hash=[];answer_ids=[];data.items.forEach(function(a){a.comments=[];var id=+a.share_link.match(/\d+/);answer_ids.push(id);answers_hash[id]=a});if(!data.has_more)more_answers=false;comment_page=1;getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:true,success:function(data){data.items.forEach(function(c){if(c.owner.user_id===OVERRIDE_USER)answers_hash[c.post_id].comments.push(c)});if(data.has_more)getComments();else if(more_answers)getAnswers();else process()}})}getAnswers();var SCORE_REG=/<h\d>\s*([^\n,<]*(?:<(?:[^\n>]*>[^\n<]*<\/[^\n>]*>)[^\n,<]*)*),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/;var OVERRIDE_REG=/^Override\s*header:\s*/i;function getAuthorName(a){return a.owner.display_name}function process(){var valid=[];answers.forEach(function(a){var body=a.body;a.comments.forEach(function(c){if(OVERRIDE_REG.test(c.body))body='<h1>'+c.body.replace(OVERRIDE_REG,'')+'</h1>'});var match=body.match(SCORE_REG);if(match)valid.push({user:getAuthorName(a),size:+match[2],language:match[1],link:a.share_link,});else console.log(body)});valid.sort(function(a,b){var aB=a.size,bB=b.size;return aB-bB});var languages={};var place=1;var lastSize=null;var lastPlace=1;valid.forEach(function(a){if(a.size!=lastSize)lastPlace=place;lastSize=a.size;++place;var answer=jQuery("#answer-template").html();answer=answer.replace("{{PLACE}}",lastPlace+".").replace("{{NAME}}",a.user).replace("{{LANGUAGE}}",a.language).replace("{{SIZE}}",a.size).replace("{{LINK}}",a.link);answer=jQuery(answer);jQuery("#answers").append(answer);var lang=a.language;lang=jQuery('<a>'+lang+'</a>').text();languages[lang]=languages[lang]||{lang:a.language,lang_raw:lang,user:a.user,size:a.size,link:a.link}});var langs=[];for(var lang in languages)if(languages.hasOwnProperty(lang))langs.push(languages[lang]);langs.sort(function(a,b){if(a.lang_raw.toLowerCase()>b.lang_raw.toLowerCase())return 1;if(a.lang_raw.toLowerCase()<b.lang_raw.toLowerCase())return-1;return 0});for(var i=0;i<langs.length;++i){var language=jQuery("#language-template").html();var lang=langs[i];language=language.replace("{{LANGUAGE}}",lang.lang).replace("{{NAME}}",lang.user).replace("{{SIZE}}",lang.size).replace("{{LINK}}",lang.link);language=jQuery(language);jQuery("#languages").append(language)}}
body{text-align:left!important}#answer-list{padding:10px;width:500px;float:left}#language-list{padding:10px;padding-right:40px;width:500px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="language-list"> <h2>Shortest Solution by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr> </thead> <tbody id="languages"> </tbody> </table> </div> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr> </thead> <tbody id="answers"> </tbody> </table> </div> <table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr> </tbody> </table>


41
ฉันต้องเริ่มโพสต์โปรแกรมด้วยจำนวนนับลบเพื่อเอาชนะไฟล์เปล่าทั้งหมดเหล่านี้!
CJ Dennis

3
ความท้าทายนี้น่าสนใจเพราะมีภาษาจำนวน 0 ไบต์ (บางภาษาไม่ใช่ภาษา esolangs) FWIW ภาษาที่มีการประกาศส่วนใหญ่มีการวนซ้ำไม่สิ้นสุดเนื่องจากภาษาที่ประกาศไม่มีลูปในไวยากรณ์ของพวกเขา ไดอะแกรมบันไดอาจเป็นภาษาที่เก่าแก่ที่สุด จากนั้นคุณก็มี Instruction Language (IL) ชุดประกอบสำหรับ PLC ที่มีการวนซ้ำไม่สิ้นสุด IL, เหมือนการประกอบแตกต่างกันระหว่างผู้ผลิต
slebetman

โปรแกรมที่อ่านและเรียกใช้ซอร์สโค้ดของตนเองได้รับอนุญาตหรือไม่หรือไฟล์ I / O ผิดกฎ "ต้องไม่มีอินพุต" หรือไม่
ThisSuitIsBlackNot

1
@ThisSuitIsBlackNot ใช่อนุญาตให้ป้อนไฟล์
วัวต้มตุ๋น

คุณสามารถพิมพ์""สตริงว่างเปล่าได้ไหม
OldBunny2800

คำตอบ:


216

Befunge , 0 ไบต์



ได้. โปรแกรม Befunge มีอยู่ในสนามแข่งขันสองมิติที่มีขนาดคงที่ซึ่งล้อมรอบขอบ หากไม่มีสิ่งใดในพื้นที่ว่างที่จะเข้าไปแทรกแซงตัวนับโปรแกรมจะทำงานในการวนซ้ำไม่สิ้นสุดตามค่าเริ่มต้น :)


10
อ๊ะฉันจะโพสต์สิ่งนี้ : /
Deusovi

5
@daniero มันอาจจะมีความสัมพันธ์บางอย่างเพื่อหนีมาตรฐานนี้ ... โดยส่วนตัวฉันไม่เห็นด้วยกับช่องโหว่มาตรฐาน
Justin

17
@Justin ช่องโหว่นั้นใช้ได้กับความท้าทายบางประเภทเท่านั้น
เดนนิส

1
คุณสามารถใช้<pre>&nbsp;</pre>สำหรับบล็อกโค้ดที่ดูว่างเปล่า
Immibis

สิ่งแรกที่ฉันมองหา
Dylan Madisetti

150

L00P , 0 ไบต์



แลงนี้ทำขึ้นเพื่อการวนซ้ำและนั่นคือสิ่งที่มันจะทำ ...


15
ฮ่า ๆ. +1 สำหรับการเลือกภาษา
ETHproductions

76
... หนึ่งในวันนี้ lang นี้จะวนรอบตัวคุณ
Pål GD

3
+1 สำหรับการอ้างอิงดนตรีและขอแสดงความยินดีกับตราทองอีกใบ!
Luis Mendo

การอ้างอิงที่ดีที่สุดที่ฉันเคยเห็น
Christopher

138

รหัสเครื่อง C64 , 2 ไบต์

D0 FE

สาขาไปเองถ้าไม่ได้ตั้งค่าสถานะเป็นศูนย์

สาขาเป็นออฟเซ็ตไบต์เดียวจากตำแหน่งคำสั่งถัดไปและ 254 คือ -2 ในส่วนเสริมสองของ ... คำสั่ง BNE (D0) ใช้เวลาหนึ่งไบต์ของหน่วยความจำและออฟเซ็ตใช้ไบต์ที่สองเพื่อแยกสาขาสองไบต์กลับสาขา เพื่อตัวเอง การตั้งค่าสถานะศูนย์จะถูกล้างข้อมูลเสมอเมื่อมีการโหลดรหัสในหน่วยความจำ

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


13
ไม่ควรทำงานกับเครื่องที่มีโปรเซสเซอร์ตระกูล 6502/6510 ไม่ใช่แค่ C64 ใช่ไหม นอกจากนี้สิ่งที่คุณเขียนคือรหัสเครื่อง การชุมนุมจะเป็นBNE -2
ระดับแม่น้ำเซนต์

55
+1 สำหรับการสร้างโปรแกรมจริงที่มีขนาดเล็กแทนที่จะพยายามหาภาษาที่คลุมเครือที่สุดที่เกิดขึ้นเพื่อให้มีตัวอักษรน้อยที่สุดเพื่อเป็นตัวแทนของโครงสร้าง
Knetic

1
@ user45891 EB FE คือ x86 6502/6510 ไม่มีคำสั่งการกระโดดสั้นแบบไม่มีเงื่อนไข
Random832

2
Steveverrill, touchéเป็นรหัสเครื่องแน่นอน และใช่ฉันคิดว่าผู้คนจำนวนมากจะจดจำพลเรือจัตวา 64 มากกว่า 65xx ครอบครัวโดยทั่วไป :) VIC-20 ใช้ 6502 และจะสามารถเรียกใช้สิ่งนี้ได้ ดังนั้นโดยทางเทคนิคแล้วฟลอปปี้ไดรฟ์ 1541 ของฉันจะ ... ฉันจำได้ว่ามีความสามารถในการสร้างโปรแกรมควบคุมใหม่ โอ้ฉันยังคงคิดถึง C64 ของฉัน :)
คิงเจมส์

7
ย้อนกลับไปในวันที่น่ารังเกียจโดยเฉพาะอย่างยิ่ง "เคล็ดลับ" imho (ป่าเถื่อน) ที่ลูกค้าจะเล่นบนเจ้าของร้านคอมพิวเตอร์ไม่สงสัยก็คือการวางไบต์ที่สองคล้ายกับเรื่องนี้ แต่สำหรับ X86 ที่จุดเริ่มต้นของ bootloader โดยใช้ debugDOS' สิ่งนี้จะก่อให้เกิดเครื่องจักรได้อย่างมีประสิทธิภาพและพนักงานร้านค้าส่วนใหญ่ไม่ต้องการรู้ว่ามันไม่ใช่แค่ไดรฟ์ที่ตายแล้ว
Dewi Morgan

105

Brainfuck, 3 ไบต์

+[]

ไม่ลดน้อยลง: ไม่สิ้นสุด


62
มันตลกเมื่อ BF ชนะคำตอบส่วนใหญ่
Rohcana

ฉันต้องคิดถึงสิ่งนี้เมื่อฉันเห็นคำถามในหน้าเริ่มต้นของ SE
s3lph

1
ความคิดแรกของฉันคือ BF! : D มันสั้นกว่าที่ฉันคิดไว้
André Christoffer Andersen

1
ทางเลือกยังคงเป็นไบต์เดียวกัน:-[]
Unihedron

1
ฉันพนันได้เลยว่ามีล่ามอยู่ที่ไหนสักแห่งที่]จะทำงาน
12Me21

102

/// , 3 ไบต์

///

คะแนนโบนัสใด ๆ สำหรับการใช้ชื่อภาษาเป็นซอร์สโค้ด?


71
ฉันประหลาดใจอย่างแท้จริงว่าลิงก์ใช้งานได้จริงโดยดูว่ามันลงท้ายด้วย///;)
ETHproductions

@ ETHproductions ที่ค่อนข้างน่าแปลกใจ แต่ถ้าใครคิดเกี่ยวกับมันอีกเล็กน้อยมันทำให้รู้สึกบางอย่าง; มันเป็นเพียง URLesolangs.org wiki _ _ _ _
HyperNeutrino

12
@AlexL ไม่ทั้งหมด. เว็บเซิร์ฟเวอร์เห็นร้องขอ GET /wiki////ไป ในขณะที่ตั้งใจจะเป็นเส้นทางเซิร์ฟเวอร์สามารถทำอะไรกับข้อมูลนั้น
เดนนิส

73

Java , 53 ไบต์

class A{public static void main(String[]a){for(;;);}}

Yay ต้องการโปรแกรมเต็มรูปแบบ!


78
พระเจ้าคือ verbose นั่น ...
mınxomaτ

4
@minxomat Yep, 45 ไบต์สำหรับค่าว่างmain:(
Geobits

3
@minxomat ต้องรัก OOP
ลุค

55
นั่นไม่ใช่ OO การใส่รหัสในชั้นเรียนไม่ได้ทำให้มันเป็น OO มากไปกว่าการเอาก้อนหินใส่ไมโครเวฟทำอาหาร
imallett


56

Prolog, 5 ไบต์

a:-a.

หากต้องการทราบว่าเพรดิเคตaนั้นเป็นจริงหรือไม่คุณต้องตรวจสอบว่าเพรดิเคตaนั้นเป็นจริงหรือไม่

คุณต้องโหลดไฟล์และดำเนินการaทั้งคู่ด้วยอาร์กิวเมนต์บรรทัดคำสั่ง โปรดทราบว่าการเรียกซ้ำมีแนวโน้มที่จะได้รับการเพิ่มประสิทธิภาพให้เป็นวงวนไม่สิ้นสุดและไม่ควรทำให้กองซ้อนซ้ำ

นอกจากนี้ดูเหมือนว่าจะเป็นรอยยิ้ม แต่ฉันไม่แน่ใจว่าจะเรียกมันยังไง จุดดูเหมือนน้ำลายดังนั้นอาจเป็น "พืชพันธุ์" หรือ "โปรแกรมเมอร์ Infiurated ที่มีผมหยิก" ข้อเสนอแนะยินดีต้อนรับ


3
ตรวจสอบว่าaเป็นความจริงโดยการตรวจสอบว่าaเป็นจริงโดยการตรวจสอบว่าaเป็นจริงโดยการตรวจสอบ ... ใช่เรียกซ้ำ!
kirbyfan64sos

50

Haskellขนาด 9 ไบต์

การเรียกซ้ำไม่มีที่สิ้นสุดของฟังก์ชั่นหลัก ควรได้รับการรวบรวมเพื่อวนเนื่องจากการเพิ่มประสิทธิภาพการเรียกซ้ำหาง

main=main

1
มันรวบรวม แต่ถ้าใช้ระบบรันไทม์ตรวจพบวงและพ่น<<loop>>ยกเว้น - ghcอย่างน้อยด้วย บางทีคอมไพเลอร์อื่น ๆ อาจทำงานแตกต่างกัน
nimi

4
ทำrunhaskell Loop.hsอย่างมีความสุขมันดำเนินการเป็นเวลาหลายนาทีในเครื่องของฉัน ดังนั้นอย่างน้อยก็ทำงานได้โดยล่าม ฉันคิดว่า<<loop>>ข้อยกเว้นรันไทม์ที่ghcแสดงเป็นรายละเอียดการใช้งานจริงของรันไทม์และไม่ใช่ส่วนหนึ่งของภาษา Haskell ตามที่ระบุในรายงาน Haskell ใด ๆ
GrantS

เป็นกรณีที่ขอบ runhaskellยอมรับรหัสอย่างมีความสุข แต่ไม่วนซ้ำ มันไม่ทำอะไรเลย อย่างไรก็ตามสิ่งที่ท้าทายต้องสร้างลูปไม่ใช่เพื่อรันมันดังนั้นฉันเดาว่ามันใช้ได้ มี +1
nimi

@GrantS: ภาษา Haskell ไม่มีความคิดเช่น "วน"; คำจำกัดความที่เหมือนกันmain = mainมีความหมายในที่ฝากข้อมูลเดียวกันกับundefinedหรือerror "<<loop>>": ค่าด้านล่าง⟂
หยุดหมุนทวนเข็มนาฬิกา

1
ผมคิดว่าวง Haskell ที่สั้นที่สุดในการทำงานจะเป็น:main=main>>main
lovasoa


40

x86 เอลฟ์ที่ปฏิบัติการได้ 45 ไบต์

แตกต่างจากคำตอบส่วนใหญ่ส่วนใหญ่นี่เป็นโปรแกรมที่สมบูรณ์อย่างแท้จริงเช่นเดียวกับในโปรแกรมปฏิบัติการแบบอิสระ

00000000: 7f45 4c46 0100 0000 0000 0000 0000 0100  .ELF............
00000010: 0200 0300 2000 0100 2000 0100 0400 0000  .... ... .......
00000020: ebfe 31c0 40cd 8000 3400 2000 01         ..1.@...4. ..

ความกล้าของโปรแกรมอยู่ที่ไบต์ 0x20 ebfeซึ่งให้ความสำคัญกับคำตอบอื่น ๆ ในฐานะโปรแกรม NASM ที่เล็กที่สุด หากคุณรวมกับ NASM คุณจะได้รับไฟล์ที่มีจำนวนไบต์ที่ไม่ต้องการนับพัน เราสามารถกำจัดของที่สุดของพวกเขาโดยใช้เทคนิคที่ระบุไว้ที่นี่ คุณอาจทราบว่าโปรแกรมนี้ไม่ใหญ่เท่ากับหัวเอลฟ์! การเล่นกอล์ฟที่สามารถเรียกใช้งานได้นี้มีรูปแบบที่ผิดพลาดส่วนหัว ELF และส่วนหัวของโปรแกรมเพื่อให้สามารถใช้ไบต์เดียวกันในไฟล์และแทรกโปรแกรมของเราเป็นไบต์ที่ไม่ได้ใช้งานบางส่วนภายในส่วนหัว ลีนุกซ์จะอ่านส่วนหัวอย่างมีความสุขและเริ่มต้นการประมวลผลที่ออฟเซ็ต0x20ซึ่งจะหมุนตลอดไป


9
.comบน DOS จะสั้นมาก :)
JimmyB

1
คุณจะได้รับ "พัน" ไบต์เท่านั้นถ้าคุณให้ gcc รวมไฟล์เริ่มต้น yasm && ldทำให้ executables เพียงประมาณ 1k
Peter Cordes

37

INTERCAL, 42 18 ไบต์

(1)DO COME FROM(1)

แนวคิดที่นำมาจากความคิดเห็นของ @ flawr

แก้ไข:อึศักดิ์สิทธิ์, INTERCAL จริงสั้นกว่า C # ฉันไม่รู้ว่ามันเคยเกิดขึ้นมาก่อนหรือไม่

รุ่น 42 ไบต์

DO(1)NEXT
(1)DO FORGET #1
PLEASE DO(1)NEXT

12
กล้าวิธีการที่คุณทำโปรแกรมโดยไม่ต้อง INTERCALcomefrom
flawr

1
@flawr คงที่ ;)
kirbyfan64sos

4
Np ผมคิดว่าเราต้อง INTERCAL มากขึ้นในการแข่งขันกอล์ฟที่นี่ =)
flawr

16
คุณพูดว่าPLEASE?
Daniel M.

34

Perl , 6 ไบต์

perl -e '{redo}'

จากperldoc -f redo:

คำสั่ง redo รีสตาร์ทบล็อกลูปโดยไม่ประเมินเงื่อนไขอีกครั้ง ... โปรดทราบว่าบล็อกด้วยตัวเองนั้นมีความหมายเหมือนกับลูปที่ดำเนินการเพียงครั้งเดียว ดังนั้นการทำซ้ำภายในบล็อกดังกล่าวอย่างมีประสิทธิภาพจะทำให้มันกลายเป็นโครงสร้างวนลูป

ฉันไม่เห็นredoรหัสการผลิตบ่อยเกินไป แต่มันยอดเยี่ยมสำหรับการเล่นกอล์ฟ! เปรียบเทียบด้านบนเพื่อเทียบเท่ากับที่สั้นที่สุดfor, whileและgoto:

for(;;){} # 9 bytes
1while 1  # 8 bytes
X:goto X  # 8 bytes

1
codegolf.stackexchange.com/a/59553/30206แนะนำ 4-byte do$0ซึ่งใช้งานไม่ได้ในแบบperl -eเดียว
Peter Cordes

@PeterCordes เรียบร้อยแม้ว่าฉันคิดว่าการแบ่งกฎ "ต้องไม่มีการป้อนข้อมูล" do EXPRอ่านจากไฟล์
ThisSuitIsBlackNot


32

> <> , 1 ไบต์

 

ช่องว่างเดียวจะทำให้> <> เข้าสู่วงวนไม่สิ้นสุดของ NOP

โปรแกรมอักขระเดี่ยวอื่น ๆ ที่ใช้ได้ (ไม่มีข้อกำหนดด้านหน่วยความจำ) มีดังนี้:

>^v</\|_#x!"'{}r

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

01234567890abcdefli

11
ลอง` `บล็อกรหัส
TheNumberOne

2
ทำไมไม่ใช้เพียง>?
mbomb007

4
หากนี่คือ Chem.SE ฉันขอแนะนำให้ใส่รหัสใน MathJax ด้วย
hBy2Py

เราแน่ใจหรือว่าโปรแกรมเปล่าจะไม่วนซ้ำไม่สิ้นสุด?
Aaron

1
รับข้อผิดพลาดรันไทม์ที่พยายามเรียกใช้โปรแกรมเปล่า: Traceback (การโทรล่าสุดครั้งล่าสุด): ไฟล์ "fish.py", บรรทัด 493, ใน <module> instr = interpreter.move () ไฟล์ "fish.py", บรรทัด 149, ย้ายถ้า self._position [1]> max (self._codebox.keys ()): ValueError: max () arg เป็นลำดับที่ว่างเปล่า
Fongoid

31

รหัสเครื่อง Motorola MC14500B , 0.5 0 ไบต์



คำอธิบาย

ตามคู่มือแล้วระบบได้รับการกำหนดค่าให้มีโครงสร้างการควบคุมการวนซ้ำ ตัวนับโปรแกรมนับได้ถึงค่าสูงสุดวนกลับไปเป็นศูนย์และนับใหม่อีกครั้ง


3
ฉันเชื่อว่าคุณได้พบภาษาการเล่นกอล์ฟขั้นสูงสุดอย่างน้อยสำหรับงานเล็ก ๆ ... แม้แต่ Pyth ก็ไม่สามารถทำให้สั้นลงได้ +1
ETHproductions

ถูกเตือนว่าสิ่งนี้จะปรากฏขึ้นเป็น 5 ไบต์บนสกอร์บอร์ด
Addison Crump

C คือ Jump แต่จะกระโดดที่ไหน?
Kishan Kumar

3
ว้าวคุณชอบภาษานี้จริงมั้ย : P
MD XF

สิ่งนี้จะทำงานในภาษาเครื่องใดก็ได้โดยที่ 0 คือ NOP ตัวชี้คำสั่งล้อมรอบและหน่วยความจำของโปรแกรมจะไม่เก็บข้อมูลเพิ่มเติมใด ๆ
12Me21

30

LOLCODEขนาด 24 ไบต์

IM IN YR X
IM OUTTA YR X

3
ในล่าม LOLCODE จำนวนมากเช่นอันที่ repl.it HAIและKTHXBYEไม่จำเป็น
Alex A.

1
@AlexA โอ้ไม่รู้ด้วยซ้ำ ขอบคุณ
daniero

29

C, 15 ไบต์

main(){main();}

ใช่เป็นไปได้ที่จะโทรmain()ซ้ำ หากคุณมีคอมไพเลอร์ที่จะเพิ่มประสิทธิภาพของหางโทร (พูด, gcc กับที่-O2ตัวเลือก) ก็ไม่ได้แม้กระทั่ง segfault: gotoคอมไพเลอร์จะฉลาดพอที่จะเปิดสายงานเป็น


4
หากคุณไม่สามารถให้คอมไพเลอร์ที่ทำสิ่งนี้เป็นค่าเริ่มต้นคุณจะต้องเพิ่ม 3 ไบต์สำหรับ-O2ตัวเลือก
LegionMammal978

19
@ LegionMammal978 ตามกฎในการท้าทายหน่วยความจำไม่เพียงพอ นั่นทำให้การ-O2เพิ่มประสิทธิภาพเป็น "ที่ดีที่จะมี" มากกว่าความต้องการ
ทำเครื่องหมาย

1
หากอนุญาตให้ใช้ตัวเลือกคอมไพเลอร์ (และไม่ถูกนับสำหรับวิธีการนับ) ดังนั้นทำไมไม่เปลี่ยนรหัสl(){l();}และคอมไพล์ด้วยตัวเลือก-Dl=main -O2
wendelbsilva

1
สำหรับการเปรียบเทียบที่ไม่เวียนเกิดการดำเนินการที่เหมาะสมห่วงที่สุดคือ main(){for(;;);}16B:
Peter Cordes

3
@wendelbsilva คุณสามารถจับมันได้มากขึ้นโดยเปลี่ยนรหัสเป็น X (เพียงหนึ่งไบต์) และคอมไพล์ด้วย -DX = main () {main ();}
LeFauve

26

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

"

โปรแกรม labrinth จะรันคำสั่งเดียวกันซ้ำแล้วซ้ำอีกหากไม่มีเพื่อนบ้าน พวกเขายังไม่จบจนกว่าพวกเขาจะดำเนินการตาม@คำสั่ง


25

เป็นกลุ่ม 7 การกดแป้น

เปิดเอดิเตอร์โดยควรไม่มีสคริปต์ที่โหลดตัวอย่างเช่นสิ่งนี้จากบรรทัดรับคำสั่ง: vim -u NONE

qq@qq@q

Vimscript, 15 8 ไบต์

เพิ่มในสคริปต์หรือเรียกใช้โดยตรงโดยกดปุ่มโคลอน ( :) ก่อนในขณะที่คุณอยู่ในโหมดปกติ

wh1|endw

1
vimscript ของคุณยาวไปสักหน่อยwh1|endw
FDinoff

คุณช่วยอธิบายวิธีนี้ใช้ได้กับคนที่ไม่คุ้นเคยกับ Vim หรือไม่?
iFreilicht

8
@iFreilicht qqเริ่มบันทึกลงในqบัฟเฟอร์ @qทำซ้ำสิ่งที่อยู่ในqบัฟเฟอร์ (ณ จุดนี้ไม่มีอะไร) qหยุดการบันทึกแล้ว@qไกลอะไรในบัฟเฟอร์ซึ่งในจุดนี้คือการกดแป้นพิมพ์q @qดังนั้น@qไกล@qไกล@q.... การเขียนสิ่งนี้qทำให้สมองของฉันเจ็บปวด
Wayne Werner

25

เรติน่า 3 ไบต์

+`0

หากได้รับไฟล์เดียวเรตินาจะใช้ขั้นตอนนับแทนการป้อนข้อมูลด้วยจำนวนการจับคู่ที่พบสำหรับ regex ที่กำหนด นี่ regex 0คือ ตอนนี้+วนรอบตราบเท่าที่ผลลัพธ์เปลี่ยนจากการวนซ้ำก่อนหน้า แล้วเกิดอะไรขึ้นกันแน่?

  • 00ถูกจับคู่กับการป้อนข้อมูลที่ว่างเปล่าให้เป็นศูนย์การแข่งขันดังนั้นผลที่ได้คือ สิ่งนี้แตกต่างจากอินพุตดังนั้นเราจึงเรียกใช้อีกครั้ง
  • 0ถูกจับคู่กับการส่งออกที่ผ่านมา0ซึ่งขณะนี้จะช่วยให้หนึ่งในการแข่งขัน ... 1ดังนั้นผลที่ได้คือ
  • 0ถูกจับคู่กับการส่งออกก่อนหน้านี้1ซึ่งล้มเหลว ... 0ดังนั้นผลที่ได้คือ
  • ... คุณได้รับความคิด

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

โดยค่าเริ่มต้น Retina เพียงครั้งเดียวเอาท์พุทโปรแกรมยุติดังนั้นนี้อะไรไม่พิมพ์ (คุณสามารถเปลี่ยนพฤติกรรมนี้โดยการเพิ่ม>หลัง+, ซึ่งจากนั้นจะพิมพ์เลขสลับและคน )

ในฐานะของ 1.0, Retina จริง ๆ แล้วยังมี while-loops แบบดั้งเดิมมากขึ้น, ซึ่งคุณสามารถใช้กับระยะที่ง่ายกว่า (ซึ่งไม่ได้เปลี่ยนสตริงตลอดเวลา), แต่จริง ๆ แล้วพวกเขาต้องการไบต์มากกว่า. ทางเลือกหนึ่งคือ:

//+`

1
ว้าวฉันเพียงแค่ตอบเกือบสิ่งที่แน่นอนในอาร์เอสในเวลาเดียวกันแน่นอน
kirbyfan64sos

1
@ kirbyfan64sos พวกเขาดูคล้ายกันมาก แต่จริงๆแล้วพวกเขาทำงานแตกต่างกันมาก :)
Martin Ender

งานที่ดี. ฉันกำลังจะลองทำโปรแกรมเรตินาที่สั้นที่สุดในโหมดแทนที่ ฉันอยากรู้อยากเห็นสามารถ+`จับคู่การป้อนข้อมูลที่ว่างเปล่าซ้ำแล้วซ้ำอีก?
mbomb007

@ mbomb007 ฉันคิดว่ามันจะจบลงด้วยการ2ทำซ้ำหลังจากนั้นไม่กี่
Martin Ender

24

พื้นฐาน (QBasic 4.5), 10 5 3 ไบต์

ในภาษาการเขียนโปรแกรม BASIC RUN ใช้เพื่อเริ่มการทำงานของโปรแกรมจากโหมดโดยตรงหรือเพื่อเริ่มโปรแกรมโอเวอร์เลย์จากโปรแกรมโหลดเดอร์ - วิกิพีเดีย

แก้ไข: ใช้งานได้โดยไม่มีหมายเลขบรรทัดใน QBasic 4.5 ตามที่ @steenbergh

RUN

นี่คือรุ่นแรกที่ฉันโพสต์ วง GOTO ไม่มีที่สิ้นสุด นอกจากนี้มันคือ 10 ไบต์ซึ่งเป็นเรื่องบังเอิญที่ดี!

10 GOTO 10

13
ทำไมหมายเลขบรรทัด 10 ทำไมไม่ 9
เรียกซ้ำ

25
หรือ 8 สำหรับ 8 ไบต์? :)
MickyT

3
มันจะไม่ชนะและสนุกกว่ากัน
CJ Dennis

3
สิ่งนี้สามารถ
ย่อ

2
@davidjwest Shortest ที่ฉันสามารถทำได้ใน Sinclair BASIC คือ: 1 GOTO SIGNUM PI- เนื่องจาก ints คงที่จะถูกเก็บไว้ในหน่วยความจำสองครั้งเป็นกางเกงขาสั้นดังนั้น 1 จะเป็น 4 ไบต์ แต่ SIGNUM และ PI ใช้เพียงไบต์เดียวเท่านั้น Ah, เทคนิคการเข้ารหัสแบบเก่าที่เราเคยใช้: D ไม่แน่ใจว่ามีหมายเลขบรรทัดหน่วยความจำเท่าใดถ้ามีดังนั้นสิ่งที่ฉันพูดได้ก็คือ 3+ (ที่เก็บหมายเลขบรรทัด)
Dewi Morgan

23

TIS Node Type T21 Architecture ขนาด 6 ไบต์

โหนดเดียวที่มี NOP เขียนอยู่

Tessellated Intelligence System โหนดจัดเป็นโหนด "การประมวลผล" หรือ "ที่เก็บข้อมูล" โหนดการจัดเก็บเพียงแค่จัดเก็บและดึงข้อมูลและไม่เกี่ยวข้องในกรณีนี้ ที่เหลือคือโหนดการประมวลผล Node Type T21 หรือ Node Basic Execution เป็นวิธีที่ใช้กันทั่วไปและเรียบง่ายที่สุด (ตามที่ชื่อแนะนำ)

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

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

เนื่องจากข้อ จำกัด เหล่านี้โหนด TIS มีวัตถุประสงค์เพื่อใช้โดยทั่วไปดังนี้:

  1. รับอินพุต
  2. ทำอะไรกับมัน
  3. ผ่านมัน
  4. กลับไปที่ขั้นตอนที่ 1

ด้วยเหตุนี้พื้นที่ที่ จำกัด สำหรับคำแนะนำและความจริงที่ว่าโหนดรออย่างเงียบ ๆ และไม่ทำให้เกิดปัญหาเมื่อพยายามอ่านอินพุตที่ไม่มีการตัดสินใจในการออกแบบที่ทำให้พวกเขาดีมากสำหรับความท้าทายนี้ ฉันจะอ้างอิงจากคู่มืออ้างอิงของ TIS-100:

หลังจากดำเนินการคำสั่งสุดท้ายของโปรแกรมแล้วการดำเนินการต่อไปยังคำสั่งแรกโดยอัตโนมัติ

ที่สมบูรณ์แบบ! วงวนไม่สิ้นสุดเป็นค่าเริ่มต้นสำหรับโหนด TIS

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

 RUN‌ - I am executing an instruction.
READ - I am reading from a port, waiting for it to be written to.
WRTE - I am writing to a port, waiting for it to be read from.
IDLE - I am doing nothing.

ปรากฎว่าเนื่องจากแต่ละโหนดเป็นคอมพิวเตอร์ส่วนบุคคลพวกเขามีความสามารถในการพิจารณาว่าพวกเขามีคำแนะนำในการดำเนินการหรือไม่ ถ้าไม่พวกเขายังคงอยู่ในIDLEสถานะ (น่าจะประหยัดพลังงาน) เช่นนี้ฉันไม่สามารถสำนึกผิดชอบชั่วดีอ้างว่ามันเป็น "การวนซ้ำ"; ค่อนข้างแต่ละโหนดนั่งเงียบ ๆ สมมติว่าคนอื่น ๆ กำลังทำสิ่งที่สำคัญ

โปรแกรมนี้ที่ผมเคยส่งเป็นจริงวง จำกัด RUNเช่นการดำเนินการจะกำหนดสถานะของโหนดไปยัง มันเป็นเรื่องง่ายอย่างที่คุณคาดหวังNOPดำเนินNo OPeration เมื่อมันไม่ทำอะไรเลยการประมวลผลจะกลับไปที่ด้านบนของรหัส: NOP.

หากคุณพบว่ามันไม่ทำให้พอใจที่ฉันเหยียดหยามสถาปัตยกรรม T21 เพื่อสร้างห่วงผมจะนำเสนอวิธีการแก้ปัญหาอื่นที่ค่าใช้จ่ายของ 2 JRO 0ไบต์: JROหมายถึงJump Relative โดยไม่Oต้องมีลำดับ หรือบางสิ่งบางอย่างฉันเดา ไม่มีคำแนะนำแบบขยายที่ตกลงกันไว้ อย่างไรก็ตามJROรับอาร์กิวเมนต์ตัวเลขและข้ามการดำเนินการตามจำนวนเงินที่สัมพันธ์กับตำแหน่งปัจจุบัน ตัวอย่างเช่นJRO 2ข้ามคำสั่งที่ตามมา (มีประโยชน์หากคำสั่งนั้นถูกข้ามไปที่อื่น) กระโดดไปข้างหน้าหนึ่งสอนทำให้มันเป็นJRO 1 ข้ามคำสั่งกลับไปหนึ่งคำสั่งปฏิบัติตามคำสั่งก่อนหน้าอย่างมีประสิทธิภาพทุกๆสองรอบจนกว่าโปรแกรมจะหยุด และแน่นอนว่า,NOPJRO -1JRO 0 กระโดดไปที่ตัวเองดำเนินการตัวเองตลอดไป

ณ จุดนี้คุณอาจกำลังคิด:

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

เป็นคำถามที่ดีขอบคุณสำหรับการถาม อาจคิดอย่างไร้เดียงสาว่าโปรแกรม TIS ควรนับด้วยวิธีเดียวกับที่เรานับโปรแกรมในหลายไฟล์: จำนวนไบต์ในทุกโหนดรวม 1 ไบต์สำหรับแต่ละโหนดเพิ่มเติมหลังจากโหนดแรก อย่างไรก็ตามชุมชนนักกอล์ฟของ TIS ได้ตัดสินใจว่าสิ่งนี้จะไม่ยุติธรรมด้วยเหตุผลง่ายๆว่าจะเพิกเฉยต่อข้อมูลบางส่วนที่จำเป็นในการสร้างโซลูชันใหม่ เพื่อนบ้านของโหนดนั้นสำคัญมากและวิธีการให้คะแนนจะให้ข้อมูลตำแหน่งฟรีแก่คุณ เราได้นำรูปแบบที่ใช้โดยโปรแกรมจำลอง TIS ที่ใช้กันทั่วไปมาใช้แทนTIS-100. (หมายเหตุด้านข้าง: โปรดอย่าตั้งชื่ออีมูเลเตอร์หลังจากระบบที่เลียนแบบมันไม่ฉลาดมันน่ารำคาญและทำให้ทุกคนต้องชี้แจงสิ่งที่พวกเขากำลังพูดถึงอยู่ตลอดเวลา) มันง่ายมาก: 12 โหนดของ TIS-100 อุปกรณ์ถูกกำหนดหมายเลขจากซ้ายไปขวาและบนลงล่างข้ามโหนดที่เก็บข้อมูลใด ๆ ที่ระบบจำลองได้ติดตั้งไว้ โหนดNที่มีหมายเลข# CODE\n# CODE\n CODEถูกบันทึกเช่น:

@N
# CODE
# CODE
# CODE

ดังนั้นโหนดที่มีหมายเลข 0 NOPจะได้รับคะแนนตามรูปแบบนี้:

@0
NOP

หกไบต์

ขณะที่ผมมักจะรวมอยู่ในคำตอบของฉันในภาษาสายตาที่น่าสนใจที่คุณสามารถชมการจำลอง TIS-100 รันโปรแกรมนี้ใน YouTube แม้ว่าการพิจารณาว่าสิ่งที่ท้าทายนี้คืออะไรฉันไม่รู้ว่าคุณคาดหวังที่จะเห็นอะไร ...


ว้าวจ นั่นช่างยอดเยี่ยม
Adrian Zhang

ฉันมักจะคิดว่าJROยืนสำหรับJ ump ถึงR elative O ffset
MutantOctopus

@BHustus ฉันคิดว่าคุณพูดถูก แต่ฉันเคยเขียนสิ่งนี้มาก่อนฉันเคยมีประสบการณ์กับภาษาแอสเซมบลีอื่น ๆ และฉันก็ไม่รู้ศัพท์แสง
undergroundmonorail

ฉันหวังว่าฉันจะตอบได้ 10 ข้อนี้ ฉันรัก TIS-100
Shirkam

ผมเขียนโปรแกรมจำลองของมอกของตัวเองดังนั้นตอนนี้คุณสามารถลองออนไลน์ อย่าคาดหวังอะไรมากนอกจากการหมดเวลา
Phlarx

22

C # , 38 37 36 ไบต์

class B{static int Main(){for(;;);}}

สำหรับลูปโดยไม่มีเงื่อนไขการหยุด

การกลับมาของหลักควรเป็น int แต่เนื่องจากมันจะไม่ถึงจุดสิ้นสุดซึ่งควรรวบรวม (ทดสอบใน VS 2015 และ 2013 ยังใช้งานได้ในIdeone ) ขอบคุณGeobitsและไมเคิล

รุ่นที่สั้นกว่าขนาด35ไบต์สามารถทำได้ แต่พิมพ์Process is terminated due to StackOverflowExceptionที่ฉันเชื่อว่าละเมิดจุดที่สามที่ไม่พิมพ์อะไรไปยัง stderr มอบเครดิตให้MichaelB

class B{static int Main()=>Main();}

1
คุณสามารถบันทึกได้โดยใช้;แทน{}หรือไม่ ฉันจะทดสอบ แต่บริการออนไลน์ไม่ชอบลูปมากมาย
Geobits

@Geobits อ่าใช่ สิ่งที่เรียบง่ายเช่นนั้นลื่นไถลไป
Sven Writes Code

1
มันอาจขึ้นอยู่กับคอมไพเลอร์ แต่ฉันบันทึกตัวละครอีกตัวโดยประกาศว่ามันเป็น int main และมันรันโดยไม่มีคำสั่ง return ฉันใช้ Microsoft Visual C # 2013 เวอร์ชันชุมชน 12.0.31101.00 อัปเดต 4 "คลาส A {static int Main () {สำหรับ (;;);}}"
MichaelS

@MichaelS ขอบคุณ! ทำงานในปี 2558 กับฉัน
Sven Writes Code

1
ในข้อ 15 อาจจะสั้นกว่านี้ (แทบจะไม่) 35class B{static int Main()=>Main();}
Michael B


20

Hexagony , 1 ไบต์

.

ฉันไม่รู้อะไรมากเกี่ยวกับภาษาที่ยอดเยี่ยมนี้ที่สร้างโดย @ MartinBüttner แต่จากสิ่งที่ฉันได้เห็นมันน่าจะวนซ้ำ@ไปเรื่อย ๆเนื่องจากไม่มีการหยุดโปรแกรม .เป็นเพียงแค่ไม่มีการ op


3
ทำไมคุณไม่ทดสอบ: D
วัวนักต้มตุ๋น

7
ฉันสามารถยืนยันได้ว่านี่ถูกต้อง :)
Martin Ender

@KritixiLithos เพราะฉันไม่พบล่ามออนไลน์และฉันไม่ต้องการดาวน์โหลดล่ามสำหรับทุกภาษาที่ฉันต้องการทดสอบ ;)
ETHproductions


1
TIO แสดงให้เห็นว่าโปรแกรมทำงานที่ว่างเปล่า
Weijun Zhou

20

Perl, 4 ไบต์

do$0

ดำเนินการเองซ้ำแล้วซ้ำอีก


1
เด็ดมาก ตอนแรกฉันคิดว่าสิ่งนี้เป็นการละเมิดกฎ "ไม่ต้องรับอินพุต" เนื่องจากdo EXPRอ่านจากไฟล์ซึ่งในทางเทคนิคแล้วจะเป็นอินพุต แต่ OP อธิบายว่าไฟล์ I / O นั้นเป็นที่ยอมรับ สิ่งที่เจ๋งจริง ๆ ก็คือไม่เหมือนใน Bash ซึ่งไม่ได้แยกกระบวนการใหม่ดังนั้นมันจะดำเนินต่อไปเรื่อย ๆ โดยไม่ต้องกดปุ่มหน่วยความจำหรือกระบวนการ จำกัด
ThisSuitIsBlackNot

18

Gammaplex , 0 ไบต์

ใน Gammaplex เป็นไปไม่ได้ที่จะเขียนโปรแกรมที่ไม่วนซ้ำไม่สิ้นสุด ดังนั้นฉันแค่เขียนโปรแกรมที่ไม่ได้ใช้อินพุต / เอาต์พุต


กฎระบุว่าต้องมีการวนซ้ำไม่สิ้นสุดเพื่อให้มีคุณสมบัติ
arodebaugh

@arodebaugh มี กล่าวอีกนัยหนึ่งมีการวนซ้ำไม่สิ้นสุดในทุกโปรแกรม Gammaplex
jimmy23013


16

bash + BSD coreutils, 23 22 14 6 5 6 ไบต์

yes>&-

yesเอาต์พุต "y" ถาวร; >&-ปิด STDOUT

ขอบคุณ @Dennis และ @ThisSuitIsBlackNot สำหรับความช่วยเหลือในการลดขนาด!


4
ด้วย bash คุณสามารถทำได้$0ใน shellscript และรันมันมันจะเรียกใช้ตัวมันเองตลอดไป
TessellatingHeckler

1
ความคิดสร้างสรรค์ แต่น่าเบื่อเก่าwhile :;do :;doneมีเพียง 17 ไบต์
ThisSuitIsBlackNot

3
ping>&- 0ทำงานบน Linux ซึ่ง0ถูกแมปไปยัง localhost
เดนนิส

1
yes! (ฉันคิดเกี่ยวกับการใช้yesแต่มันไม่ได้เกิดขึ้นกับฉันที่จะทิ้งผลลัพธ์) คุณสามารถบันทึกหนึ่งไบต์ด้วยyes>/dev/null
ThisSuitIsBlackNot

3
ฉันไม่ทราบว่า ถ้ามันทำงานร่วมกับ BSD ใช่ดี แต่ผมไม่คิดว่าการเขียนไปยังแฟ้มสอดคล้องกับการผลิตการส่งออกไม่มี
เดนนิส

15

เสียงกระเพื่อมสามัญ 6 ตัว

(loop)

44
มีบางอย่างเช่นLisp ที่หายากหรือไม่
ข้อบกพร่อง

10
@flawr ฉันจะสมมติว่ามันเป็นเพียงความคิดเห็นที่น่าขบขัน แต่ Common LISP เป็นผลมาจากกระบวนการมาตรฐานที่รวมภาษาที่เข้ากันได้เป็นส่วนใหญ่ แต่ไม่เข้ากับภาษาตระกูล Lisp เข้าด้วยกัน ภาษาในตระกูล Lisp ที่ไม่ใช่ Lisp ทั่วไป ได้แก่ Scheme, Racket, Emacs Lisp และ Clojure
Joshua Taylor

นอกจากนี้ยัง (อีกนิด แต่ถ้าเราไม่ได้มีการนับ parens ก็ต้องการจะเพียงสอง (do()(()))bytes):
Joshua Taylor

@JoshuaTaylor ฉันคิดdoเช่นกันและเกี่ยวกับการทำให้ผู้อ่านดำเนินไปอย่างไม่สิ้นสุด แต่ฉันไม่เห็นว่าจะทำอย่างไรในไม่ช้า (loop)มันดูเหมือนว่าจะไม่มีอะไรเต้น
coredump

@JoshuaTaylor ถ้าคุณไม่ได้นับ parens กระเพื่อมจะเป็นภาษา golfiest ของพวกเขาทั้งหมด
Cyoce

13

ฟิชชัน 1 ไบต์

มีโซลูชันหนึ่งไบต์ที่ 4 ทั้งหมด:

R
L
U
D

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

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