출력이없는 최단 무한 루프


121

당신의 임무는 가장 짧은 무한 루프를 만드는 것입니다!

이 과제의 핵심은 가능한 중복과 달리 출력을 생성하지 않는 무한 루프를 만드는 것입니다. 출력이 제공되지 않으면 코드가 더 짧을 수 있기 때문입니다.

규칙

  • 각 제출물은 전체 프로그램이어야합니다.
  • 가장 짧은 무한 루프를 작성해야합니다.
  • 프로그램에 결국 메모리가 부족하더라도 처음부터 메모리가 부족할 때까지 계속 실행되는 한 계속 허용됩니다. 또한 메모리가 부족한 경우에도 STDERR에 아무것도 인쇄하지 않아야합니다.
  • 프로그램은 입력하지 않아도되지만 (파일 읽기는 허용됨) STDOUT에 아무것도 인쇄하지 않아야합니다. 파일로의 출력도 금지됩니다.
  • 프로그램은 STDERR에 아무것도 쓰지 않아야합니다.
  • 이 도전보다 새로운 언어라도 언어 (또는 언어 버전)를 자유롭게 사용하십시오. -제출을 테스트하려면 통역사가 있어야합니다. 이전에 구현되지 않은 언어에 대해이 통역사를 직접 작성할 수 있습니다. :디
  • 제출은 적절한 (기존) 인코딩, 일반적으로 UTF-8과 같은 바이트 단위로 점수가 매겨집니다. 폴더와 같은 일부 언어는 점수를 얻기가 약간 까다 롭습니다. 확실하지 않은 경우 메타에 문의하십시오.
  • 이것은 가장 짧은 무한 루프 프로그램으로 언어를 찾는 것이 아닙니다. 이것은 모든 언어에서 가장 짧은 무한 루프 프로그램을 찾는 것입니다. 따라서 답변을받지 않습니다.
  • 선택한 언어가 이미 대답이있는 다른 (잠재적으로 더 널리 사용되는) 언어의 사소한 변형 인 경우 (기본 또는 SQL 방언, Unix 쉘 또는 Alphuck과 같은 사소한 Brainf ** k 파생어를 생각하십시오) 기존에 메모를 추가하십시오 동일하거나 매우 유사한 솔루션은 다른 언어에서도 가장 짧습니다.
  • 언어에 대한 Wikipedia, Esolangs 또는 GitHub와 같은 웹 사이트가 있어야합니다. 예를 들어, 언어가 CJam 인 경우 다음과 같이 헤더의 사이트에 링크 할 수 있습니다 #[CJam](http://sourceforge.net/p/cjam/wiki/Home/), X bytes.
  • 표준 허점은 허용되지 않습니다.

(Martin Büttner의 "Hello World"챌린지에서 이러한 규칙 중 일부를 가져 왔습니다.)


이 도전을 어떻게 개선 할 수 있는지 의견을 적어주십시오.

목록

사용 된 언어의 사전 순 카탈로그와 전체 리더 보드를 생성하는 스택 스 니펫입니다. 답변이 표시되도록하려면 다음 Markdown 헤더로 시작하십시오.

# Language name, X bytes

물론 교체 Language nameX 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 바이트 언어를 제공하기 때문에 흥미 롭습니다 (일부는 esolang이 아닙니다). FWIW의 경우 선언적 언어에는 구문에 루프가 없기 때문에 대부분의 선언적 언어에는 암시 적 무한 루프가 있습니다 (무한 루프에서 실행한다고 가정). 사다리 다이어그램은 아마도 가장 오래된 언어 중 하나 일 것입니다. 그런 다음 무한 루프를 가정하는 PLC를위한 일종의 어셈블리 인 명령어 언어 (IL)가 있습니다. 조립과 같은 IL은 제조업체마다 다릅니다.
slebetman

자체 소스 코드를 읽고 실행하는 프로그램이 허용됩니까, 아니면 파일 I / O가 "입력을하지 않아도됩니다"규칙을 위반합니까?
ThisSuitIsBlackNot

1
@ThisSuitIsBlackNot 예, 파일 입력이 허용됩니다.

