出力を生成しない最短無限ループ


121

あなたの仕事は、最短の無限ループを作成することです!

この課題のポイントは、重複の可能性とは異なり、出力を生成しない無限ループを作成することです。これは、出力が提供されない場合、コードが短くなる可能性があるためです。

ルール

  • 各提出は完全なプログラムでなければなりません。
  • 最短の無限ループを作成する必要があります。
  • プログラムが最終的にメモリ不足になっても、開始からメモリ不足になるまで実行されている限り、プログラムは受け入れられます。また、メモリが不足しても、STDERRには何も出力されません。
  • プログラムは何も入力してはいけません(ただし、ファイルからの読み取りは許可されています)。ファイルへの出力も禁止されています。
  • プログラムは、STDERRに何も書き込まないでください。
  • このチャレンジよりも新しい言語(または言語バージョン)を使用しても構いません。-提出物をテストできるように通訳が必要であることに注意してください。以前に未実装の言語用にこのインタープリターを自分で作成することは許可されています(推奨されます)。:D
  • 提出物は、適切な(既存の)エンコード、通常(必ずしもではありませんが)UTF-8で、バイト単位で記録されます。フォルダなどの一部の言語は、スコアリングが少し難しいです-疑問がある場合は、Metaでお問い合わせください。
  • これは、最短の無限ループプログラムで言語を見つけることではありません。これは、すべての言語で最短の無限ループプログラムを見つけることです。したがって、私は答えを受け入れません。
  • 選択した言語が、すでに回答を持っている別の(潜在的により人気のある)言語の些細な変形である場合(BASICまたはSQL方言、Unixシェル、またはAlphuckのような些細なBrainf ** k派生語を考えてください)、既存の同じまたは非常に類似したソリューションは、他の言語でも最短であると答えてください。
  • 言語には、Wikipedia、Esolangs、GitHubなどのWebサイトが必要です。たとえば、言語がCJamの場合、ヘッダーのようなサイトにリンクでき#[CJam](http://sourceforge.net/p/cjam/wiki/Home/), X bytesます。
  • 標準の抜け穴は許可されていません。

(これらのルールのいくつかは、MartinBüttnerの「Hello World」チャレンジから取ったものです)


コメントで自由に投稿して、この課題をどのように改善できるか教えてください。

カタログ

これは、使用される言語のアルファベット順のカタログと全体的なリーダーボードの両方を生成するスタックスニペットです。回答が表示されるようにするには、次のMarkdownヘッダーで回答を開始してください。

# Language name, X bytes

明らかに適切なアイテムLanguage nameと交換しX bytesます。言語のWebサイトにリンクする場合は、上記のようにこのテンプレートを使用します。

#[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デニス

3
このチャレンジは、多くの0バイト言語(一部はエソランではありません)をもたらすため、興味深いものです。FWIW、ほとんどの宣言型言語には暗黙的な無限ループがあります。これは、宣言型言語には構文にループがないためです(無限ループで実行されていると想定します)。ラダー図は、おそらく最も古い言語の1つです。次に、命令ループ(IL)があります。これは、無限ループも想定しているPLCの一種のアセンブリです。ILは、アセンブリのようにメーカーによって異なります
-slebetman

独自のソースコードを読み取って実行するプログラムは許可されていますか、それともファイルI / Oが「入力は必要ありません」という規則に違反していますか
ThisSuitIsBlackNot

1
@ThisSuitIsBlackNotはい、ファイル入力は許可されています。
牛は

""、空の文字列を印刷できますか?
-OldBunny2800

回答:


216

Befunge、0バイト



うん。Befungeプログラムは、エッジを囲む固定サイズの2次元プレイフィールドに存在します。そのスペースに干渉するものは何もないためプログラムカウンターはデフォルトで無限ループで実行されます:)


10
ああ、私はこれを投稿するつもりだった。:/
デウソビ

5
それが何らかの関係があり@daniero ...この標準抜け穴を。私は個人的には標準的な抜け穴に同意しません。
ジャスティン

