タグ付けされた質問 「interpreter」

さまざまな言語や形式の通訳を書く作業。

8
揮発性を解釈する
揮発性を解釈する Volatileは、A_ / a '_' / Aによって作成されたスタックベースのesolangであり、8つの命令しかなく、完全に処理しています。ただし、これは非決定的でもあります。つまり、プログラムが常に同じ出力を与えるわけではありません。あなたの仕事はこの言語を解釈することです。 言語仕様 esolangsページから取得: ~: Push a random integer in any range of integers. Minimum range of 0 through 32768 +: Pop 2 values and push the sum of the 2 values -: Like +, but subtracts *: Multiply /: Divide. 0-division will result in …

2
Modilar SNISPの停止問題を解決する
Befingeの停止問題を解決するという精神で、Modilar SNISPと呼ばれる別の2D言語を定義しましょう。Modilar SNISPには、次の6つの手順があります。 \ 命令ポインタを次のように指示します。 上から近づいた場合は右に進みます。 右から近づいたら上へ。 下から近づいた場合は左に進みます。 左から近づいたら下へ。 / 命令ポインタを次のように指示します。 上から近づいた場合は左へ。 左から近づいたら上へ。 下から近づいた場合は右に進みます。 右から近づいたら下がる。 ! 次の命令をスキップします。 @ IPの場所と方向を呼び出しスタックにプッシュします。 #呼び出しスタックからIPの場所と方向をポップして復元し、次の命令をスキップします。呼び出しスタックが空の場合、実行は停止します。 . 何もしません。 命令ポインタは、左上隅から右に向かって始まります。それがプレイフィールドを離れると、実行は停止します。 Modilar SNISPはPDAよりも強力ではありません。無制限のストレージの唯一のソースは有限のアルファベット(すべてのIP(場所、方向)ペアのセット)を持つスタック(呼び出しスタック)であるためです。停止の問題はPDAで決定できるため、この課題は常に可能です。 チャレンジ あなたの目標は、Modilar SNISPプログラムを表す文字のマトリックスを受け取り、停止するかどうかに応じて2つの異なる出力の1つを返すプログラムを作成することです。 これはcode-golfなので、有効な最短のプログラム(バイト単位)が優先されます。 仕様書 文字のマトリックスを取る方法は柔軟です。改行で区切られた文字列、文字列の配列、文字の配列の配列、2次元の文字の配列、幅を表す整数を持つ文字のフラットな配列などはすべて受け入れられます。テストケースでは、最初の選択肢を選択します。 入力行列は長方形で(短い行にパディングする必要がないため)、長さと幅がゼロでないと想定できます。 真実/偽物だけでなく、2つの異なる出力を選択できます。 あなたが入力行列が唯一の有効なコマンドで構成されることを前提とすることができます(\、/、!、@、#、および.)。 コマンドが「次の命令をスキップする」と言われた場合、スキップする次の命令があると想定できます。特に、(1)IPがプレイフィールドのエッジにあり、(2)IPがそのエッジに対して垂直に移動しているため、「次の命令」がプレイフィールドの外側にあるような状況では発生しません。 テストケース 次のスニペットは、言語でプログラムをテストするために使用できます。これは、ここで指定された実際の仕様よりも若干許容範囲が広いことに注意してください(たとえば.、no-ops 以外の文字を許可します)。 function htmlEscape(t){let i=document.createElement("span");return i.innerText=t,i.innerHTML}function tick(){snisp.tick(),snisp.update()}function run(){runButton.style.display="none",stopButton.style.display="",code.style.display="none",executionArea.style.display="",snisp.initialize(),intervalId=setInterval(tick,INTERVAL_MS)}function stop(){runButton.style.display="",stopButton.style.display="none",code.style.display="",executionArea.style.display="none",clearInterval(intervalId)}let TICKS_PER_SECOND=5,INTERVAL_MS=1e3/TICKS_PER_SECOND,runButton=document.getElementById("run-button"),stopButton=document.getElementById("stop-button"),code=document.getElementById("code"),executionArea=document.getElementById("execution-display"),intervalId,snisp={x:null,y:null,direction:null,callStack:null,stopped:null,playfield:null,padRows:function(){let t=Math.max(...this.playfield.map(t=>t.length));for(let i=0;i<this.playfield.length;i++)this.playfield[i]=this.playfield[i].padEnd(t,".")},initialize:function(){this.x=0,this.y=0,this.direction="right",this.callStack=[],this.stopped=!1,this.playfield=code.value.split("\n"),this.padRows(),this.update()},getCurrentChar:function(){let t=this.playfield[this.y];if(void 0!=t)return …

