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

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

15
私の後に繰り返して!
引数として文字列を指定すると、重複しない最長の重複部分文字列の長さ、またはそのような文字列がない場合はゼロを出力します。 入力文字列が空ではないと仮定できます。 例 abcdefabc:部分文字列abcは位置1と7で繰り返されるため、プログラムは3を出力する必要があります abcabcabcabcab:abcabcまたはbcabcaまたはcabcab繰り返されるため、プログラムは6を出力します。(サブストリングabcabcabcabも繰り返されますが、オカレンスは重複するため、受け入れません)。 aaaaaaa:aaaたとえば、位置1と4で繰り返されるため、プログラムは3を出力します。 abcda:aが繰り返されるため、プログラムは1を出力します。 xyz:繰り返し文字列なし→ 0 ababcabcabcabcab:6を返す必要があります これはcode-golfなので、バイト数が最も少なくなります。
23 code-golf  string  code-golf  code-golf  kolmogorov-complexity  primes  code-golf  kolmogorov-complexity  hexadecimal  code-golf  code-golf  string  code-golf  string  random  code-golf  array-manipulation  code-golf  ascii-art  kolmogorov-complexity  random  code-golf  array-manipulation  code-golf  stateful  code-golf  hello-world  code-golf  string  code-golf  interpreter  lisp  code-golf  restricted-source  quine  palindrome  code-golf  ascii-art  random  generation  challenge-writing  ascii-art  random  polyglot  maze  answer-chaining  string  cops-and-robbers  whitespace  code-golf  string  cops-and-robbers  whitespace  code-golf  number  sequence  code-golf  date  code-golf  ascii-art  decision-problem  code-golf  combinatorics  chemistry  code-golf  kolmogorov-complexity  source-layout  radiation-hardening  code-golf  ascii-art  path-finding  maze  code-golf  string  ascii-art  game  animation  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  restricted-source  new-years 

4
小さな言語は小さな通訳に値する
これは非常に簡単な言語定義です。 A Variable is any string that does not contain ^, <, >, !, or ? The empty string is a valid variable identifier The value of every variable starts at 0. A Statement is one of (var is a Variable, P is a Program): var^ -> changes var to …

11
自分の言語ではなく自分の言語を解釈しますか?
「Xを解釈する」という多くの課題があります。Xは単純な言語です。私の意見では、それはあまりにも退屈です。インターネット上のすべての先延ばしの人々に何か面白いことをするために、この挑戦​​を試みることができます: チャレンジ 言語を選択してください$LANG。$LANGチューリング完全プログラミング言語またはプログラミング言語のチューリング完全サブセットのいずれかです。あなたの言語の機能$LANGを解釈のために省略した場合、あなたの提出物もで書かなければならないので、あなた自身のプログラムにもそれを使用してはならないことに注意してください$LANG。 で$LANG書かれたコンパイラ/インタプリタを記述し$LANGます。evalこのコンパイラを作成するために使用できる言語のすべての機能(および友人を含む)を使用できます。タスクをより困難にするために、1つの制限があります。プログラムは$LANG、インタープリター/コンパイラー自体を除くすべての有効なプログラムを解釈/コンパイルできる必要があります。解釈/コンパイルされるプログラムがインタープリターまたはコンパイラー自体である場合(ファイル名に関係なく)、プログラムはインタープリターまたはコンパイラーの機能とはまったく関係のないこと(barfingや印刷など)を行う必要がありますHello, world!。 このタスクをさらに複雑にするために、プログラムはコンパイルまたは解釈時に独自のソースを読み取ってはなりません。 仕様書 このタスクはコードゴルフです。正しい文字が最も少ない投稿が優先されます。同点の場合、最初に提出されたソリューションが勝ちます。 プログラム/スクリプトは、ファイルから解釈されるプログラムを読み取る必要があります。パスと名前をハードコーディングできます。ファイルが読み取られたら、ファイルを別のファイルにコンパイルするか(システムで実行可能である必要があります)、直接実行することができます。$LANGファイル読み取り機能が不足している場合は、に適合するコードを読み取る別の方法を選択できます$LANG。$LANG別の言語のサブセットとして選択することはできませんが、ファイル読み取り機能は削除されます。 通常のコードゴルフ規則が適用されます。つまり、この課題を解決するために作成した個人のペット言語は、ソリューションがそれを使用して簡単になった場合は禁止されています(ソリューションを正確に実装する単一文字プログラムを定義するなど)。ルールの乱用は奨励されます。