17
@Justinその抜け穴は、特定の種類のチャレンジにのみ適用されます。
デニス

1
<pre>&nbsp;</pre>空っぽのコードブロックに使用できます。
immibis

最初に探したもの
ディランマディセッティ

150

L00P、0バイト



この言語はループ用に作られており、それがまさにそれです...


15
笑。言語の選択については+1。
ETHproductions

76
...これらの日の一つは、このlangは、すべてあなたを超えるつもりループがある
PAL GD

3
音楽の参照のために+1、そしてもう一つの金バッジにおめでとう!
ルイスメンドー

私が見た最高の参照
クリストファー

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ファミリーよりもコモドール64を認識するだろうと思いました:) VIC-20は6502を使用し、これを実行することができただろう。だから、技術的には、1541フロッピードライブは...その上でコントローラを再プログラムできることを漠然と思い出します。ああ、まだC64が恋しいです:)
ジェームズキング

7
かつて、顧客が疑いを持たないコンピューターストアの所有者でプレイする特に厄介な「トリック」(imho破壊行為)は、DOSを使用してブートローダーの最初にX86の場合と同じように2バイトを配置することでしたdebug。これは事実上機械を破壊するでしょう、そして、ほとんどの店員はそれがただの死んだドライブではなかったことを知るためにノーを欠いていました。
デウィモーガン

105

Brainfuck、3バイト

+[]

減らさない:終わらない。


62
BFが他のほとんどの答えを破ったとき、それは面白いです。
ローカナ

SEのスタートページで質問を見たとき、私はこのことを考えなければなりませんでした。
s3lph

1
私の最初の考えはBFでした!:D思ったより短く終わった。
アンドレクリストファーアンデルセン

1
代替の、まだ同じバイト:-[]
Unihedron

1
どこかに通訳がいるので]はないかと
思います

102

///、3バイト

///

言語の名前をソースコードとして使用することに対するボーナスポイントはありますか?


71
リンクが実際に機能していることを正直に見て驚いてい///ます;)
ETHproductions

@ETHproductionsそれはかなり驚くべきことですが、それについてもう少し考えれば、それは意味があります。URLだけですesolangs.org wiki _ _ _ _
-HyperNeutrino

12
@AlexL。完全ではありません。Webサーバーは、へのGET要求を確認し/wiki////ます。それはパスであること意図してましたが、サーバーは必要に応じてその情報を使用できます。
デニス

73

Java、53バ​​イト

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

イェーイ完全なプログラム要件!


78
神は冗長な...ということである
mınxomaτ

4
@minxomatうん、空の場合は45バイトmain:(
Geobits

3
@minxomatはそのOOPを愛さなければなりません
ルーク

55
それはオブジェクト指向ではありません。クラスにコードを入れても、電子レンジに岩を入れると食べ物になります。
imallett


56

プロローグ、5バイト

a:-a.

述語aが真であるかどうかを知るには、述語が真であるかどうかを確認するだけaです。

a両方ともコマンドライン引数を使用して、ファイルをロードして実行する必要があります。再帰は無限ループとして最適化される可能性が高く、スタックを破壊しないことに注意してください。

また、これはスマイリーのように見えますが、私はそれを呼び出す方法がわかりません。ドットは唾液のように見えるので、「栄養状態」または「巻き毛のあるプログラマー」です。提案を歓迎します。


3
チェックするaことによってtrueであるかどうかをチェックすることによってtrueであるかどうかをチェックするaことによってtrueであるかどうか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 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ヘッダーとプログラムヘッダーを不正にし、ファイル内の同じバイトを占有し、ヘッダー内の未使用のバイトにプログラムを挿入します。Linuxは引き続きヘッダーを喜んで読み取り、オフセット0x20で実行を開始します。


9
.comDOSの場合ははるかに短くなります:)
JimmyB

1
gccにスタートアップファイルを含めた場合にのみ、「数千」バイトになります。 yasm && ld実行可能ファイルを約1kのみにします。
ピーターコーデス

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
どのようにせずにintercalプログラムを行うかcomefrom
-flawr