3
RoboZZleインタープリター
あなたの仕事は、RoboZZleインタープリターを作成することです。ゲームに慣れていない場合は、robozzle.comのビデオをご覧になるか、以下の説明をお読みください。 ロボットは、赤、緑、青、または黒に着色された正方形の長方形のグリッドに住んでいます。黒い四角はアクセスできません。他はアクセス可能であり、それらのいくつかは星を含んでいます。目標は、黒い四角を踏んだり、地図から落ちたりすることなく、すべての星を集めることです。ロボットは1つの正方形を占め、特定の方向(左、右、上、または下)を向きます。これは、サブルーチンF1、F2、...、F5にグループ化されたアセンブリのような命令に従います。指示は、述語(「なし」、「赤の場合」、「緑の場合」、「青の場合」)とアクション(「進む」、「左に曲がる」、「右に曲がる」)のペアです。 「現在の正方形の赤をペイント」、「緑をペイント」、「青をペイント」、「何もしない」、「F1を呼び出す」、「F5を呼び出す」)。サブルーチンの呼び出しはスタックを使用し、再帰的である場合があります。従来のプログラミングと同様に、サブルーチンの最後の命令が完了した後、サブルーチンが呼び出されたところから実行が続行されます。実行はF1の最初の命令から始まり、ロボットが星のあるすべての正方形を訪問するか、ロボットが黒い四角またはマップの外側を踏むか、1000命令が実行されるまで続きます(失敗した述語と「何もしない」アクション)カウントしない)、または実行する命令がなくなる(スタックアンダーフロー)。 入力: a-マップをエンコードする12x16文字のマトリックス(通常は言語で表される文字列の配列など)- '#'アクセスできない(黒い)四角形、'*'星付きの四角形'.'、その他 c-アクセシブルな正方形の色を表す12x16文字のマトリックス- 'R'(赤)、'G'(緑)、または'B'(青)。アクセスできない正方形は、3つのうち任意の文字で表されます。 yおよびx-ロボットの0ベースの行と列。a[y][x]であることが保証されています'.' d-ロボットが向いている方向:0 1 2 3右用、下、左、上、すなわちに向けました(y,x+1)、(y+1,x)、(y,x-1)、(y-1,x) f-単一の文字列、F1 ... F5の連結された実装。各実装は、(空の可能性がある)述語とアクションのペアのシーケンスであり(サブルーチンごとに最大10ペア)、で終了します'|'。 述語:'_'なし、'r'赤、'g'緑、'b'青 アクション:'F'前進、'L'左折、'R'右折、'r'赤く'g'塗る、緑に'b'塗る、青に塗る、'1'F1を'5'呼び出す...、F5を呼び出す、'_'何もしない 上記のように入力に名前を付ける必要はありませんが、それらの値は指定どおりでなければなりません。 出力:(1またはtrue)ロボットがルールに従ってすべての星を収集する場合、0(false)そうでない場合。 例: a=["################","################","##*....*...*#.##","##.####.#####.##","##.####.#####.##","##.####*...*#.##","##.########.####","##*........*#.##","################","################","################","################"] c=["RRRRRRRRRRRRRRRR","RRRRRRRRRRRRRRRR","RRRBBBBRGGGGRRRR","RRBRRRRGRRRRRRRR","RRBRRRRGRRRRRRRR","RRBRRRRRGGGBRRRR","RRBRRRRRRRRGRRRR","RRRBBBBGGGGBRBRR","RRRRRRRRRRRRRRRR","RRRRRRRRRRRRRRRR","RRRRRRRRRRRRRRRR","RRRRRRRRRRRRRRRR"] y=2; x=6; d=2 // and then depending on "f": f="_FrLg2_1|_FbLrR_2||||" // result:1 f="_FrRg2_1|_FbLrR_2||||" // result:0 (stepped on a black square) f="_FrLrL_1|_FbLrR_2||||" // result:0 (1000-step limit exceeded) f="_FrLg2__|________||||" …