5
「申し訳ありませんが、若い男性ですが、それはずっと亀です!」
Lindenmayerシステムを実行する A Lindenmayerシステム(またはL-システム)に関連しThue及びポストシステムとで使用されている植物モデリング及びフラクタル世代。 Lシステムは、シンボルアルファベットからのシンボルがシンボルの置換シーケンスにマッピングされる文字列書き換えによって記述されます。これらのマッピングのコレクションは、適切なLシステムを構成します。 Prusinkiewiczによって考案されたグラフィカルな出力方法は、タートル描画コマンドとして、指定された反復回数のマッピングが初期シーケンスに適用された後、結果のシーケンスを解釈します:前方、後方、左、右、など。反復回数が異なるとサイズが大幅に異なる画像が生成される可能性があるため、これには図面のスケールを制御するための追加コードが必要になる場合があります。 あなたの仕事は、最小数の文字でLシステムを実行することです。プログラムは、適切な入力(ファイル、コマンドライン、ソースの外部をお願いします)を提供することにより、ウィキペディアのページからドラゴンカーブと分岐ステムの両方をレンダリングできる必要があります。 これはコードゴルフです。 編集:これは私が町の周りに投稿したいくつかの例です。SO / rotate-to-northへの回答{ 私が最初にLシステムを発見した場所 }、SO / how-to-program-a-fractalへの回答、SO / recursion-in-postscriptへの回答、comp.lang.postscriptディスカッション/リサイタル、追記L-システム収集、codegolf.SE/draw-a-sierpinski-triangle {自分とthomasW間の競争の起源}。

7
解釈> <>(魚)
&gt; &lt;&gt;は人気のある言語ではありませんが、ゴルフに適している可能性があり、このWebサイトで使用されています。Befungeに触発され、その指示にいくつかの類似点があります。 必要なコマンド: &gt; &lt; ^ v 指示ポインターの方向を変更します(右、左、上、下) / \ | _ # ミラー。ポインターは、すでに持っている方向に応じて方向を変えます。 x ランダムな方向。 + - * , % それぞれ、加算、減算、乗算、除算、モジュロ。AとBをスタックからポップし、B演算子Aをプッシュします。0で除算するとエラーが発生します。 0-9 a-f 対応する値をスタックにプッシュします。a = 10、...、f = 15 = スタックからAとBをポップし、B = Aの場合は1をプッシュし、そうでない場合は0をプッシュします。 ) より大きい。AとBをスタックからポップし、B &lt;A ( より小さい場合は1をプッシュします。AとBをスタックからポップし、B&gt; Aの場合は1をプッシュし ' " ます。文字列解析を有効にします。文字列解析は、閉じ引用符が見つかるまで、見つかったすべての文字をスタックにプッシュします。 ! 次の命令をスキップします。 ? スタックのトップがゼロの場合、またはスタックが空の場合、次の命令をスキップします。(注:これはスタックから何もポップしません!)スタック : の一番上の値を複製します。 ~ スタックから一番上の値を削除します。 …

14
これは切り捨てられた三角形の数ですか?
関連するOEISシーケンス:A008867 切り捨てられた三角数 三角形の数の一般的なプロパティは、三角形に配置できることです。たとえば、21を取り、osの三角形に配置します。 o ああ おー おおおお ああ おっと 各角から同じサイズの三角形を切り取る「切り捨て」を定義しましょう。21を切り捨てる1つの方法は次のとおりです。 。 。。 おー おおおお 。おー。 。。oo。。 (の三角形は.オリジナルからカットされます)。 o残りは12 秒なので、12は切り捨てられた三角形の番号です。 仕事 あなたの仕事は、整数を取り、数値が切り捨てられた三角形の数であるかどうかを返す(または標準出力メソッドのいずれかを使用する)プログラムまたは関数(または同等のもの)を書くことです。 ルール 標準的な抜け穴はありません。 入力は負でない整数です。 カットの辺の長さは元の三角形の半分を超えることはできません(つまり、カットは重なり合うことができません) カットの辺の長さはゼロにすることができます。 テストケース 真実: 0 1 3 6 7 10 12 15 18 19 偽物: 2 4 5 8 9 11 13 14 16 17 20 …
20 code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