1
@flawr修正。;)
kirbyfan64sos

4
Np、ここでのゴルフコンテストではさらにインター
カル

16
言ったPLEASE
ダニエルM.

34

Perl、6バイト

perl -e '{redo}'

からperldoc -f redo

redoコマンドは、条件を再度評価せずにループブロックを再起動します...ブロック自体は、1回実行されるループと意味的に同一であることに注意してください。したがって、そのようなブロック内でやり直すと、ループ構造に効果的に変わります。

redo量産コードにはあまり見かけませんが、ゴルフには最適です!最短同等物に上記の比較forwhileおよびgoto

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

1
codegolf.stackexchange.com/a/59553/30206は4バイトを提案しdo$0ていますが、これはperl -e1ライナーとしては機能しません。
ピーターコーデス

@PeterCordes Neat、これは「入力を必要としない」ルールを破ると思いますが do EXPRファイルから読み取ります。
ThisSuitIsBlackNot


32

> <>、1バイト

 

単一のスペースがあると、> <>がNOPの無限ループに入ります。

その他の有効な単一文字プログラム(メモリ要件なし)は次のとおりです。

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

さらに、ルールでは、プログラムでメモリが不足する可能性があると規定されています。その場合、有効な1バイトプログラムのリストに次の文字を追加できます。

01234567890abcdefli

11
` `コードブロックを試してください。
TheNumberOne

2
なぜ単に使用しないの>ですか?
mbomb007

4
これがChem.SEの場合、MathJaxにコードを配置することもお勧めします。
hBy2Py

空のプログラムは無限ループではないと確信していますか?
アーロン

1
空のプログラムを実行しようとすると、ランタイムエラーが発生します。トレースバック(最後の最後の呼び出し):ファイル "fish.py"、行493、<モジュール> 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バイトとして表示されることに注意してください。
アディソンクランプ

Cはジャンプですが、どこにジャンプしますか?
Kishan Kumar

3
うわー、あなたは本当にこの言語が好きですか?:P
MD XF

これは、0がNOPであり、命令ポインターがラップアラウンドし、プログラムメモリが余分なデータを保持しない、あらゆる機械語で機能します。
12Me21


29

C、15バイト

main(){main();}

はい、main()再帰的に呼び出すことができます。末尾呼び出しの最適化を行うコンパイラー(-O2オプション付きのgccなど)を使用している場合、セグメンテーション違反は発生しません。コンパイラーは、関数呼び出しをに変換できるほどスマートgotoです。


4
デフォルトでこれを行うコンパイラを提供できない限り、-O2オプションに3バイトを追加する必要があります。
LegionMammal978

19
@ LegionMammal978、チャレンジのルールによると、メモリ不足は許容されます。これにより、-O2最適化は要件ではなく「便利」になります。
マーク

1
コンパイラへのオプションが許可されている場合(ソリューションカウントにはカウントされない)、l(){l();}オプションにコードを変更してコンパイルしないでください-Dl=main -O2
-wendelbsilva

1
比較のために、最短の非再帰的適切なループ実装は16B:main(){for(;;);}です。
ピーターコーデス

3
; @wendelbsilvaあなたはさらにX(ちょうど1バイト)のコードを変更し、-DX =メイン(){メイン()}を用いてコンパイルし、それを爪できる
LeFauve

26

ラビリンス、1バイト

"

隣人がいない場合、ラブリンスプログラムは同じ命令を繰り返し実行します。また、@命令を実行するまで終了しません。


25

Vim、7回のキーストローク

できれば、スクリプトをロードせずにエディターを開きます。たとえば、コマンドラインから次のようにします。 vim -u NONE

qq@qq@q

Vimscript、 15 8バイト

スクリプトに追加するか:、通常モードで最初にコロン()キーを押して直接実行します

wh1|endw

1
あなたのvimscriptは少し長いですwh1|endw
-FDinoff

Vimに慣れていない人に、これがどのように機能するか説明してもらえますか?
iFreilicht