9
はいの通訳を作ろう!
はい、いくつかのスペースで区切られた命令を持つスタックベースの言語です: yes: Push 1 to the stack no: Push 0 to the stack what: Push the input to the stack (input is taken at the start of program execution and is the same for the whole execution) sure: Increment the last item in the stack nah: Decrement the last item …

4
シフト通訳を書く
編集:あなたの一部が疑ったように、公式インタープリターにバグがありました:の構成の順序.が逆になりました。私は2つのバージョンのインタープリターを持っていて、ここでは間違ったバージョンを使用しました。例は、この誤ったバージョン用にも書かれています。リポジトリのインタープリターと以下の例を修正しました。の説明>も少しあいまいだったので修正しました。また、時間がかかることをお詫びし、実生活に巻き込まれました。 EDIT2:私のインタプリタの実装にはバグがあり.、例に反映されていました(未定義の動作に依存していました)。この問題は修正されました。 前書き Shiftは、数年前に作成した難解な関数型プログラミング言語ですが、今日公開されました。スタックベースですが、Haskellのような自動カレーも備えています。 仕様 Shiftには2つのデータ型があります。 任意の正のアリティ(入力数)を持ち、出力のリストを返す関数。たとえば、唯一の入力を複製する関数にはアリティ1があり、2つの入力を交換する関数にはアリティ2があります。 ブランクはすべて同一であり、機能以外の目的はありません。 シフトプログラムは0個以上のコマンドで構成され、各コマンドは単一のASCII文字です。合計で8つのコマンドがあります。 !(適用)スタックから関数fと値をポップしx、に適用fしxます。場合はfアリティ1を持って、リストにはf(x)、スタックの先頭に追加されます。アリティがあるn > 1場合、新しい(n-1)-ary関数gがスタックにプッシュされます。入力を受け取り、戻ります。x1,x2,...,xn-1f(x,x1,x2,...,xn-1) ?(blank)スタックに空白をプッシュします。 +(clone)は、入力を複製する単項関数をスタックにプッシュします。任意の値xがにマップされ[x,x]ます。 >(shift)はn-ary関数を受け取る単項関数をスタックにプッシュし、最初の引数を無視し、残りの引数を呼び出し、結果の前にタックfする(n+1)-ary関数gを返します。たとえば、は入力を受け取ってを返すバイナリ関数です。xfxshift(clone)a,b[a,b,b] /(fork)は、3つの入力を受け取る3項関数をスタックにプッシュし、が空白の場合はそれ以外a,b,cを返します。[b]a[c] $(呼び出し)は、関数fと値をポップするバイナリ関数をスタックにプッシュし、そうxするのfとxまったく同じように適用され!ます。 .(鎖)スタックにプッシュ二つの機能をポップバイナリ関数fとgし、その組成を返す:関数hと同じアリティを有しf、通常はその入力をとるには、適用されるfそれらにし、次いで完全適用g結果に(コールそのアリティが指示する回数だけ)、の出力からの未使用のアイテムはの結果にf残りhます。たとえば、それfが2番目の引数を複製するバイナリ関数で、gがcallであるとします。スタックが含まれている場合は[f,g,a,b,c]、私たちが行う.!!、それが含まれています[chain(f,g),a,b,c]。!!次に行う場合、f最初にに適用されa,b、[a,b,b]、それからgその最初の2つの要素に適用され[a(b),b]ます[a(b),b,c]。そのアリティは2であるため、生成し、スタックは最終的にになります。 @(言う)単純に入力を返す単項関数をプッシュし、0それが空白1か、関数かを出力します。 !値をスタックにプッシュする以外のすべてのコマンドは、入力を実行する方法がなく、何かを出力する唯一の方法はを使用すること@です。プログラムは、コマンドを1つずつ評価し、「say」が呼び出されるたびに0sまたは1sを出力して終了することによって解釈されます。ここで説明されていない動作(空白の適用、長さ0または1のスタックの適用、空白での「チェーン」の呼び出しなど)は定義されていません。インタープリターがクラッシュしたり、警告なしに失敗したり、入力を要求したりする場合があります。 タスク あなたの仕事はシフトの通訳を書くことです。STDIN、コマンドライン、または関数の引数から解釈されるShiftプログラムを取得し、STDOUTに出力するか、0sおよび1sの結果の出力(おそらく無限)を返す必要があります。関数を作成する場合、何らかの方法(Pythonのジェネレーター、Haskellの遅延リストなど)で無限長の出力にアクセスできる必要があります。または、別の入力である数値を受け取り、それよりも長い場合はn少なくともn出力の文字を返すことができますn。 最も低いバイト数が優先され、標準の抜け穴は許可されません。 テストケース このシフトプログラムは次のように出力します01。 ?@!@@! 左から:空白を押し、「発言」を押してから、発言を空白に適用します。これは出力します0。次に、sayを 2回押して、2番目の発言を最初の発言に適用します。これは出力します1。 このプログラムは永久にループし、出力を生成しません。 $+.!!+!! プッシュ呼び出しとクローンを作成し、それらにチェーンを適用します(チェーンはバイナリ関数である!ため、2つのが必要です)。これで、スタックには1つの引数を取り、それを複製して、2番目の最初のコピーを呼び出す関数が含まれています。では、この関数を複製してそれ自体を呼び出します。+!! このプログラムは印刷します0010: ?@$.++>!.!!.!!.!!!!+?/!!!@!@>!!! 空白を押して言ってください。次に、2番目の引数をコピーするバイナリ関数を作成してからb、最初の引数をコピーしaてそれ自体で作成し、次にそのコピーをのコピーに適用してb、を返し[a(a(b)),b]ます。適用言うと、ブランク、その後、適用発言権をスタック上に残りの二つの要素に。 このプログラムは印刷し0ます。!!!追加したそれぞれについて、追加のを出力し0ます。 ?@+$>!>!+>!///!!>!>!.!!.!!.!!+!!!! 空白を押して言ってください。次に、f,g,x入力としてを返す3項関数を作成します[f,f,g,g(x)]。その関数のクローンを作成し、それ自体、たとえば、および空白に適用します。このアプリケーションはスタックを変更しないため、必要な回数だけ関数を再度適用できます。 このプログラムは無限シーケンスを出力します。s 001011011101111...の数は1常に1ずつ増加します。 @?/!@>!??/!!>!+.!!.!!.!!.+>!.!!$$$$+$>!>!$>!>!+>!$>!>!>!+>!>!///!!>!>!>!.!!.!!.!!.!!.!!.!!.!!.!!.!!.!!+!!!!! リポジトリには注釈付きのバージョンが含まれています。