27
*の通訳を書く
タスクは簡単です。言語*のインタープリターを作成します。 wikiへのより大きなリンクがあります。 有効なプログラムは3つだけです: * 「Hello World」を印刷します * 0〜2,147,483,647の乱数を出力します *+* 永遠に実行します。 3番目のケースは、この質問の仕様に従った無限ループでなければなりません 入力: 入力は、標準のI / Oルールで受け入れ可能な任意の入力方法で取得できます。 上記のプログラムのいずれかになります 出力: 最初のケースではHello World、末尾の改行の有無にかかわらず、正確に印刷する必要があります。 2番目の場合、言語の整数の最大値が2,147,483,647より小さい場合は、言語の整数の最大値を使用します 最初と2番目のケースは、標準のI / Oルールで受け入れ可能な出力に出力できます。 3番目のケースでは、出力は行われません。 得点: これはcode-golfであるため、バイト単位の最短回答が勝ちです。
20 code-golf  interpreter  code-golf  array-manipulation  sorting  code-golf  halting-problem  code-golf  javascript  code-golf  algorithm  code-golf  arithmetic  code-golf  math  counting  code-golf  math  code-golf  decision-problem  radiation-hardening  code-golf  conversion  bitwise  code-golf  number  decision-problem  code-golf  string  decision-problem  code-golf  random  game  code-golf  ascii-art  graphical-output  code-golf  decision-problem  binary-tree  tree-traversal  code-challenge  array-manipulation  code-challenge  graphical-output  path-finding  test-battery  algorithm  code-golf  integer  factorial  code-golf  binary-tree  code-golf  grid  graph-theory  code-golf  regular-expression  quine  code-golf  encoding  code-golf  king-of-the-hill  javascript 

11
二乗差を最大化する
整数値の順列を検討1するがN。たとえば、次の例N = 4: [1, 3, 4, 2] このリストは循環的である1と見なし、そのように、および2隣接として扱われます。そのようなリストについて計算できる1つの量は、隣接する値の差の2乗の合計です。 (1-3)² + (3-4)² + (4-2)² + (2-1)² = 10 あなたの仕事は、正の整数を与えられて、この量を最大にする順列を見つけることNです。N = 4上記の例の場合、最適ではありません(実際、最小限です)。18次の順列(および他のいくつかの順列)の合計平方差を達成できます。 [1, 4, 2, 3] アルゴリズムは(のN)多項式時間で実行する必要があります。特に、すべての順列の差の合計を単純に計算することはできません。 プログラムまたは関数を作成し、STDIN(または最も近い代替)、コマンドライン引数または関数引数を介して入力を取得し、STDOUT(または最も近い代替)、関数の戻り値または関数(out)パラメーターを介して結果を出力できます。 出力は、任意の便利で明確なフラットリストまたは文字列形式にすることができます。0toのN-1代わりに1toの値を持つリストを返すことを選択できますN。 標準のコードゴルフ規則が適用されます。 テストデータ この問題に対する優れた分析ソリューションがあります。たとえば、すべての有効なソリューションN = 10は次のリストと同等です(巡回シフトおよび反転まで)。 [7, 5, 6, 4, 8, 2, 10, 1, 9, 3] 私は(それがパターンを把握する、おそらく十分ですが)それを超えてあまりにも明らかにし、その代わりに任意のより多くの例を与える、あなたは結果が与えられたため、次の総乗違いがあることを確認することができますしたくありませんN。 N Total squared difference 1 0 2 …
19 code-golf  array-manipulation  permutations  restricted-complexity  code-golf  geometry  grid  code-golf  string  sorting  code-golf  simulation  code-golf  string  code-golf  arithmetic  code-golf  sorting  code-golf  string  code-golf  sorting  code-golf  interpreter  code-golf  number  kolmogorov-complexity  natural-language  conversion  code-golf  random  internet  code-golf  board-game  code-golf  number  sequence  code-golf  math  number  code-challenge  image-processing  classification  test-battery  code-golf  ascii-art  code-golf  tips  code-golf  arithmetic  code-golf  tips  code-golf  tips  javascript  code-golf  array-manipulation  code-golf  ascii-art  code-golf  string  binary  code-golf  arithmetic  linear-algebra  matrix  code-golf  sequence  code-golf  math  number  arithmetic  code-golf  primes  code-golf  math  code-golf  array-manipulation  counting  code-golf  arithmetic  code-golf  quine  code-generation  polyglot  code-golf  math  kolmogorov-complexity  trigonometry  code-golf  string  encryption 