8
@iFreilicht qqqバッファへの記録を開始します。バッファの@q内容を再生しますq(この時点では何もありません)。q記録を停止@qしてから、qバッファの内容(この時点ではキーストローク)を再生し@qます。だから、@qリプレイ@qリプレイは@q....また、この多くの書き込みqのことは私の脳を傷つけるになります。
ウェインワーナー

25

網膜、3バイト

+`0

単一のファイルが指定された場合、RetinaはCountステージを使用して、入力を指定された正規表現で見つかった一致の数に置き換えます。ここで、正規表現は0です。今+限り、前回の繰り返しからの結果の変更などのためのステージをループします。それで、正確に何が起こっているのでしょうか?

  • 0は、空の入力に対して照合され、一致がゼロになるため、結果はになり0ます。これは入力とは異なるため、これを再度実行します。
  • 0は前の出力と照合されますが0、現在は1つの一致が得られます...結果は1です。
  • 0は、前の出力と照合されますが1、失敗します...結果は0です。
  • ...あなたはアイデアを得る。

ループの繰り返しの結果はとの間0で交互になり1、a)ループが終了しないことを保証し、b)文字列が大きくならないためにメモリが不足しないことを保証します。

デフォルトでは、Retinaはプログラムの終了後にのみ出力するため、これは何も出力しません(この動作を変更する>には+、の後にを追加して、ゼロと1を交互に出力します)。

1.0の時点で、Retinaには実際にはより単純なステージ(常に文字列を変更しない)で使用できる従来のwhileループもありますが、実際にはより多くのバイトが必要です。1つのオプションは次のとおりです。

//+`

1
うわー、私はちょうどrsのほぼ正確なことをまったく同時に答えまし
kirbyfan64sos

1
@ kirbyfan64sos見た目は非常に似ていますが、実際にはまったく異なります。:)
マーティンエンダー