30
トーク通訳
「トーク」は、denisのtalk.tryitonline.netでの引用に対応して作成された、バロック化されたアキュムレータベースの言語です。 Waiting for someone to create an esolang called talk. 。「トーク」言語には4つのコマンドがあります。 00 アキュムレータが0の場合、アキュムレータを0に設定します。 01 アキュムレータが0の場合、アキュムレータを1に設定します。 10 アキュムレータが1の場合、アキュムレータを0に設定します。 11 アキュムレータが1の場合、アキュムレータを1に設定します。 入力: 入力は、標準のI / Oルールによって受け入れ可能な任意の入力メソッドを介して取得できます。 初期アキュムレータ値とプログラムの2つの入力があります。[00, 01, 00]必要に応じて、これらの2つの入力を1つの入力にマージしたり、入力を有効なコマンドに分割したりできます(たとえば、それらをリストとして使用するなど)。 出力: コマンドの実行が終了すると、アキュムレータは暗黙的に出力されます。 ルール: 入力は単一の文字列または文字リストです。 これはcode-golfなので、バイト単位の最も短い答えが優先されます。 数字または文字列/文字を使用します。 テストケース: 0 0001111101 -> 1 0 000100 -> 1 0 11001000 -> 0 リーダーボード これは、通常のリーダーボードと言語ごとの勝者の概要の両方を生成するスタックスニペットです。 回答が確実に表示されるようにするには、次のMarkdownテンプレートを使用して、見出しから回答を始めてください。 # Language …