""빈 문자열 을 인쇄 할 수 있습니까 ?
OldBunny2800

답변:


216

Befunge , 0 바이트



예. Befunge 프로그램 은 가장자리를 감싸는 고정 된 크기 의 2 차원 운동장에 존재 합니다. 그 공간에 방해 할 것이 없으면 프로그램 카운터 는 기본적으로 무한 루프로 실행됩니다.


10
아, 나는 이것을 게시하려고했다. : /
Deusovi

5
@daniero이 일부 관련있을 수 있습니다 ...이 표준 허점을 . 나는 개인적으로 표준 허점에 동의하지 않습니다.
Justin

17
@Justin 허점은 특정 유형의 문제에만 적용됩니다.
Dennis

1
<pre>&nbsp;</pre>빈 코드 블록에 사용할 수 있습니다 .
immibis

내가 찾은 첫 번째 것
Dylan Madisetti

150

L00P , 0 바이트



이 랭은 루핑을 위해 만들어졌으며, 그것이 할 것입니다 ...


15
LOL. 언어 선택 +1
ETHproductions

76
... 요즘이 언어 중 하나는 당신 전체를 반복합니다
Pål GD

3
음악 참조 +1, 또 다른 금 배지를 축하합니다!
Luis Mendo

내가 본 최고의 참고 자료
Christopher

138

C64 기계 코드 , 2 바이트

D0 FE

제로 플래그가 설정되지 않은 경우 자체로 분기합니다.

분기는 다음 명령어 위치에서 단일 바이트 오프셋이며 254는 2의 보수에서 -2입니다. BNE 명령어 (D0)는 1 바이트의 메모리를 사용하고 오프셋은 두 번째 바이트를 사용하므로 2 바이트를 다시 분기 그 자체로. 코드가 메모리에로드되면 항상 제로 플래그가 지워집니다.

이것은 재귀 서브 루틴 호출이 아니므로 메모리가 부족하지 않습니다. 또한 헤더, 컴파일러 또는 실행 가능한 오버 헤드가 없습니다. 실제로 2 바이트 프로그램입니다.


13
C64뿐만 아니라 6502/6510 제품군 프로세서가 장착 된 시스템에서는이 기능을 사용할 수 없습니까? 또한 작성한 것은 기계 코드입니다. 회의는 다음과 같습니다BNE -2
Level River St

55
구조를 표현할 수있는 가장 작은 문자를 갖는 가장 모호한 언어를 찾으려고하는 대신 작은 실제 프로그램을 작성하는 데 +1
Knetic

1
@ user45891 EB FE는 x86입니다. 6502/6510에는 무조건 짧은 점프 명령이 없습니다.
Random832

2
Steveverrill, touché, 그것은 실제로 기계 코드입니다. 그리고 네, 일반적으로 65xx 제품군보다 Commodore 64를 더 많은 사람들이 인식 할 것이라고 생각했습니다. 기술적으로 1541 플로피 드라이브는 ... 컨트롤러를 다시 프로그래밍 할 수 있다는 것을 모호하게 기억합니다. 아, 난 여전히 내 C64를 그리워 :)
제임스 킹

7
예전에는 고객이 의심하지 않는 컴퓨터 상점 소유자에게 행하는 불쾌한 "트릭"(imho vandalism)은 부트 로더가 시작될 때 DOS를 사용하여 X86 용으로 2 바이트를 배치하는 것이 었습니다 debug. 이것은 효과적으로 기계를 약화시킬 것이고, 대부분의 상점 직원은 그것이 단지 죽은 드라이브가 아니라는 것을 알고 있다는 소문이 없었습니다.
Dewi Morgan

105

Brainfuck, 3 바이트

+[]

절대 감소 : 절대 끝나지 않습니다.


62
BF가 대부분의 다른 답변을 이길 때 재밌습니다.
Rohcana

SE의 시작 페이지에서 질문을 보았을 때 이것을 생각해야했습니다.
s3lph

1
나의 첫번째 생각은 BF이었다! : D 생각보다 짧았다.
앙드레 크리스토퍼 앤더슨

1
대안, 여전히 동일한 바이트 :-[]
Unihedron