良くやった。置換モードで最短のRetinaプログラムを実行してみました。興味がありますが、+`空の入力を繰り返し照合できますか?
mbomb007

@ mbomb007私はそれが2数回の反復後に終了すると思います。
マーティンエンダー

24

BASIC(QBasic 4.5)、10 5 3バイト

BASICプログラミング言語では、RUNはダイレクトモードからプログラムの実行を開始するため、またはローダープログラムからオーバーレイプログラムを開始するために使用されます。- ウィキペディア

編集:@steenberghによると、これはQBasic 4.5で行番号なしで動作します

RUN

これが私が投稿した最初のバージョンです。無限GOTOループ。また、10バイトです。これは偶然です。

10 GOTO 10

13
行番号10を使用する理由 なぜ9ではないのですか?
再帰的

25
または8バイトの場合は8?:)
MickyT

3
それは勝つつもりはなく、このように面白くなります。
CJデニス

3
これは、に短絡することができます:1 RUN
TOOGAM

2
@davidjwest Sinclair BASICでできる最短:1 GOTO SIGNUM PI-定数intはshortとしてメモリに2回格納されるため、1は4バイトですが、SIGNUMとPIは両方とも1バイトのみを使用します。ああ、私たちが使用していた古いコーディングのトリック:Dどれくらいのメモリ行番号を占有するかわからないので、私が言えることはそれが3+(行番号ストレージ)バイトだということです。
デウィモーガン

23

TISノードタイプT21アーキテクチャ、6バイト

NOPが書き込まれた単一ノード

テセレーションインテリジェンスシステムノードは、「処理」ノードまたは「ストレージ」ノードに分類されます。ストレージノードは単に情報を保存および取得するだけで、この場合は関係ありません。残りは処理ノードです。ノード名T21、または基本実行ノードは、最も一般的でシンプルです(名前が示すとおり)。

技術的には、各ノードは独立したコンピューターと考えることができます。T21の場合、2つのストレージレジスタ(1つはアドレス指定可能、1つはそうではない)と15のコマンドの命令セットを持つコンピューターです。最大15命令でプログラムするのに十分なメモリがあります。すべてのTISノードには、トポロジ的に隣接するノードに接続する4つのポートがあります。ポートから読み取ると、そのノードは反対側のノードが書き込むまでハングし、ポートへの書き込みはそのノードが読み取るまでハングします。

これで、TISノードが単独で多くのことを実行することを意図したものではないことを伝えることができるかもしれません。しかし、一緒に、彼らは非常に強力になることができます...まあ、彼らの時間のために。これらの制限のため、誰かが単一のノードのみを使用するのを見るのは非常にまれです。実際、入力を受け取り、それに基づいて出力を提供するプログラムは、少なくとも3つのノードを使用する必要があります。TISシステムはUP、最上行のノードのポートに入力を送りDOWN、最下行のノードのポートから出力を取得するためです。行は3つあるため、データは最下位に到達するために少なくとも3つのノードを通過する必要があります。

これらの制限のため、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 0JRO意味JUMP Relative UNCをOnditionally。または何か、私は推測する。合意された拡張形式の指示はありません。とにかく、JRO数値引数を取り、現在の位置を基準にしてその量だけ実行をジャンプします。たとえばJRO 2、後続の命令をスキップします(その命令が他の場所からジャンプした場合に便利です)。JRO 11つの命令を前方にジャンプし、それをaにしNOPます。JRO -11つの命令にジャンプして戻り、プログラムが停止するまで2サイクルごとに1回前の命令を効果的に実行します。そしてもちろん、JRO 0 自分自身にジャンプして、自分自身を永遠に実行します。

この時点で、あなたは考えているかもしれません:

確かに、モノレール、これはすべて理にかなっていますが、あなたの答えは単純NOPです。スコアが6バイトなのはなぜですか?

良い質問です。質問してくれてありがとう。TISプログラムは、複数のファイルのプログラムをカウントするのと同じ方法でカウントする必要があると単純に考えるかもしれません。すべてのノードのバイト数と、最初のノード以降の追加ノードごとに1バイトです。ただし、TISゴルフコミュニティは、ソリューションを再作成するために必要な情報の一部を無視するという単純な理由により、これは不公平だと判断しました。ノードの隣接ノードは非常に重要であり、そのスコアリング方法は位置情報を無料で提供します。代わりに、最も一般的なTISエミュレータで使用される形式、混乱を招く名前のTIS-100を採用しました。。(サイドノート:エミュレートするシステムにちなんでエミュレータに名前を付けないでください。それは賢くなく、単に迷惑であり、誰もが話していることを常に明確にしなければなりません。)非常に単純です:TIS-100の12ノードデバイスには左から右、上から下に番号が付けられ、エミュレートされたシステムがインストールされているストレージノードはスキップされます。Nを含むノード番号# CODE\n# CODE\n CODEは次のように保存されます:

@N
# CODE
# CODE
# CODE

したがって、0を含む番号が付けられたノードNOPは、この形式での表現に従ってスコア付けされます。

@0
NOP

6バイト。

視覚的に興味深い言語での回答によく含まれているように、YouTubeでTIS-100エミュレーターがこのプログラムを実行するのを見ることができます。しかし、この課題が何であるかを考えると、あなたが何を期待しているのかわかりません...


うわー それはすごかった。
エイドリアンチャン

私はいつも仮定JROのために立っていたJのにUMP R elative O ffset。
MutantOctopus

@BHustus私はあなたが右だと思うが、私は、他のアセンブリ言語の経験を持っていたし、私は専門用語を知らなかった前に、私はこれを書いた
undergroundmonorail

この答えが+10になればと思います。TIS-100が大好き
シルカム

私は自分でTISエミュレータを書いたので、Try It Onlineで試すことができます。ただし、タイムアウト以外はあまり期待しないでください。
-Phlarx

22

C#38 37 36バイト

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

停止条件のないforループ。

mainの戻り値はintである必要がありますが、終わりに達することはないので、コンパイルする必要があります。(VS 2015および2013でテスト済み、Ideoneでも機能します)。おかげGeobitsマイケルズ

短いバージョンである35バイトを実現できますが、Process is terminated due to StackOverflowExceptionstderrに何も印刷しないという3番目のポイントに違反すると思われる印刷物です。功績MichaelB

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

1
;代わりにを使用して保存できます{}か?私はテストしますが、オンラインサービスは無限ループがあまり好きではありません。
ジオビット

@Geobitsああ、はい。このような単純なものがどのようにすり抜けるか。
スベン書き込みコード

1
コンパイラに依存する可能性がありますが、int mainとして宣言することで別の文字を保存し、returnステートメントなしで実行しました。Microsoft Visual C#2013コミュニティバージョン12.0.31101.00 Update 4を使用しています。「クラスA {static int Main(){for(;;);}}」
MichaelS

@MichaelSありがとう!私にとって2015 VSで働いていました。
スベンはコードを

1
vs 15では、これは(ほとんど)短くなる可能性があります。35class B{static int Main()=>Main();}
マイケルB


20

六角形、1バイト

.

@MartinBüttnerによって作成されたこの素晴らしい言語についてはあまり知りませんが、私が見たところ、@プログラムを停止することはできないので、これは無限にループするはずです。.単に無操作です。


3
試してみてはどうですか:D
牛は

7
これが正しいことを確認できます。:)
マーティンエンダー

@KritixiLithosオンライン通訳が見つからなかったため、テストしたいすべての言語の通訳をダウンロードすることを好まなかったからです。;)
ETHproductions



20

Perl、4バイト

do$0

自身を繰り返し実行します


1
とてもかっこいい。最初はdo EXPR、これは技術的には入力となるファイルから読み取るため、「入力は必要ありません」というルールに違反すると考えましたが、OPはファイルI / Oが受け入れられることを明確にしました。本当にクールなことは、Bashの同等のものとは異なり、たとえば、これは新しいプロセスをフォークしないため、メモリやプロセスの制限に達することなく無期限に継続することです。
ThisSuitIsBlackNot

18

ガンマプレックス、0バイト

Gammaplexでは、無限ループではないプログラムを書くことはできません。ですから、入出力を使用しないプログラムを書くだけです。


ルールには、資格を得るために無限ループが必要であると記載されています。
アロデボー

@arodebaughあります。つまり、すべてのGammaplexプログラムには無限ループがあります。
jimmy23013

16

Pyth、2バイト

# 

Pythは、forever演算子の後にトークンが必要です。(それはスペースです。)


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>&- 0Linuxで動作し、0localhostにマップされます。
デニス

1
yes!(使用yesすることを考えましたが、出力を破棄することはありませんでした。)で1バイトを保存できますyes>/dev/null
-ThisSuitIsBlackNot

3
私はそれを知りませんでした。BSDで動作する場合、はい、素晴らしいですが、ファイルへの書き込みが出力なしの生成に準拠しているとは思いません。
デニス

15

Common Lisp、6文字

(loop)

44
Rare Lispのようなものはありますか?
flawr

10
@flawrユーモラスなコメントだと思いますが、Common Lispは、Lispファミリーのほとんどではないがほとんど互換性のある言語の束を統一した標準化プロセスの結果です。Common LispではないLispファミリーの言語には、Scheme、Racket、Emacs Lisp、およびClojureが含まれます。
ジョシュアテイラー

また(少し長くなりますが、括弧を数える必要がない場合は、2バイトになります)(do()(()))
ジョシュアテイラー

@JoshuaTaylor私も考えdoました、そして読者を無限ループにすることについて考えましたが、まもなくそれを行う方法がわかりません。何も負けないようです(loop)
コアダンプ

@JoshuaTaylorあなたがparens lispを数えなかったなら、それらすべての中で最もゴルファーの言語になるでしょう
チョイス

13

核分裂、1バイト

正確に4つの1バイトソリューションがあります。

R
L
U
D

これらの4文字は、原子が(対応する方向に)そこから始まることを示します。アトムがなければプログラムはすぐに終了するため、それらの1つが必要です。ソースコードのサイズは1文字しかないため、アトムはすぐに折り返され、同じセルを再度実行します。ただし、プログラムの開始後は、UDLR単に入力原子を対応する方向に偏向するように動作するため、この場合は操作なしになります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.