5
ピクルスのビット
Pythonのpickleモジュールはシリアル化に使用され、後で再構築できるようにオブジェクトをダンプできます。このため、pickleは単純なスタックベースの言語を使用します。 物事を単純にするために、この言語の小さなサブセットを扱います。 ( Push a mark to the stack S'abc'\n Push a string to the stack (here with contents 'abc') l Pop everything up to the last mark, wrapping all but the mark in a list t Pop everything up to the last mark, wrapping all but the mark in …

10
プログラミング言語インタープリターを作成する[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Code Golf Stack Exchangeのトピックになるようにします。 閉じた3年前。 仕事: プログラミング言語のスニペットを解析できるインタープリターを作成する必要があります。言語は複雑である必要はありませんが、次の構文要素を含める必要があります。 変数を割り当て、読み取る機能(のような単純なようであってもよいa- zである既成の変数) ifステートメント(elseifおよびelseは必要ありません) ループ(任意の数へのカウント、カウンターへのユーザーアクセスは必要ありません) 変数(加算、減算、乗算、除算、より大きい/より小さい、等しい)を使用した単純な数学 文を印刷する ルール: 他の一般的な言語の構文をコピーすることはできません。 別のインタープリターの修正ではなく、独自のインタープリターを作成する必要があります。 インタプリタは任意の言語で作成できます。 お使いの言語で99ボトルのビールのサンプルプログラムを作成します(こちらをご覧ください) これは人気コンテストなので、最も賛成の回答が勝ちます。

8
Brain-Flak Classicインタープリターを作成してください!
Brain-Flak(Brainf ** kとFlak-Overstowのクロス)は、スタックベースの難解な言語です。この課題が投稿されて以来、言語は進化し更新されましたが、この言語のこの最初のリビジョンは「brain-flak classic」として知られています。 Brain-Flakクラシックコードの文字列を取得して評価するプログラムまたは関数を作成する必要があります。また、整数の(空の可能性のある)リストを取ります。Brain-Flakクラシックプログラムへの入力があります。 言語 Brain-Flakには、「左」と「右」として知られる2つのスタックがあります。アクティブなスタックは左から始まります。空のスタックがポップまたはピークされた場合、0が返されます。変数はありません。プログラムが開始されると、各入力がアクティブスタックに順番にプッシュされます(したがって、最後の入力がスタックの一番上になります)。 Brain-Flakプログラムで有効な文字はのみ()[]{}&lt;&gt;であり、常にバランスをとる必要があります。無効な文字がある場合、または角かっこが一致しない場合、未定義の動作が発生します。何でも有効です。 関数には、NiladsとMonadsの 2つのタイプがあります。niladは 0の引数をとる関数です。すべてのniladsは次のとおりです。 () +1。 [] -1。 {} アクティブなスタックをポップします。 &lt;&gt; アクティブなスタックを切り替えます。 これらは評価されるときに連結されます。したがって、アクティブスタックの上部に「3」がある場合、このスニペットは次のとおりです。 ()(){} するために評価されます1 + 1 + active.pop()。5.に評価思われる&lt;&gt;0と評価されます。 モナドは1つの引数、Brain-Flakコードの塊を取ります。すべてのモナドは次のとおりです。 (n) アクティブなスタックで「n」を押します。 [n] 'n'をintおよび改行として出力します。 {foo}active.peek()!= 0の間に、fooを実行します。0¹に評価します。 &lt;foo&gt; fooを実行しますが、0として評価します。 これらの関数は、内部の値も返すため、 (()()()) 3を押して [()()()] 3を印刷しますが、 [(()()())] 印刷してプッシュします3。 プログラムの実行が完了すると、アクティブスタックに残っている各値が整数として出力され、間に改行が入ります。他のスタックの値は無視されます。 ルール: プログラムは、(-128、127)の範囲の数字と、少なくとも255のスタックサイズをサポートする必要があります。より大きな、素晴らしいをサポートする場合。 アンダーフロー/オーバーフローは未定義です。 サンプルIO: 空のプログラム: 入力:なし 出力:なし …

6
合計?それが私の得意です!
前書き Forteは、数値の値を変更するという概念に基づいた非常に特殊な難解な言語です。Forteの数値は定数ではなく変数であるため、LET命令を使用して新しい値を割り当てることができます。 たとえば、実行した後LET 2=4-1に、今から2の値を前提としてい3た値がいつでもあることを意味、2それは代わりで「置き換え」された表現で起動しますが3。これで式(1+1)*2はに評価され9ます。 Forteのこの命令は、情報の保存とフロー制御の両方に使用されます(行には番号が付けられ、番号の値を変更することで実行順序を決定できます)。この課題では、この2番目の側面を扱いません。 チャレンジ ForteのLET式の簡略化されたサブセット用のインタープリターを作成する必要があります。 入力として、この文法に続く一連の行を受け取ります。 &lt;line&gt;::= &lt;number&gt;=&lt;expression&gt; &lt;expression&gt;::= &lt;number&gt;|&lt;expression&gt;+&lt;number&gt; 注:この文法は、行番号、LET、および括弧(常に必須)がないため、有効なForteではありません。 つまり、合計の計算と数値への値の割り当てのみを処理する必要があります。括弧は入力に存在せず、各式は左から右に評価する必要があります:部分的な結果は再定義の影響を受けることに注意してください! 数値は常に、使用している言語のネイティブ整数型の制限(または2 ^ 32のいずれか大きい方)までの負でない整数になります。 各行について、式の結果を出力し、この結果を最初の数値の(場合によっては再割り当てされた)値に割り当てる必要があります。これは、後続の行の解釈方法に影響します。 これはcode-golfで、最短のコード(バイト単位)が勝ちです! その他の規則 入力形式は柔軟です。たとえば、改行を含む単一の文字列、文字列のリスト、数値のリストのリストを使用できます...入力。 関数、完全なプログラム、またはソリューションをサブミットして、REPL環境で実行し、各行に対して1回呼び出すことができます。 標準的な抜け穴は禁止されています。特に、コード内で外部のForteインタープリターを呼び出すことはできません。 例 これらはすべて同じ入力の一部です。各行の後に、その行に関連する予想される出力が表示されますが、関連する再割り当てを示すコメントが表示される場合もあります(必要な出力の一部ではありません)。 5=4 4 6=5 4 # 5 -&gt; 4 7=1+2+5 7 7=5+2+1 4 # Order of operations matters! 5+2 -&gt; 4+2 -&gt; 6 -&gt; 4 18=5+6+7 …

17
存在しない言語用のインタープリターを構築する
入力を取得し、解釈し、結果を数値の配列として出力する、偽のスタックベースの言語用のインタープリターを構築します。各バイトを反復処理し、この表に基づいて異なる機能を実行する必要があります。 0000(0):連結(スタック内の上位2つの数字を文字列であるかのように結合します。例:12,5-&gt; 125) 0001(1):インクリメント(スタックの先頭の数字に1を加算) 0010 (2):デクリメント(スタックの先頭の数値から1を引く) 0011(3):乗算(スタックの上位2つの数値を乗算) 0100(4):除算(2番目から2番目の数値を除算スタックの一番上の番号) 0101(5):追加(スタックの一番上の2つの番号を追加) 0110(6):減算(スタックの一番上の番号をその下から減算) 0111(7):指数( 2番目から2番目の数値を1のべき乗で計算します) 1000(8):モジュラス:(2番目から2番目の数値をモジュロします) 1001(9):右に回転(スタックを1つ下にシフトします。下の数字が上になります) 1010(A):左に回転(スタックを1つ上にシフトします。上の数字が下になります) 1011(B):複製(先頭の数字を2回表示するようにコピーします。例:4,1は4,1,1になります) 1100(C):二重複製(スタックの先頭の2つの数字をコピーします。例:4 1,2は4,1,2,1,2になります) 1101(D):スワップ(スタックの上の2つの数字をスワップします。例:4,1,2は4,2,1になります) 1110(E):ダブルスワップ(下の2つの数字で2つの数字を入れ替えます。例:1,2,3,4,5は1,4,5,2,3になります) 1111(F):削除/ポップ(先頭の数字を削除しますスタック) たとえば、次を含むファイル 1 1 BC 5 C 5 B 9 5-入力(16進数) | | | | | | | | | | 1 2 2 2 4 4 6 6 2 …

3
文字列内のパターンを検索
この挑戦では、あなたの仕事は、与えられた構造を持つ部分文字列を見つけることです。 入力 入力は、空ではない2つの英数字文字列、パターン p、およびテキスト tです。の考え方は、の各文字がp連続して空でない部分文字列を表し、その部分文字列tが隣り合って出現し、pそれらの連結を表すことです。同一の文字は同一の部分文字列に対応します。たとえば、パターンaaは空でない正方形(短い文字列をそれ自体に連結することによって取得される文字列)を表します。したがって、パターンaaは部分文字列byebyeとa一致し、それぞれ一致しbyeます。 出力 テキストtにp一致する部分文字列が含まれている場合、出力はその部分文字列になり、の文字に:対応する文字列の間にコロンが挿入されますp。例えば、我々が持っている場合t = byebyenowとp = aa、その後、bye:bye許容出力されます。一致する部分文字列にはいくつかの選択肢がありますが、そのうちの1つだけを出力します。 t一致する部分文字列が含まれていない場合、出力は悲しい顔になり:(ます。 規則と説明 の異なる文字はp同一の部分文字列に対応できるためp = aba、文字列と一致できますAAA。文字は空でない文字列に対応する必要があることに注意してください。特に、pがより長い場合t、出力はでなければなりません:(。 完全なプログラムまたは関数を記述できます。また、2つの入力の順序を変更することもできます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。 テストケース 形式で与えられますpattern text -&gt; output。他の受け入れ可能な出力が存在する可能性があることに注意してください。 a Not -&gt; N aa Not -&gt; :( abcd Not -&gt; :( aaa rerere -&gt; re:re:re xx ABAAAB -&gt; A:A MMM ABABBAABBAABBA -&gt; ABBA:ABBA:ABBA x33x 10100110011001 -&gt; 10:1001:1001:10 …
17 code-golf  string  code-golf  ascii-art  geometry  code-golf  ascii-art  code-golf  sequence  stack  code-challenge  number  sequence  answer-chaining  code-golf  code-challenge  math  combinatorics  binary-matrix  code-golf  number  code-golf  cryptography  bitwise  code-golf  sudoku  code-golf  brainfuck  metagolf  code-golf  probability-theory  number-theory  primes  fewest-operations  factoring  golf-cpu  code-golf  restricted-source  code-golf  graphical-output  sequence  binary  code-golf  tips  c#  code-golf  geometry  code-golf  graphical-output  fractal  code-golf  number  sequence  code-golf  number  array-manipulation  popularity-contest  game  board-game  code-golf  puzzle-solver  grid  code-golf  ascii-art  geometry  grid  tiling  code-golf  ascii-art  whitespace  balanced-string  code-golf  card-games  king-of-the-hill  javascript  code-golf  whitespace  balanced-string  code-golf  code-golf  math  abstract-algebra  code-golf  java  code-golf  interpreter  stack  code-golf  base-conversion  code-golf  tips  code-golf  ascii-art  geometry  brainfuck  metagolf  code-challenge  math  quine  code-generation  code-golf  number  kolmogorov-complexity  arithmetic  expression-building  code-golf  string  code-golf  quine  popularity-contest  code-golf  base-conversion  code-challenge  image-processing  code-golf  conversion  coding-theory 

6
最小バイトコードインタープリター/ VM
リーダーボード-JITコンパイル済み(低いほど良い) es1024-81.2ポイント(動作中のコンパイラを含む!) キース・ランドール-116ポイント Ell-121ポイント リーダーボード-解釈済み(低いほど良い) マーティン・ブットナー-706654ポイント(約2時間)。 クリプティック-30379ポイント(97秒) あなたがそれを受け入れることを選択した場合、あなたの使命は、可能な限り最小のバイトコードインタープリター/ VMを書くことです。VM /インタープリターは、以下で指定されている言語で、小さなCISCアーキテクチャを使用します(操作のサイズは異なる場合があります)。完了したら、3つのCPUレジスタの値を印刷して、正しい出力が印刷されたことを証明する必要があります(3,126,900,366)。 コンパイラ 独自のテストを作成する場合は、コンパイラを以下に掲載します。回答とともにテストを投稿してください。 コードスニペットを表示 window.compile=function(){var e=$("#text").val().toLowerCase().match(/[^\r\n]+/g);var t=[];for(var n=0;n&lt;e.length;n++)compileLine(e[n],t);var r="";for(var n=0;n&lt;t.length;n++)if(typeof t[n]=="string")r+="\n";else r+="0x"+t[n].toString(16)+" ";$("#compiledArray").val(r)};window.compileLine=function(e,t){var n=e.split(" ");if(n[0]=="load"){t.push(0);t.push(getInt(n[1]));t.pushArr(getInt(n[2]))}if(n[0]=="rload"){t.push(1);t.push(getInt(n[1]));t.push(getInt(n[1]))}if(n[0]=="push"){t.push(2);t.push(getInt(n[1]))}if(n[0]=="pop"){t.push(3);t.push(getInt(n[1]))}if(n[0]=="add"){t.push(4);t.push(getInt(n[1]));t.push(getInt(n[2]))}if(n[0]=="sub"){t.push(5);t.push(getInt(n[1]));t.push(getInt(n[2]))}if(n[0]=="mul"){t.push(6);t.push(getInt(n[1]));t.push(getInt(n[2]))}if(n[0]=="div"){t.push(7);t.push(getInt(n[1]));t.push(getInt(n[2]))}if(n[0]=="jmp"){t.push(8);t.pushArr(getInt(n[1]))}if(n[0]=="cmp"){t.push(9);t.push(getInt(n[1]));t.push(getInt(n[2]))}if(n[0]=="branchlt"){t.push(10);t.pushArr(getInt(n[1]))}if(n[0]=="brancheq"){t.push(11);t.pushArr(getInt(n[1]))}if(n[0]=="branchgt"){t.push(12);t.pushArr(getInt(n[1]))}if(n[0]=="branchne"){t.push(13);t.pushArr(getInt(n[1]))}t.push("NEW LINE")};window.getInt=function(e){if(e.trim().startsWith("&lt;--"))return"COMMENT";if(e=="r0")return 0;if(e=="r1")return 1;if(e=="r2")return 2;if(e.startsWith("0x"))return parseInt(e,16);if(isNaN(parseInt(e)))alert(e);return getIntBytes(parseInt(e))};if(typeof String.prototype.startsWith!="function"){String.prototype.startsWith=function(e){return this.slice(0,e.length)==e}}Array.prototype.pushArr=function(e){this.push.apply(this,e)};window.getIntBytes=function(e){var t=[];var n=4;do{t[--n]=e&amp;255;e=e&gt;&gt;8}while(n);return t} &lt;script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"&gt;&lt;/script&gt; &lt;textarea id="text" cols="40" rows="10"&gt;&lt;/textarea&gt; &lt;br/&gt; &lt;button onclick="compile()"&gt;Compile&lt;/button&gt; &lt;br/&gt; &lt;textarea id="compiledArray" cols="40" rows="10" readonly&gt;&lt;/textarea&gt; …

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