7
コードゴルフ:フェイリーシーケンス(I)
チャレンジ このタスクでは、整数N(10 ^ 5未満)が与えられ、次数NのFareyシーケンスが出力されます。 入力Nは1行で指定され、入力はEOFで終了します。 入力 4 3 1 2 出力 F4 = {0/1, 1/4, 1/3, 1/2, 2/3, 3/4, 1/1} F3 = {0/1, 1/3, 1/2, 2/3, 1/1} F1 = {0/1, 1/1} F2 = {0/1, 1/2, 1/1} 制約 入力数は10 ^ 6の値を超えません 任意の言語を使用できます 最短のソリューションが勝ちます!
10 code-golf  math  code-golf  math  code-golf  number  number-theory  code-golf  math  arithmetic  repeated-transformation  code-golf  geometry  popularity-contest  code-golf  code-golf  tips  haskell  math  fastest-algorithm  code-golf  combinatorics  code-golf  math  polynomials  rational-numbers  code-golf  code-golf  popularity-contest  javascript  code-golf  kolmogorov-complexity  code-golf  code-golf  math  combinatorics  permutations  code-challenge  restricted-source  random  array-manipulation  code-challenge  generation  code-golf  code-golf  ascii-art  arithmetic  division  code-challenge  number  code-golf  math  number  binary  code-golf  ascii-art  code-golf  interpreter  stack  code-golf  internet  networking  code-golf  math  code-golf  ascii-art  code-golf  math  sequence  code-golf  hello-world  restricted-source  code-golf  ascii-art  code-golf  geometry  code-golf  kolmogorov-complexity  pi  code-golf  math  combinatorics  permutations  code-golf  math  code-challenge  ascii-art  code-golf  string  code-golf  quine  code-golf  math  floating-point  golfscript  code-golf  string  code-golf  sliding-puzzle  code-challenge  arithmetic  code-golf  math  code-golf  geometry  optimized-output 

2
パウダートイでのゴルフのヒント
これを楽しんでください。パウダートイは、特にフィルトロジックに関して、ゴルフにとって興味深い挑戦です。 TPTが課題となるのは、問題に取り組むための多くの方法です。 Should I use Cellular Automaton rules, SWCH logic, Filt logic, subframe filt logic, and/or wall logic? そのため、TPTゴルフのヒントの場所は非常に役立つので、この質問のスレッドを作成しました。 このスレッドは、多くの略語を使用する可能性があります。それらの多くはゲーム内の要素になるため、Wikiでそれらを検索すると、それらが何であるかなど、それらに関する多くの情報が表示されます。 以下は、このスレッドに表示される可能性が最も高いもので、検索に行きたくない人のために、ゲーム内の説明(およびフルネーム)が添付されています。 SPRK:電気。TPTのすべての電子機器の基礎は、ワイヤーおよびその他の導電性要素に沿って移動します。 FILT:フィルター。フォトンをフィルターし、色を変更します。 ARAY:レイエミッター。レイは、衝突したときにポイントを作成します。 BTRY:バッテリー。無限の電力を生成します。 DRAY:複製光線。その前にあるパーティクルのラインを複製します。 CRAY:パーティクルレイエミッタ。tmpによって設定された範囲で、ctypeによって設定されたパーティクルのビームを作成します。 SWCH:スイッチ。スイッチを入れたときにのみ導通します。(PSCNはオン、NSCNはオフ) すべての要素のリスト
9 code-golf  tips  the-powder-toy  code-golf  number  array-manipulation  integer  code-golf  string  decision-problem  boggle  code-golf  array-manipulation  average  code-golf  math  code-golf  decision-problem  restricted-source  code-golf  code-golf  math  primes  code-golf  random  code-golf  tips  perl  code-golf  string  parsing  code-golf  math  number  decision-problem  code-golf  math  number  code-golf  string  alphabet  code-golf  math  geometry  code-golf  interpreter  brainfuck  code-golf  code-golf  decision-problem  boggle  code-golf  math  number  sequence  code-golf  math  code-golf  ascii-art  code-challenge  restricted-source  quine  code-golf  math  decision-problem  number-theory  primes  code-golf  ascii-art  code-golf  integer  graph-theory  chess  code-golf  math  interpreter  code-golf  code-golf  code-golf  ascii-art  code-golf  arithmetic  number-theory  code-golf  string  kolmogorov-complexity  code-golf  string  decision-problem  code-golf  primes  factoring  encode  code-golf  decision-problem  code-golf  geometry  grid  code-golf  quine  code-golf  matrix  code-golf  matrix  code-golf  code-golf  number  array-manipulation  code-golf  array-manipulation  sorting  code-golf  matrix  code-golf  brain-flak 