1
어딘가에 통역사가 있다고 ]생각합니다.
12Me21

102

/// , 3 바이트

///

언어 이름을 소스 코드로 사용하면 보너스 포인트가 있습니까?


71
나는 그것이로 끝나는 방법으로보고, 링크가 실제로 작동하는지 솔직히 놀랐어요 ///)
ETHproductions

@ETHproductions 그것은 놀랍지 만, 조금 더 생각해 보면 어떤 의미가 있습니다. 그것은 단지 URL입니다esolangs.org wiki _ _ _ _
HyperNeutrino

12
@AlexL. 전체는 아니고. 웹 서버는에 대한 GET 요청을 봅니다 /wiki////. 그것이 경로가되기 위한 것이지만 , 서버는 원하는 정보를 가지고 그 정보를 사용할 수 있습니다.
Dennis

73

자바 , 53 바이트

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

예, 전체 프로그램 요구 사항!


78
신은 그 장황한 ...
mınxomaτ

4
@minxomat Yep, 비어있는 경우 45 바이트 main:(
Geobits

3
@minxomat는 OOP를 좋아해야합니다
Luke

55
OO가 아닙니다. 수업에 코드를 넣는다 고해서 전자 레인지에 바위를 넣는 것만으로도 음식을 만들 수 없습니다.
imallett


56

프롤로그, 5 바이트

a:-a.

술어 a가 참 인지 알기 위해서는 술어 가 참 인지 확인하면됩니다 a.

파일을로드하고 실행해야합니다. a명령 줄 인수 . 재귀는 무한 루프로 최적화 될 가능성이 높으며 스택을 날려 버리지 않아야합니다.

또한 이것은 웃는 것처럼 보이지만 어떻게 전화 해야할지 모르겠습니다. 점은 타액처럼 보이므로 "식물 상태"또는 "곱슬 머리가있는 불쾌한 프로그래머"일 수 있습니다. 제안은 환영합니다.


3
... yay 재귀를 확인하여 true 인지 확인하여 true a인지 확인하여 true 인지 확인하십시오 ! aa
kirbyfan64sos

50

하스켈 , 9 바이트

주요 기능의 무한 재귀. 꼬리 재귀 최적화로 인해 루프로 컴파일되어야합니다.

main=main

1
컴파일되지만 런타임 시스템이 실행되면 루프를 감지하고 <<loop>>적어도 예외를 발생 ghc시킵니다. 다른 컴파일러는 다르게 동작 할 수 있습니다.
nimi

4
이렇게 runhaskell Loop.hs행복은 내 컴퓨터에 몇 분 동안 그것을 실행. 따라서 적어도 인터프리터가 실행할 수 있습니다. 내가 생각하는 <<loop>>런타임 예외 ghc하스켈 보고서의에 지정된대로 던져 순수 하스켈 언어의 런타임이 아닌 부분의 구현 세부입니다.
GrantS

엣지 케이스입니다. runhaskell행복하게 코드를 받아들이지 만 반복하지는 않습니다. 아무것도하지 않습니다. 그러나 challange는 루프를 실행하지 않고 루프를 작성하기 만하면되므로 괜찮습니다. +1하십시오.
nimi

@GrantS : Haskell 언어에는 "루프"와 같은 개념이 없습니다. 와 같은 정의 main = main는 의미 적으로 undefinedor 와 같은 버킷에 있습니다 error "<<loop>>": bottom values ​​⟂.
반 시계 회전을 중지

1
가장 짧은 작업 haskell 루프는 다음과 같습니다.main=main>>main
lovasoa


40

x86 ELF 실행 파일, 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 헤더만큼 크지 않습니다. 이 실행 가능한 골프는 ELF 헤더와 프로그램 헤더를 변형하여 파일에서 동일한 바이트를 차지하고 헤더 내에서 사용되지 않는 바이트에 프로그램을 삽입합니다. 리눅스는 여전히 행복하게 헤더를 읽고 0x20영원히 회전하는 오프셋 에서 실행을 시작 합니다.


9
.comDOS에서 훨씬 짧을 것입니다 :)
JimmyB

