당신의 작업은 어떤 입력을지지 않습니다 및 루프 (모든 종류의 실행되는 전체 프로그램이나 기능을 작성하는 것입니다 while
, for
, foreach
, do
, do-while
, do-loop
, goto
프로그램이 실행 자체를 중지해야 함을 의미합니다 오류를 일으키는 원인이 종료됩니다, 재귀 등) 출구.
규칙 :
- 오류는 런타임 오류, 처리되지 않은 예외 또는 프로그램 자체를 종료시키는 모든 항목이어야합니다.
- 오류는
exit;
특정 시점에서 명시 적으로 (또는 이에 상응하는) 호출하지 않고 프로그램을 중지하고 종료해야합니다 . - 같은 메시지
Warning:
,Notice:
자체 종료 프로그램을 발생하지 않는 등, 유효하지 않습니다. 예를 들어, PHP 0으로 나누면Warning
메시지가 생성 되지만 프로그램이 중지되지 않고 계속 실행됩니다. 이는 올바른 답변이 아닙니다. - 루프는 하나 이상의 전체주기를 실행해야합니다. 즉, 두 번째 사이클에서 시작하여 오류가 발생할 수 있습니다. 이는 잘못된 코드 구문을 사용하여 오류가 발생하지 않도록하기위한 것입니다. 코드는 구문 상 정확해야합니다.
- 루프가
for(;;);
위에 언급 된 규칙을 준수하는 경우 무한대 (예 🙂 일 수 있지만 런타임 오류로 인해 자체 종료하는 데 2 분 이상 걸리지 않아야합니다. - Tail Call Optimization이없는 재귀는 유효하지 않습니다 ( 1 , 2 ).
- 이것은 코드 골프 이므로 가장 짧은 코드가 승리합니다.
- 표준 허점 은 금지되어 있습니다.
C # 예제 ( 온라인 테스트 ) :
using System;
public class Program {
public static void Main() {
int i;
int[] n;
n = new int[5];
for(i=0; i<7; i++) {
n[i] = i;
Console.WriteLine(n[i]);
}
}
}
Output:
0
1
2
3
4
Run-time exception (line 9): Index was outside the bounds of the array.
Stack Trace:
[System.IndexOutOfRangeException: Index was outside the bounds of the array.]
at Program.Main(): line 9
리더 보드 :
var QUESTION_ID=104323,OVERRIDE_USER=59718;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important;font-family:Arial,Helvetica; font-size:12px}#answer-list,#language-list{padding:10px;width:290px;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="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><div id="language-list"> <h2>Winners 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><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>
리더 보드 스 니펫을 위한 Martin Ender 에게 감사합니다
답변
MATL , 5 1 바이트
@MartinEnder의 CJam 답변 에서 가져온 아이디어
`
` % Do...while loop
% Implicit end. The loop continues if the top of the stack is true.
% After the first iteration, since the stack is empty, the program
% implicitly tries to take some non-existing input, and finishes
% with an error
구 버전
2:t"x
2: % Push [1 2]
t % Duplicate
" % For each (i.e. do the following twice)
x % Delete top of the stack. Works the first time. The second it tries to
% implicitly take some non-existing input, and finishes with an error
답변
파이썬, 16 바이트
비 관심 0 부문 접근 :
for x in 1,0:x/x
첫 번째 반복은을 계산 1 / 1
하여 정상적으로 작동합니다. 두 번째 반복은 계산을 시도하여 0 / 0
결과 ZeroDivisionError
가 발생합니다.
17 바이트 (개인 선호)
i=1
while i:del i
처음에는 i=1
진실하기 때문에 루프가 시작됩니다.
루프가 처음 실행될 때 변수 i
가 삭제됩니다.
이는 두 번째 i
로 더 이상 변수가 아니므로 평가가 실패 함을 의미합니다.NameError: name 'i' is not defined.
파이썬은 꼬리 재귀를 최적화하지 않기 때문에 또 다른 15 바이트 솔루션은 def _():_()
(newline) _()
입니다. 그러나 이것은 규칙 # 6을 위반합니다.
답변
젤리 , 3 2 바이트
Ṿß
메모리가 부족하여 자체를 종료합니다. ~ 100 초 후에 로컬에서 수행합니다.
온라인으로 사용해보십시오! ( 디버그 드로어의 사망 인증서 )
작동 원리
Ṿß Main link. Argument: x. Implicit first argument: 0
Ṿ Uneval; yield a string representation of x.
ß Recursively call the main link.
Jelly uses TCO, so the first cycle finishes successfully before entering
the next one.
처음 몇 번의 반복은 다음과 같습니다.
'0'
'”0'
'””,”0'
'””,””,”,,””,”0'
'””,””,”,,””,””,”,,””,”,,”,,””,””,”,,””,”0'
'””,””,”,,””,””,”,,””,”,,”,,””,””,”,,””,””,”,,””,”,,”,,””,””,”,,””,”,,”,,””,”,,”,,””,””,”,,””,””,”,,””,”,,”,,””,””,”,,””,”0'
그 후, 그것은 추악하고 진짜 빠릅니다.
답변
V , 2 바이트
òl
내가 항상 그렇게했기 때문에 이것은 V에 대한 완벽한 도전입니다! 실제로 V에는 조건이 없으며 오류가 발생하는 기능 만 있습니다. 이 경우 ò
“영원히 반복”이라는 l
의미와 “오른쪽으로 이동”이라는 의미입니다.
빈 버퍼 (입력 없음)에서는 첫 번째 패스에서 중단되고 출력이 생성되지 않습니다. 입력 이있는 경우 입력의 마지막 문자를 이동 한 후 입력이 중단되고 모든 입력이 출력됩니다 (고양이 프로그램이기도 함)
답변
자바 스크립트 (ES6), 13 바이트
f=_=>f(_?a:1)
이 기능은 재귀 함수로 한 번 실행 된 다음 던지고 ReferenceError: a is not defined
종료됩니다.
다음은 15 바이트 비 ES6 버전입니다.
for(i=0;;)i=i.a
이것은 한 번 잘 실행 된 다음 던지고 TypeError: i is undefined
종료됩니다.
답변
배쉬 4.2, 22 바이트
exec $0 $@ $[2**$#%-1]
Bash 4.3이 있기 때문에 TIO에서 작동하지 않으며 내가 의존하는 버그가 마침내 수정되었습니다.
확인
$ xxd -c 22 -g 22 self-destruct
0000000: 6578656320243020244020245b322a2a2423252d315d exec $0 $@ $[2**$#%-1]
$ ./self-destruct
Floating point exception
프로그램이 2 63 mod -1 을 계산하려고 시도 하면 알려진 버그로 인해 Bash 4.2 및 이전 버전에서 충돌이 발생하면 충돌이 발생합니다 .
답변
PHP, 22 21 20 18 바이트
이것은 PHP에 의존하여 변수에 함수 이름을 부여하고 실행하려고합니다.
이것은 단순히 pi
함수 이름을 두 번 연결합니다 . 이것은로 PHP를 죽 Fatal Error: Uncaught Error: Call to undefined function pipi() in [...][...]
입니다.
while($x.=pi)$x();
이것은 나의 옛 대답과 비슷하게 작동합니다.
이전 답변, 20 바이트
PHP에서는 증가 연산자를 사용하여 문자를 증가시킬 수 있습니다. a-z
범위 에서만 작동 하지만 충분합니다.
for($x=pi;;)$x=$x();
나는 이것이 모든 필수 포인트를 충족시키고 루프가 한 번 실행된다고 생각합니다.
오류가 발생하기 때문에 알 수 있습니다 Fatal error: Function name must be a string
.
이것이 어떻게 작동하는지 단계별로 :
- 할당
pi
에$x
.
이후pi
일정으로 사용되고있는 경우, PHP 확인한다.
PHP는Use of undefined constant pi - assumed 'pi'
존재하지 않기 때문에 (기본적으로 상수가 존재하지 않기 때문에 문자열이라고 가정합니다) 경고 메시지를 표시합니다 - 처음으로 루프
- 기능을 실행하십시오
$x()
.
때문에$x
값을 가지고pi
,이 기능을 실행합니다pi()
.
- 기능을 실행하십시오
- 에 값을 저장하십시오
$x
.
$x
이제 대신에 π를 갖습니다.pi
- 두 번째 루프
- 기능을 실행하십시오
$x()
.
이후$x
π 있으며,이 기능을 실행합니다3.14159...()
. - π는 문자열이 아니므로이 시점에서을 사용하여 프로그램을 종료하십시오
Fatal Error
.
- 기능을 실행하십시오
함수 를 찾아서 1 바이트를 절약 한 @Titus 에게 감사드립니다 !pi()