5
TwoMegaを解釈する
この課題では、あなたがのために通訳書き込みます2 Ω(として転写TwoMega)、ゆるくに基づく言語brainfuck無限次元の収納スペースとを。 言語 2 Ωは、状態の3枚が含まれています。 テープ全て0に初期化ビットの無限のリストである、それは、左端の要素、ない右端の要素を有しています。 メモリポインタテープの要素のインデックスである非負整数です。上位のメモリポインタは、さらに右側のテープセルを指します。0のメモリポインタは、左端の要素を参照します。メモリポインタは0に初期化されます。 ハイパーキューブ概念的であり、∞ハイパーキューブの幅はわずか2細胞にすべての次元で結合したが、寸法の無限の数を意味している0に初期化ビットを含む各々がセルの次元「ボックス」、細胞は数えられない。 ハイパーキューブへのインデックスは、ハイパーキューブ内のセルを参照するビットの無限リストです(ビットの有限リストを使用して有限次元のハイパーキューブを参照するのと同じ方法で)。テープはビットの無限リストであるため、テープ全体は常にハイパーキューブの要素を参照します。この要素は参照対象と呼ばれます。 2 Ωは、 7種類の文字に意味を与えます: < メモリポインタを1だけデクリメントします。0未満にデクリメントすることは未定義の動作であるため、処理する必要はありません。 > メモリポインタを1だけインクリメントします。 ! リファレントでビットを反転します。 . リファレントでビットを出力します。 ^テープ上のメモリポインターが指すセルのビットを、参照先のビットの逆に置き換えます。 [x]xリファレントのビットが1である限り、コードを実行します。 チャレンジ あなたの仕事は、文字列を入力として受け取り、その入力を2Ωプログラムとして実行するプログラムを作成することです。 これはcode-golfなので、有効な最短の回答(バイト単位)が優先されます。 ノート プログラムは文字のみで構成され、適切にネストされる<>!.^[]と想定でき[]ます。 インタプリタは、システムで利用可能なメモリによってのみ制限されるべきです。サンプルプログラムを妥当な時間で実行できるはずです。 サンプルプログラム 印刷1: !. 印刷010: .!.!. 永久に0を印刷します。 ![!.!] 永遠に0を出力します!。 [.]![!.!]

2
DOGOを解釈する!
DOGOを解釈する DOGOはあまり知られていないプログラミング言語です。オリジナルのDOGO(Usenetの投稿からのジョーク言語)は実装されていませんが、それに似た言語が作成されています。言語のコマンドは次のとおりです。 +===========+================================================================+ | Command | Description | +===========+================================================================+ | SIT | If the value of the current memory cell is 0, jump to STAY. | +-----------+----------------------------------------------------------------+ | STAY | If the value of the current memory cell is not 0, jump to SIT. | +-----------+----------------------------------------------------------------+ | ROLL-OVER | Select …