1
gcc가 시작 파일을 포함하게한다면 "수천"바이트 만 얻을 수 있습니다. yasm && ld실행 파일을 약 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
인터 칼 프로그램없이 어떻게 감히comefrom
flawr

1
@flawr 수정되었습니다. ;)
kirbyfan64sos

4
네, 골프 대회에서 더 많은 Intercal이 필요하다고 생각합니다. =)
flawr

16
당신은 말했 PLEASE습니까?
Daniel M.

34

, 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 은 1 바이트로 do$0작동하지 않는 4 바이트를 제안합니다 perl -e.
Peter Cordes

@PeterCordes Neat는 "입력하지 않아도됩니다"규칙을 위반한다고 생각합니다. do EXPR파일에서 읽습니다.
ThisSuitIsBlackNot


32

> <> , 1 바이트

 

단일 공백은> <>가 NOP의 무한 루프로 들어가게합니다.

메모리 요구 사항이없는 다른 유효한 단일 문자 프로그램은 다음과 같습니다.

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

또한 규칙에 따라 프로그램의 메모리가 부족할 수 있으며 유효한 1 바이트 프로그램 목록에 다음 문자를 추가 할 수 있습니다.

01234567890abcdefli

11
` `코드 블록을 사용해보십시오 .
TheNumberOne

2
왜 사용하지 >않습니까?
mbomb007

4
이것이 Chem.SE라면 MathJax에 코드를 넣는 것이 좋습니다.
hBy2Py

빈 프로그램이 무한 루프가되지 않습니까?
Aaron

1
빈 프로그램을 실행하려고하면 런타임 오류가 발생합니다. Traceback (가장 최근 호출 마지막) : <module>의 493 행 "fish.py"파일 instr = interpreter.move () "fish.py"파일, 149 행 self._position [1]> max (self._codebox.keys ()) 인 경우 이동 : ValueError : max () arg는 빈 시퀀스
Fongoid

31

Motorola MC14500B 기계 코드 , 0.5 0 바이트



설명

매뉴얼에 따르면, 시스템은 루핑 제어 구조를 갖도록 구성된다. 프로그램 카운터는 최고 값까지 카운트하고 0으로 되돌아 가서 다시 카운트합니다.


3
나는 당신이 최소한 작은 작업을 위해 최고의 골프 ​​언어를 발견했다고 생각합니다. +1
ETHproductions

이것은 스코어 보드에서 5 바이트로 표시됩니다.
애디슨 크럼 10

C는 점프이지만 어디로 점프합니까?
Kishan Kumar

3
와우, 당신은 정말이 언어를 좋아합니까? : P
MD XF

이것은 0이 NOP이고 명령 포인터가 둘러싸고 프로그램 메모리에 추가 데이터가없는 모든 기계 언어에서 작동합니다.
12Me21


29

C, 15 바이트

main(){main();}

예, main()재귀 적 으로 호출 할 수 있습니다 . tail-call 최적화를 수행하는 컴파일러 (예 : -O2옵션 이있는 gcc )가 있다면 segfault조차도 아닙니다. 컴파일러는 함수 호출을로 변환 할만 큼 똑똑합니다 goto.


4
기본적 으로이 작업을 수행하는 컴파일러를 제공하지 않으면 -O2옵션에 3 바이트를 추가해야합니다 .
LegionMammal978

19
도전의 규칙에 따라 @ LegionMammal978, 메모리 부족이 허용됩니다. 이는 -O2최적화를 요구 사항이 아니라 "좋아하는 것"으로 만듭니다 .
Mark

1
컴파일러에 대한 옵션이 허용되고 (솔루션 수에 포함되지 않음) 코드를 변경 l(){l();}하고 옵션으로 컴파일 하지 않는 이유-Dl=main -O2
wendelbsilva

1
비교를 위해 가장 짧은 비재 귀적 적절한 루프 구현은 16B : main(){for(;;);}입니다.
Peter Cordes

3
@wendelbsilva 당신은 코드를 X (단지 1 바이트)로 바꾸고 -DX = main () {main ();}으로 컴파일하면 훨씬 더 잘 다룰 수 있습니다.
LeFauve