14
コンピューティングインタープリターのゴルフ
前書き Computeは難解なジョーク言語です。 esolangsエントリから: Computeには必須の構文はなく、あらゆる問題を解決する能力があります。人間の言語(英語、スペイン語、ラテン語など)、プログラミング言語(C ++、Java、brainfuckなど)、または考えられるあらゆる種類のデータを解釈できるほどスマートです。唯一の欠点は、I / Oがまったくないことです。 いくつかのサンプルプログラム Hello World 基本的なHello Worldプログラム What is love? 愛が決定した(赤ちゃんは私を傷つけないでください)。 When will we ever graduate? ベータ版を終了するこのサイトの正確な日付を決定します。 チャレンジ あなたの仕事は完全なComputeインタプリタを書くことです。これはかなり難しいように聞こえますが、Computeには絶対にI / Oがないことに注意してください。したがって、インタプリタは、入力プログラムのすべての行で1秒間だけスリープし、\n\nDone.この後に出力します(これは、I / Oがないことの唯一の例外です)。 このサイトの下部に公式の通訳がいます。 公式のインタープリターは、指定されたソースコード内のすべての文字について1秒間停止することに注意してください。有意義な質問で通訳をテストする際の長い待ち時間を回避するために、この課題の説明を続けます。 ルール 入力には、で区切られた複数の行が含まれる場合があります\n。常に少なくとも1行あります。 公式の実装とは異なり、入力としてファイルを取得する必要はありません。Computeプログラムは、任意の形式の入力で取得できます。 許可される唯一の出力はです\n\nDone.。末尾の改行が許可されます。 機能または完全なプログラムが許可されています。 入力/出力のデフォルトのルール。 標準の抜け穴が適用されます。 これはcode-golfなので、バイト数が最も少ないものが優先されます。タイブレーカーは以前の提出です。

2
ニワトリ通訳を書こう!
Chickenというクールな言語のインタープリターを作成する必要があります。 チキンプログラムは、ファイル、標準入力、プログラムまたは関数の引数など、言語にとって最も便利なもの、およびプログラムへの入力から読み取る必要があります。 チキン言語仕様に従ってプログラムを解釈した結果を印刷または返す必要があります。 言語に関する詳細な説明。 鶏肉プログラムの概要 Chickenは、メモリモデル全体を構成する単一のスタックで動作します。命令が実行されると、プログラムはスタックから値をプッシュおよびポップしますが、プログラムがスタックの他の部分を自由に変更できるようにする命令もあります。 スタックには3つのセグメントがあります。 インデックス0および1のレジスター。インデックス0はスタック自体への参照であり、インデックス1はユーザー入力への参照です。主に手順6で使用されます(下記参照)。 ロードされたコード:コードの各行について、このセグメントにはセルがあり、その行には「鶏」の数が含まれています。これには最後に0(プログラム終了のオペコード)が埋め込まれます。 プログラムの実行時に値がプッシュ/ポップされる実際のプログラムスタック。セグメントは分離されていないことに注意してください。つまり、スタックスペースのこのセグメントから自己変更コードを作成したり、コードを実行したりできます。 チキンISA チキンの命令セットは、プログラムの各行に「チキン」という単語が現れる回数に基づいています。空の行はプログラムを終了し、スタックの最上位の値を出力します。 1行あたりの「鶏」の数による鶏の指示セット: リテラル文字列 "chicken"をスタックにプッシュします 上位2つのスタック値を自然数として追加し、結果をプッシュします。 上位2つの値を自然数として減算し、結果をプッシュします。 上位2つの値を自然数として乗算し、結果をプッシュします。 上位2つの値が等しいかどうかを比較し、等しい場合は1を、そうでない場合は0をプッシュします。 次の命令を見て、どのソースからロードするかを決定します。0はスタックからロードし、1はユーザー入力からロードします。スタックのトップは、指定されたソースからロードするアドレス/インデックスを指します。その値をロードしてスタックにプッシュします。これは倍幅の命令であるため、命令ポインタはソースを決定するために使用される命令をスキップします。 スタックのトップは、格納するアドレス/インデックスを指します。その下の値はポップされ、指定されたインデックスでスタックに格納されます。 スタックの先頭は、ジャンプする相対オフセットです。その下の値が正しい場合、プログラムはオフセットでジャンプします。 スタックの先頭をASCIIとして解釈し、対応する文字をプッシュします。 (10 + N)リテラル数n-10をスタックにプッシュします。 例 プログラムは次のとおりです。 chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken chicken (an empty line) (猫のプログラム。前の行に6つの「鶏」があるため、空の行が必要であることに注意してください。) 鶏肉プログラムに提供される入力 …