26

미로 , 1 바이트

"

labrinth 프로그램은 이웃이없는 경우 동일한 명령을 반복해서 실행합니다. 또한 @명령 을 실행할 때까지 끝나지 않습니다 .


25

Vim , 7 키 스트로크

명령 줄에서 다음과 같이로드 된 스크립트없이 편집기를 엽니 다 (예 : vim -u NONE

qq@qq@q

일러스트레이션, 15 8 바이트

스크립트에서 스크립트를 추가하거나 :일반 모드에서 콜론 ( ) 키를 먼저 펀칭하여 직접 실행하십시오.

wh1|endw

1
귀하의 vimscript가 약간 깁니다wh1|endw
FDinoff

Vim에 익숙하지 않은 사람에게 이것이 어떻게 작동하는지 설명해 주시겠습니까?
iFreilicht

8
@iFreilicht qqq버퍼에 기록을 시작합니다 . 버퍼 @q에있는 것을 재생합니다 q(이 시점에서는 아무것도 아닙니다).q녹음을 중지 한 다음 이 시점에서 키 스트로크 인 버퍼의 내용 을 @q재생 q합니다 @q. 그래서 @q리플레이 @q리플레이 @q.... 또한,이 많은 쓰기 q의 나의 뇌 상처를합니다.
Wayne Werner

25

망막 , 3 바이트

+`0

단일 파일이 제공되면 Retina는 Count 스테이지를 사용하여 입력을 지정된 정규식에서 찾은 일치 수로 바꿉니다. 여기서 정규식은 0입니다. 이제 +이전 반복에서 결과가 변경되는 한 스테이지를 반복합니다. 정확히 무슨 일이 일어나고 있습니까?

  • 0빈 입력에 대해 일치하고 일치하는 항목이 없으므로 결과는 0입니다. 이것은 입력과 다르므로 다시 실행하십시오.
  • 0이전 출력과 일치하여 0이제 하나의 일치를 제공하므로 결과는 다음과 같습니다 1.
  • 0이전 출력과 일치하지만 1실패합니다 0. 결과는 다음과 같습니다 .
  • ... 당신은 아이디어를 얻는다.

루프 반복의 결과는 0and 사이를 번갈아 가며 1a) 루프가 종료되지 않도록하고 b) 문자열이 커지지 않아 메모리가 부족하지 않도록합니다.

기본적으로 Retina는 프로그램이 종료 된 후에 만 ​​출력하므로 아무 것도 인쇄하지 않습니다 >.+ , 다음 교대 0과를 인쇄 할 것이다 ).

1.0부터 Retina에는 실제로 더 전통적인 while-loop가 있습니다. 이는 더 간단한 단계 (문자열을 항상 변경하지 않음)와 함께 사용할 수 있지만 실제로는 더 많은 바이트가 필요합니다. 하나의 옵션은 다음과 같습니다.

//+`


1
@ kirbyfan64sos 그들은 매우 비슷해 보이지만 실제로는 상당히 다르게 작동합니다. :)
Martin Ender

좋은 작업. 바꾸기 모드에서 가장 짧은 Retina 프로그램을 시도하려고했습니다. 궁금합니다. +`빈 입력을 반복해서 일치 시킬 수 있습니까?
mbomb007

@ mbomb007 2몇 번의 반복 후에 끝날 것이라고 생각합니다 .
Martin Ender

24

기본 (QBasic 4.5), 10 5 3 바이트

기본 프로그래밍 언어에서 RUN은 직접 모드에서 프로그램 실행을 시작하거나 로더 프로그램에서 오버레이 프로그램을 시작하는 데 사용됩니다. - 위키 백과

편집 : 이것은 @steenbergh에 따르면 QBasic 4.5에서 줄 번호없이 작동합니다.

RUN

내가 게시 한 첫 번째 버전은 다음과 같습니다. 무한 GOTO 루프. 또한 10 바이트이므로 우연의 일치입니다!

10 GOTO 10

13
왜 10 번 줄입니까? 왜 9가 아닌가?
재귀 적

25
또는 8 바이트의 경우 8? :)
MickyT

3
이기지 못할 것이고 이런 식으로 더 재미 있습니다.
CJ Dennis

3
1 RUN
TOOGAM

2
@davidjwest Sinclair에서 할 수있는 최단 시간 BASIC은 다음과 같습니다 1 GOTO SIGNUM PI.-상수 ints는 두 번 짧게 메모리에 저장되므로 1은 4 바이트이지만 SIGNUM과 PI는 각각 1 바이트 만 사용합니다. 아, 우리가 사용했던 오래된 코딩 트릭 : D 메모리 라인 번호가 얼마나 많은지 잘 모르겠습니다. 그래서 3 + (라인 번호 저장) 바이트입니다.
Dewi Morgan

23

TIS 노드 유형 T21 아키텍처, 6 바이트

A single node with NOP written in it

Tessellated Intelligence System 노드는 "프로세싱"또는 "스토리지"노드로 분류됩니다. 스토리지 노드는 단순히 정보를 저장하고 검색하며이 경우에는 관련이 없습니다. 나머지는 처리 노드입니다. 노드 유형 T21 또는 기본 실행 노드는 가장 일반적이고 단순합니다 (이름에서 알 수 있듯이).

기술적으로 각 노드는 독립 컴퓨터로 생각할 수 있습니다. T21의 경우, 두 개의 저장 레지스터 (하나는 어드레싱 가능, 하나는 아니고)와 15 개의 명령으로 구성된 명령어 세트를 가진 컴퓨터입니다. 최대 15 개의 명령어로 프로그래밍하기에 충분한 메모리가 있습니다. 모든 TIS 노드에는 토폴로지 적으로 인접한 노드에 연결하는 4 개의 포트가 있습니다. 포트에서 읽으면 다른 쪽 끝의 노드가 해당 포트에 쓸 때까지 해당 노드가 중단되고 해당 노드가 읽을 때까지 포트에 대한 쓰기가 중단됩니다.

지금까지 TIS 노드가 자체적으로 많은 작업을 수행하지 않았 음을 알 수 있습니다. 그러나 함께, 그들은 그들의 시간 동안 꽤 강력 할 수 있습니다. 이러한 제한으로 인해 누군가 단일 노드 만 사용하는 경우는 거의 없습니다. 실제로 입력을 받아서 출력을 제공하는 프로그램 은 TIS 시스템 이 맨 위 행의 노드 포트 로 입력을 공급 하고 맨 아래 행의 노드 포트 에서 출력을 가져 오기 때문에 적어도 3 개의 노드를 사용해야 합니다 . 3 개의 행이 있으므로 데이터가 최소 3 개의 노드를 통과하여 맨 아래로 이동해야합니다.UPDOWN

이러한 제한 사항으로 인해 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수행 NOPeration을. 아무것도하지 않으면 실행은 코드의 최상위로 돌아갑니다 : NOP.

루프를 만들기 위해 T21 아키텍처를 남용하고 있다는 것이 만족스럽지 않으면 2 바이트의 비용으로 대체 솔루션을 제공합니다 JRO 0. 순식간에 ump elative를 JRO의미합니다 . 아니면 뭔가요 합의 된 확장 된 형태의 지침은 없습니다. 어쨌든 숫자 인수를 사용하여 현재 위치를 기준으로 해당 양만큼 실행을 점프합니다. 예를 들어, 뒤에 오는 명령어를 건너 뜁니다 (해당 명령어가 다른 곳에서 점프하는 경우 유용합니다). 한 명령 앞으로 이동하여을 만듭니다 . 스스로 뛰어 넘어 영원히 실행됩니다.JROJROJRO 2JRO 1NOPJRO -1프로그램이 중지 될 때까지 두주기마다 한 번씩 이전 명령을 효과적으로 수행하여 하나의 명령을 건너 뜁니다. 그리고 물론JRO 0

이 시점에서 다음을 생각할 수 있습니다.

물론, 모노레일,이 모든 것이 의미가 있지만, 당신의 대답은 간단 NOP합니다. 점수가 6 바이트 인 이유는 무엇입니까?

좋은 질문입니다. 질문 해 주셔서 감사합니다. 여러 파일에서 프로그램을 계산하는 것과 같은 방식으로 TIS 프로그램을 계산해야한다고 순진하게 생각할 수도 있습니다. 그러나 TIS 골프 커뮤니티는 솔루션을 재생성하는 데 필요한 일부 정보를 무시하기 때문에 이것이 불공평하다고 판단했습니다. 노드의 이웃은 매우 중요하며, 그 스코어링 방법은 위치 정보를 무료로 제공합니다. 대신 가장 일반적인 TIS 에뮬레이터에서 사용되는 형식 인 혼란스러운 TIS-100을 채택했습니다.. (Side note : 에뮬레이터는 에뮬레이터 이름을 짓지 마십시오. 영리하지 않고, 성가 시며 모든 사람이 자신이 말하는 것을 지속적으로 명확히해야합니다.) 매우 간단합니다 : TIS-100의 12 개 노드 장치의 번호는 왼쪽에서 오른쪽으로, 위에서 아래로, 에뮬레이트 된 시스템이 설치 한 모든 스토리지 노드를 건너 뜁니다. 번호 노드 N포함은 # CODE\n# CODE\n CODE과 같이 저장됩니다 :

@N
# CODE
# CODE
# CODE

따라서 번호가 0 인 노드 NOP는 다음 형식으로 표시됩니다.

@0
NOP

6 바이트

시각적으로 흥미로운 언어로 답변에 종종 포함하는 것처럼 TIS-100 에뮬레이터가 YouTube에서이 프로그램을 실행하는 것을 볼 수 있습니다 . 그러나이 도전이 무엇인지 고려할 때, 당신이 무엇을 기대하는지 모르겠습니다 ...


와우 놀랍습니다.
Adrian Zhang

항상 가정 나는 JRO위해 서 J의 에 UMP R elative O ffset.
MutantOctopus

@BHustus 나는 당신이 옳다고 생각하지만 다른 어셈블리 언어를 경험하기 전에 이것을 썼고 나는 링고를 몰랐다
undergroundmonorail

이 답변을 +10 할 수 있기를 바랍니다. 나는 TIS-100을 좋아한다
Shirkam

내 TIS 에뮬레이터를 작성 했으므로 이제 온라인으로 사용해 볼 수 있습니다 . 그러나 시간 초과 이외의 많은 것을 기대하지 마십시오.
Phlarx

22

C # , 38 37 36 바이트

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

정지 조건이없는 For 루프.

main의 반환은 int이어야하지만, 끝에 도달하지 않으므로 컴파일해야합니다. (VS 2015 및 2013에서 테스트되었으며 Ideone 에서도 작동합니다 ). GeobitsMichaelS 에게 감사합니다 .

더 짧은 버전 인 35 바이트를 얻을 수 있지만 Process is terminated due to StackOverflowExceptionstderr에 아무것도 인쇄하지 않는 세 번째 사항을 위반한다고 생각되는 인쇄입니다. 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를 사용하고 있습니다. "class A {static int Main () {for (;;);}}"
MichaelS

@MichaelS 감사합니다! 2015 년 VS 나를 위해 일했습니다.
Sven Writes Code

1
vs 15에서, 이것은 더 짧을 수 있습니다 (거의). 35class B{static int Main()=>Main();}
Michael B

21

푸, 3 바이트

(1)

모두가 좋아하는 프로그래밍 언어! :디


20

헥사 고니 , 1 바이트

.

나는 @ MartinBüttner가 만든이 멋진 언어에 대해 많이 알지 못하지만, 내가 본 것에서 @프로그램을 중단 할 필요가 없으므로 무한 반복해야합니다 . .단순히 no-op입니다.


3
왜 시험해 보지
않습니까?

7
이것이 올바른지 확인할 수 있습니다. :)
Martin Ender

@KritixiLithos 온라인 통역사를 찾을 수 없었기 때문에 테스트하려는 모든 언어에 대해 통역사를 다운로드하는 것을 선호하지 않습니다. ;)
ETHproductions


1
TIO는 빈 프로그램이 작동 함을 보여줍니다 .
Weijun Zhou

20

펄, 4 바이트

do$0

반복해서 실행됩니다 .


1
매우 시원합니다. 처음에는 이것이 do EXPR기술적으로 입력 될 파일을 읽은 이후 "필수 입력 안 함"규칙을 위반 한 것으로 생각 되었지만 OP는 파일 I / O가 허용 가능하다는 것을 명확히했습니다. 정말 멋진 점은 Bash와 달리 새로운 프로세스를 포크하지 않으므로 메모리 또는 프로세스 제한에 도달하지 않고 무기한으로 계속된다는 것입니다.
ThisSuitIsBlackNot

18

감마 플렉스 , 0 바이트

Gammaplex에서는 무한 루프가 아닌 프로그램을 작성할 수 없습니다. 입력 / 출력을 사용하지 않는 프로그램을 작성합니다.


규칙에는 자격을 갖추려면 무한 루프가 필요하다고 명시되어 있습니다.
arodebaugh

@arodebaugh 있습니다. 다시 말해, 모든 Gammaplex 프로그램에는 무한 루프가 있습니다.
jimmy23013

16

Pyth, 2 바이트

# 

Pyth는 영원히 연산자 뒤에 토큰을 기대합니다. (이것은 공간입니다.)


16

bash + BSD coreutils, 23 22 14 6 5 6 바이트

yes>&-

yes"y"를 영원히 출력합니다. >&-STDOUT을 닫습니다.

크기를 줄이는 데 도움을 주신 @Dennis와 @ThisSuitIsBlackNot에게 감사합니다!


4
bash를 사용하면 $0쉘 스크립트를 사용하여 실행할 수 있으며 영원히 호출됩니다.
TessellatingHeckler

1
창의적이지만 지루한 오래된 while :;do :;done것은 17 바이트입니다.
ThisSuitIsBlackNot

3
ping>&- 00localhost에 매핑 된 Linux에서 작동합니다 .
Dennis

1
yes! (사용에 대해 생각 yes했지만 출력을 버리는 것이 발생하지 않았습니다.) 1 바이트를 저장할 수 있습니다yes>/dev/null
ThisSuitIsBlackNot

3
나는 그것을 몰랐다. BSD와 함께 작동한다면 훌륭하지만 파일에 쓰는 것이 출력생성 하지 않는다고 생각하지 않습니다 .
Dennis

15

공통 리스프, 6 자

(loop)

44
Rare Lisp 와 같은 것이 있습니까?
flawr

10
@flawr 나는 이것이 유머러스 한 의견이라고 생각할 것입니다. 그러나 Common Lisp는 Lisp 제품군에서 대부분은 아니지만 아직 호환되지 않는 많은 언어를 통합 한 표준화 프로세스의 결과입니다. 공통 Lisp가 아닌 Lisp 계열의 언어에는 Scheme, Racket, Emacs Lisp 및 Clojure가 있습니다.
Joshua Taylor

또한 (약간 더 길지만, 우리가 parens를 계산할 필요가 없다면 단지 2 바이트 일 것입니다) : (do()(())).
Joshua Taylor

@JoshuaTaylor 나도 생각 do하고 독자가 무한 루프를 타는 것에 대해 생각했지만 어떻게 해야할지 모르겠다 . 아무것도 이길 것 같지 않습니다 (loop).
coredump

@JoshuaTaylor 당신이 계산하지 않으면 parens lisp는 그들 중 가장 골프 언어가 될 것입니다
Cyoce

13

핵분열 , 1 바이트

정확히 4 바이트의 1 바이트 솔루션이 있습니다.

R
L
U
D

이 네 글자는 원자가 그곳에서 시작한다는 것을 나타냅니다 (해당 방향으로). 원자가 없으면 프로그램이 즉시 종료되므로 그 중 하나가 필요합니다. 소스 코드는 하나의 문자 크기이므로 원자는 즉시 감싸고 동일한 셀을 다시 실행합니다. 그러나 프로그램이 시작된 후에 UDLR는 들어오는 원자를 해당 방향으로 편향시키기 만하면이 경우에는 원자가되지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.