16
平らな地球を旅する
平地の世界の座標は、緯度(x)と経度(y)で構成されます。これらは0〜9999の範囲の整数です。ガウス整数によく似ていますが、常に次の表記法を使用して記述されています。 411S 370E すなわちであり、SまたはN緯度に付加し、EまたはW2つのコンポーネント間の空間(S)と、経度に付加します。 ゴール 空白で区切られた2つの座標を読み取り、それらの合計を出力するプログラム(関数ではない)を記述します。最初の座標は開始点、2番目の座標は変位、出力は結果の位置です。 入出力 この課題は部分的にフォーマットに関するものであるため、入力形式と出力形式を明確に定義するようにします。 推奨される入力形式では、座標コンポーネント間に1つのスペースがあり、先行ゼロはなく、2つの座標間に改行文字があります。プログラムは、優先フォーマットを読み取ることができる必要があります。 出力には、任意の量の空白と先行ゼロを含めることができます。推奨される入力形式と異なる場合、プログラムはこの形式も読み取ることができる必要があります。 明確にするために、入力には追加の書式設定文字を含めることはできません(含めません)。必要なスペースと改行だけ。 得点 これは新しい勝利条件の実験です。数週間以内に回答を受け入れて、勝者を選びます。その後、より適切な回答が出た場合は、回答を変更します。 プログラムのスコアはそのバイト数です。優勝したプログラムは、400バイトより短く、バイト数が最も少ないプログラムですが、最も冗長なプログラミング言語で書かれています。勝者を決定するには: バイト数が400以上のプログラムを削除します(参加できますが、勝つことはできません)。 各プログラミング言語の最短プログラムのみを検討する 最長のプログラムの勝利 ポリグロットは、有効なすべての言語のプログラムと競合します(たとえば、プログラムが両方bashで有効である場合、sh両方の言語のプログラムと競合します)。 テストケース テストケースでは、最初の2行が入力で、3行目が出力です。 0S 0E 0S 0W 0N 0E (ゼロの方向は、入力と出力の両方で重要ではありません) 0S 9999E 9999N 9999W 9999N 0E (最大値) 42S 314W 42N 2718W 0N 3032W (ゼロの方向は出力では関係ありません) 5555N 8888W 7777S 0E 2222S 8888W (負の値はありません。符号を変更する必要がある場合は方向を変更してください) 0001N 4545W …
8 code-challenge  arithmetic  parsing  code-golf  interpreter  code-golf  random  classification  code-golf  ascii-art  code-golf  code-golf  string  number  array-manipulation  code-golf  math  rational-numbers  code-golf  internet  classification  code-golf  string  integer  code-golf  number  graphical-output  typography  king-of-the-hill  code-golf  number  sequence  palindrome  code-golf  math  code-golf  math  probability-theory  code-challenge  image-processing  test-battery  code-golf  number-theory  code-golf  tips  swift  code-golf  graphical-output  image-processing  color  code-golf  string  conversion  code-golf  string  array-manipulation  code-golf  encryption  king-of-the-hill  code-golf  string  ascii-art  code-golf  code-golf  string  compression  decision-problem  code-golf  ascii-art  number-theory  division  code-golf  ascii-art  code-golf  code-golf  number  array-manipulation  code-golf  ascii-art  code-golf  code-golf  string  code-golf  sequence  number-theory  code-golf  math  geometry  code-golf  combinatorics  code-golf  integer  code-golf  arithmetic  number-theory  code-golf  arithmetic  restricted-source  number-theory  restricted-complexity 

1
新しい難解な言語PointerLangのインタープリターを作成する
私は、ポインター演算がプログラミングの主要ツールである言語を設計しました。 下記は用例です。 (print 0 to 8) =9[>1=9-*-1.>-1-1] (print 1 to 10 with spaces in between, character literal extension used) =1[.>1=10-*-1[>1=' '!>-2+1;-2];1]='\n'! (compute the factorial of 10) =10>1=*-1-1[>-1**1>1-1]>-1. (print "hi") =104!=105! (print "hi" with extension for arrays) ={104,105,0}[!>1] (print "Hello, world!" with extension for C-style string literals) ="Hello, world!"[!>1] 言語仕様 言語の定義は非常に簡単です。Cの経験があれば簡単に理解できますが、私はそうは思いません。 …

3
whatfuckを解釈する
Smallfuckは、1ビットのセルを備えたブレインファックのような言語です。次の指示があります。 > Increment the pointer < Decrement the pointer * Flip the current bit [ If the current bit is not set, jump to the instruction after the matching ] ] If the current bit is set, jump to the instruction after the matching [ ( or just jump unconditionally …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.