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

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

3
Universal Machineエミュレーターを実装する
目標は、最短コードでICFP 2006のユニバーサルマシンをエミュレートする完全なプログラムを作成することです。Universal Machineには、ここで説明する非常に単純な命令セットがあります。エミュレータはコマンドライン引数からファイル名を読み取り、プログラムとしてファイルを実行する必要があるため、言語は何らかの方法でコマンドライン引数と標準入力/出力をサポートする必要があります。エミュレータは、妥当な時間内(数十年以内)にサンドマークを完了する必要があります。命令セットの簡単な説明を次に示します。 マシンには8つのレジスタがあり、それぞれが32ビットの符号なし整数を保持しています。 マシンは、32ビットの符号なし整数セルの配列のインデックス付きセットを保持します。 簡単に言えば、割り当て命令は不透明な32ビットuintを返します。これは、作成された配列へのハンドルであり、静的サイズを持ち、32ビットuint要素を保持します。 0番目の配列はプログラムを示します。起動時にビッグエンディアンファイルから読み込まれます。 0配列のセルを指す命令ポインターもあります。 各ステップで、ポインターが指すセルから命令が読み取られ、ポインターは何かが実行される前に確認されます。 最上位4ビットはオペコードを表します。 オペコードが13の場合、次の3ビットはレジスタを表し、残りの25ビットはそのレジスタに書き込まれる番号を表します。 それ以外の場合、9つの最下位ビットは3つのレジスタ、たとえばA、B、およびCを表します。Cは3つの最下位ビットで表されます。 その後、オペコードに応じて、次のようになります 。0 = C == 0でない限りA = B 1. A = B [C] 2. A [B] = C 3. A = B + C 4. A = B * C 5. A = B / C 6. A …

3
Brainfuckのビット演算子
あなたの仕事は、以下の二項演算子のそれぞれに対して1つのBrainfuckプログラムを作成することです。各プログラムは、入力から1つまたは2つの8ビット数(AおよびB)を取得し、指定された操作を計算する必要があります。 A XOR B A AND B A OR B A Shifted Left by 1 (circular shift) NOT A 5つすべてを実装する必要はありません。スコアは次の方法で計算されます。 #totalCharacters + {4000 * #problemsNotCompleted} したがって、有効なスコアはゼロ(最高)から20,000(何も完了していない)までです。 結果を保存する場所や、入力を保存するかどうかは気にしません。8ビットセル、および必要なだけの空のセルを右側にのみ想定します。 最適なメモリ位置に番号がすでにあると仮定することができるので、IO操作を心配する必要はありません。
13 code-golf  binary  brainfuck  code-golf  code-golf  ascii-art  random  code-golf  code-golf  code-challenge  sorting  code-golf  code-challenge  java  code-golf  statistics  code-golf  code-challenge  fastest-code  code-golf  math  code-golf  math  kolmogorov-complexity  code-golf  code-golf  array-manipulation  combinatorics  code-golf  kolmogorov-complexity  popularity-contest  underhanded  code-golf  math  floating-point  code-golf  interpreter  code-golf  music  code-golf  code-golf  cryptography  code-challenge  scrabble  code-golf  code-challenge  popularity-contest  quine  code-golf  quine  cryptography  code-golf  kolmogorov-complexity  code-golf  printable-ascii  code-golf  chess  code-golf  math  number-theory  code-challenge  c  code-golf  random  popularity-contest  hello-world  code-shuffleboard  code-golf  compression  grammars  code-golf  tips  code-golf  sequence  code-golf  string  code-challenge  sorting  permutations  code-golf  string  code-challenge  optimization  code-golf  interpreter  code-challenge  string  code-golf  math  number  fibonacci  string  compression  c#  code-golf  chemistry  popularity-contest  math  c  c++  java  code-golf  math  function  code-golf  complex-numbers  code-golf  geometry 

14
ファイルにゼロを埋め込む
今日のタスクは、既存のファイルを取得し、特定のサイズに達するまでゼロを追加することです。 現在のディレクトリ内のファイル名fとバイト数を取得するプログラムまたは関数を作成する必要がありますb。の元のコンテンツを維持しながら、新しいサイズがバイトになるように、末尾にfゼロ(ASCIIバイトではなくヌルバイト)を書き込む必要がありbます。 あなたは、と仮定してよいfことは、当初よりも大きくないと、あなたはそれを完全なアクセス許可を持っていることを、その名前だけでASCII英数字を持っていbますが、同じ大きようなものであってもよいb、と無限の空きディスク容量があること。 f空でないと仮定したり、すでにヌルバイトが含まれていないと仮定したりすることはできません。 実行が終了した後、他の既存のファイルを変更したり、新しいファイルを作成したりしないでください。 テストケース fの内容| b | fの結果の内容 12345 | 10 | 1234500000 0 | 3 | 000 [空] | 2 | 00 [空] | 0 | [空の] 123 | 3 | 123
12 code-golf  file-system  code-golf  code-golf  string  code-golf  string  code-golf  random  game  compression  code-golf  array-manipulation  sorting  code-golf  number  arithmetic  primes  code-golf  geometry  code-golf  code-golf  decision-problem  regular-expression  code-golf  string  math  code-challenge  restricted-source  integer  palindrome  code-golf  string  palindrome  code-challenge  busy-beaver  code-golf  ascii-art  code-golf  string  code-golf  string  permutations  code-golf  code-golf  string  permutations  code-golf  number  primes  function  set-theory  code-challenge  hello-world  code-golf  math  number  decision-problem  code-golf  code-golf  sequence  arithmetic  integer  code-golf  math  number  arithmetic  decision-problem  code-golf  kolmogorov-complexity  alphabet  code-golf  combinatorics  graph-theory  tree-traversal  code-golf  set-theory  code-golf  interpreter  brainfuck  substitution  code-golf  quine  permutations 

2
Kippleを解釈してください!
前書き Kippleは、2003年3月にRune Bergによって発明されたスタックベースの難解なプログラミング言語です。 Kippleには、27のスタック、4つの演算子、および制御構造があります。 スタック スタックは命名されているa- zと32ビット符号付き整数を含んでいます。また@、数値の出力をより便利にするための特別なスタックがあります。数字がにプッシュされる@と、その数字の数字のASCII値が実際にプッシュされます。(たとえば、12を@に押した場合、49を押し、次に50を押し@ます。) iプログラムが実行される前に、入力が入力スタックにプッシュされます。インタープリターは、i実行前に保存する値を要求します。実行が終了すると、出力スタック上のすべてoがポップされ、ASCII文字として出力されます。これはKippleの唯一のIOメカニズムであるため、Kippleプログラムとの対話は不可能です。 オペレーター オペランドは、スタック識別子または符号付き32ビット整数のいずれかです。 プッシュ:>または< 構文:Operand>StackIndentifierまたはStackIndentifier<Operand Push演算子は、オペランドを左に取り、指定されたスタックにプッシュします。たとえば12>a、値12をstackにプッシュしますa。a>bstackから一番上の値をポップし、stack aにプッシュしますb。空のスタックをポップすると常に0 a<bが返されb>aます。これはと同等です。a<b>c最上位から値ポップbの両方にとプッシュをcしてa。 追加: + 構文: StackIndentifier+Operand 追加演算子は、スタックの一番上の項目とオペランドの合計をスタックにプッシュします。オペランドがスタックの場合、値はそこからポップされます。たとえば、スタックの最上位の値aが1の場合、a+23をプッシュします。aが空の場合、a+22をプッシュします。スタックの一番上の値場合aとbがある1と2は、a+bスタックから値2をポップアップ表示されますbし、スタックに3を押しますa。 減算: - 構文: StackIndentifier-Operand Subtract演算子は、Add演算子とまったく同じように機能しますが、加算ではなく減算する点が異なります。 晴れ: ? 構文: StackIndentifier? Clear演算子は、最上位のアイテムが0の場合、スタックを空にします。 インタープリターは演算子の隣にないものをすべて無視するため、次のプログラムが機能しますa+2 this will be ignored c<i。ただし、コメントを追加する適切な方法は、#文字を使用することです。a #と行末文字の間のすべてのものは、実行前に削除されます。ASCII文字#10は、Kippleの行末として定義されています。 オペランドは2つの演算子で共有a>b c>b c?できますa>b<c?。たとえば、と書くことができます。 プログラム1>a<2 a+aはa、値を[1 4](下から上へ)含むようになり、ではありません[1 3]。-オペレーターも同様です。 制御構造 Kippleには、ループという制御構造が1つしかありません。 構文: (StackIndentifier code ) …
12 code-golf  interpreter  code-golf  string  code-golf  math  string  code-golf  ascii-art  path-finding  code-golf  string  ascii-art  code-golf  interpreter  binary  logic-gates  logic  code-golf  ascii-art  code-golf  graph-theory  code-golf  string  code-golf  number  sorting  code-golf  number-theory  random  cryptography  polynomials  code-golf  number  code-golf  math  number  sequence  code-golf  quine  code-generation  code-golf  arithmetic  set-theory  code-golf  sequence  code-golf  code-golf  string  math  fastest-code  optimization  code-golf  code-golf  internet  stack-exchange-api  code-golf  array-manipulation  code-golf  string  internet  string  code-challenge  internet  test-battery  code-golf  math  pi  code-golf  arithmetic  primes  code-golf  array-manipulation  code-golf  string  code-golf  string  palindrome  code-golf  sequence  number-theory  fastest-algorithm  code-golf  math  number  base-conversion  code-golf  number-theory  sorting  subsequence  search  code-golf  permutations  code-challenge  popularity-contest  code-generation 

1
2Bのインタープリターを作成する
通訳を書く 2Bの 好き David Cattの難解な言語2Bが。各セルがバイトの独立したテープ(「サブテープ」)であるテープにメモリが保存されています。通訳を書いてください! 言語仕様 公式の仕様はここにあります。この仕様で"は、範囲内の数値0-9(0と解釈される10)を_意味し、任意の長さの文字列を意味します。各セルはの範囲の値を格納し、0-255オーバーフロー/アンダーフローはBFと同じように折り返します。(ありがとう@MartinBüttner)。テキストを数字0-255に変換するには、ASCIIコードを使用します。私はこれについて詳細を見つけることができないので、テープの長さは255最小であるべきだと言いますが、そうでない場合は編集してください。 +-------------+----------------------------------------------------------------------------------------------------------------------------------------+ | Instruction | Description | +-------------+----------------------------------------------------------------------------------------------------------------------------------------+ | 0 | Zeroes the current cell and clears the overflow/underflow flag. | | { | If the current cell is zero, jump to the matching }. | | } | A placeholder for the { …

2
〜ATHインタープリターを作成する
人気のあるウェブコミックHomestuckは、~ATH宇宙を破壊するために呼び出されるプログラミング言語を使用しています。このゴルフの挑戦は、私たちの存在を全滅させるプログラムを書くことではありませんが、もっと面白くない(あまり面白くない)エンティティを破壊します:variables。 ~ATH( "til death"と発音します。~ath"tilde ath"はどのように機能するかを確認してください)は、という変数を作成しTHIS、でコマンドを実行しEXECUTE、でプログラムを終了することで機能しTHIS.DIE()ます。Homestuckでの言語の使用に関するWikiページは、ここにあります。この課題の目標は、~ATH通訳を作成することです。 挑戦のために、私は~ATH実際には存在しないいくつかの詳細を作成しますが、それを(ある程度)有用にします。 この言語は、で宣言されている整数でのみ機能しますimport <variable name>;。変数は自動的に値0に設定されます。一度にインポートできる変数は1つだけです。 変数xは、書き込みによってコピーできますbifurcate x[y,z];。これにより、変数が削除されx、同一の変数yおよびに置き換えられますz。削除された変数と同じ名前の変数を作成できないことに注意してください。基本的に、変数の名前が変更され、別の名前の変数のコピーが作成されます。これは馬鹿げた機能のように見えますが、愚かさはHomestuck に非常に深く根付いています。 コードを実行するプログラムを記述するための構文xは~ATH(x){EXECUTE(<code>)}です。2つの変数に対して同時にコードを実行する場合、コードは次のようにネストされます~ATH(x){~ATH(y){EXECUTE(<code>)}}。のすべてのコマンド<code>両方で実行されますxとy。 それではコマンドに移りましょう。 +関連する変数を1つ-増やし、1つ減らします。そして...それだけです。 の最後の機能~ATHは、動作するものは何でも殺すことです。変数は<name>=<value>、コマンドで(改行が後に続く)形式で出力されます[<name>].DIE();。その後、プログラムDIE <name>は、変数の値の絶対値に等しい回数だけ単語と改行を出力します。同時に変数が削除されると[<name1>,<name2>].DIE();(存在する限り、必要な数の変数を削除できます)、DIE()コマンドは変数に対して順次実行されます。 サンプルプログラム プログラム1: import sollux; //calls variable "sollux" import eridan; //calls variable "eridan" ~ATH(sollux){EXECUTE(--)} //sets the value of "sollux" to -2 ~ATH(eridan){EXECUTE(+++++)} //sets the value of "eridan" to 5 [sollux].DIE(); //kills "sollux", prints "DIE …

2
役に立たないインタプリタを実装する[終了]
閉じた。この質問には、詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善したいですか?詳細を追加し、この投稿を編集して問題を明確にします。 閉じた2年前。 あなたの仕事は、役に立たない言語へのインタープリターを構築することです。 機能要件は次のとおりです。 説明されているすべてのコマンドは、インタープリターによって受け入れられる必要があります。 NO.、NOOPそしてINCLUDE-xxx光栄に思う必要があります。 DONTUSEME(n) テストのためにより合理的なものに簡単に構成できるように、その基準日が必要です。 INCLUDE-xxxほぼ等しい確率でコマンドを生成できる必要があります。aを生成するDONTUSEME(n)場合、nに小さい値をランダムに選択する必要があります。 DONTUSEME(n)窓はNO.命令を生き残る必要があります。ヒント:これらのウィンドウの新しいプロセスを作成します。 BOOM!そしてKABOOM!悪いと怖い何かをしなければならず、KABOOM!より悪いでなければなりませんBOOM!。しかし、これはあまりにも真剣に受け止めてはならないので、破壊的、過度に破壊的、または元に戻すのが難しいものであってはなりません。、してくださいではない、やるんではない、としていないこれらの命令を実行させるrm -rf \、命令をフォーク爆弾を実行し、マルウェアをインストールし、ファイルシステム内のデータが破損、または郵便またはインターネットからの不適切なコンテンツをダウンロードし、またはいずれかの他の事が明らかに虐待。 TURINGVSALONZO実際に実行すべきことを実行しているかのように実行する必要があります。ヒント:ランダムに非常に長い時間、ランダムに短い時間、または永久にスリープするかどうかをランダムに決定します。 他のすべての事前定義された命令は、前述の命令と別の命令以外の何かを実行する必要がありますが、BOOM!またはより悪いものは実行しないでくださいKABOOM!。正確に何をするかはあなた次第ですが、単純な実装ではエラーメッセージまたはその他のテキストを出力するだけです。 ユーザーがインタープリターによって実行されるプログラムを提供する簡単な方法を提供する必要があります。すなわち、ファイルまたはからプレーンテキストを読むことは問題ありませんstdin。インターネットのどこかで暗号化されたファイルからそれを読むことはそうではありません。 オプション: 必要に応じていくつかの新しいコマンドを作成することもできますが、それらは他のコマンドと同じルールに従う必要があります。これを使用して、制限を回避したり、無効にBOOM!しKABOOM!たりしないでくださいDONTUSEME(n)。また、新しいコマンドを作成する場合は、それらの機能を説明してください。 未知のコマンドで入力を受け取った場合(または完全に解析不能なランダムなバイトが意味不明な場合でも)、インタープリターが何をするかを考える必要があります。 命令によってDONTUSEME(n)コマンドが無効になることはありませんが、そのためにキルスイッチを追加することができます。それを言語で公開しないでください。 悪用を避けるために、機能以外の要件がいくつかあります。 エントリは、可能な限り完全かつ自動である必要があります。これは、単に何らかのインストーラーまたは明らかに不完全なプログラムであってはならないことを意味します。この方法では、jQueryなどのライブラリまたはMaven Centralからパッケージをダウンロードして使用することは問題ありませんが、カスタムサーバーから任意のコードとパッケージをダウンロードすることはできません。 エントリは、このページ自体、またはこのページのミラーまたはコピーからコンテンツを取得して、何らかのリフレクションを行うため、または他の目的のために使用しないでください。これは、この質問に対する他の参加者の回答を読んだり、何らかの方法で質問を混乱させようとするプログラムを避けるために不可欠です。 インタプリタは不変であり、入力ファイルを自己修正または修正してはなりません。しかし、オリジナルを変更せずにインタープリターまたは入力ファイルのミュータントコピーを作成することは問題ありません。 そして最後に、それを考慮して: 回答のプログラムは、完全に適合していても、ほとんど役に立たないと予想されます。 言語は(意図的に)非常に不十分に指定されており、回答者には多くの自由度があり、それらを選択するインセンティブがあります。 要件と可能な実装には、多くの主観的なポイントがあります。 これの目的は、ただ楽しさと創造性を得ることにあります。 そして、これは人気コンテストであり、ルールに完全に準拠した最も支持された答えが勝ちです!そのため、ゴルフをしたり、答えを難読化したりする必要はありません(ただし、必要に応じて行うこともできます)。賛成に値するオリジナルでクリエイティブなものを必ず投稿してください。つまらない退屈なエントリは投稿しないでください。

5
シェルスクリプトのサブセットを実装する
このサイトには、インタープリタータグでのさまざまな言語の実装に関連する多くの問題がありました。ただし、実際にはそれらはすべて、誰も使用しない難解な言語でした。ここのユーザーのほとんどがおそらく既に知っている実用的な言語の通訳を作成する時間です。はい、タイトルの読みに問題がある場合(あなたが持っているのではない)のシェルスクリプトです。(はい、GolfScriptやBefungeなどの言語がすべてを獲得するのにうんざりしているので、私は意図的にこの挑戦をしました。そのため、より実用的なプログラミング言語が勝つ可能性が高い場合に挑戦をしました) ただし、シェルスクリプトは比較的大きな言語であるため、実装を求めません。代わりに、シェルスクリプト機能の小さなサブセットを作成します。 私が決めたサブセットは次のサブセットです。 プログラムの実行(ただし、単一引用符が許可されている場合でも、プログラムには文字のみが含まれます) プログラム引数 単一引用符(空白を含む印刷可能なASCII文字を受け入れ、単一引用符を除く) 引用符で囲まれていない文字列(ASCII文字、数字、ダッシュを許可) パイプ 空のステートメント 改行で区切られた複数のステートメント 末尾/先頭/複数のスペース このタスクでは、STDINから入力を読み取り、要求されたすべてのコマンドを実行する必要があります。POSIX互換のオペレーティングシステムを安全に想定できるため、Windowsなどの移植性は必要ありません。他のプログラムにパイプされていないプログラムは、STDINから読み取らないと安全に想定できます。コマンドが存在すると仮定しても安全です。他に何も使用されないと想定しても安全です。何らかの安全な仮定が破られていれば、何でもできます。最大15個の引数と512文字未満の行を安全に想定できます(明示的なメモリ割り当てなどが必要な場合-Cがまだ小さい場合でも、Cで勝つ可能性はほとんどありません)。ファイル記述子をクリーンアップする必要はありません。 すべての行を受信した後、またはSTDINが終了した後でも、いつでもプログラムを実行できます。必要なアプローチを選択してください。 シェルをテストできるシンプルなテストケース(3番目のコマンドの後に続く空白に注意してください): echo hello world printf '%08X\n' 1234567890 'echo' 'Hello, world!' echo heeeeeeelllo | sed 's/\(.\)\1\+/\1/g' yes|head -3 echo '\\' echo 'foo bar baz' | sed 's/bar/BAR/' | sed 's/baz/zap/' 上記のプログラムは、次の結果を出力するはずです。 hello world 499602D2 Hello, world! helo y …

2
nを法とする数論のインタープリター
(私たちの目的のための)数論の文は、次の記号のシーケンスです。 0および'(後継者)-後継者は+1、0'''' = 0 + 1 + 1 + 1 + 1 = 4 +(加算)と*(乗算) = (に等しい) (と)(括弧) 論理演算子nand(a nand bis not (a and b)) forall (ユニバーサル数量詞) v0、v1、v2、など(変数) ここに文の例があります: forall v1 (forall v2 (forall v3 (not (v1*v1*v1 + v2*v2*v2 = v3*v3*v3)))) ここでnot xは省略形ですx nand x-実際の文が使用する(v1*v1*v1 + v2*v2*v2 = v3*v3*v3) nand …
12 code-golf  number-theory  parsing  code-golf  kolmogorov-complexity  code-golf  code-golf  array-manipulation  matrix  code-golf  array-manipulation  code-golf  string  code-challenge  graphical-output  compression  code-golf  kolmogorov-complexity  code-golf  sequence  array-manipulation  code-golf  number  base-conversion  code-golf  string  decision-problem  code-golf  string  ascii-art  code-golf  string  random  code-challenge  brainfuck  code-generation  code-golf  code-golf  quine  code-golf  interpreter  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 

6
文字列操作インタープリター
概要 文字のみを使用して、新しい文字列操作言語が作成されました$+#-!*|@>!あなたの仕事は、できる限り少ないバイトでインタプリタを実装することです。 入力 文字列。この言語の1行です。これは、合理的な方法(stdin、関数パラメーター、コマンドライン引数など)で、または事前定義された変数として使用できます。プログラムがユーザー入力を要求する場合は、stdinから要求するすべてのユーザー入力を受け入れます。以下を参照してください。あなたはそれが有効なプログラムであると仮定するかもしれません。 出力 言語が出力するものは何でも、以下の仕様。妥当な方法(stdout、関数出力など)で文字列、または変数値を出力する必要があります。言語が明示的に出力する場合、これは stdoutに移動する必要があります。標準的な抜け穴は禁止されています。 言語仕様 処理と構文 この言語は、文字列操作のみを行うため、処理の非常に単純な形式です。空の文字列("")で始まり、各用語で変更されます。用語は、1つまたは2つの部分で構成されます。関数(下)と、場合によってはその動作を編集するパラメーター(下)が続きます。用語はパイプ(|)で区切られます。あなたはそれが空のプログラムではなく、どの用語も空ではないと仮定するかもしれません。プログラムの最後に値を出力する必要があります。 関数 以下に示すように、この言語には6つの関数しかありません。各関数は、1つまたはゼロのパラメーターを受け入れます。 + 文字列を連結します(1つの文字列パラメーターを取り、それを現在の値に連結します) ! 現在の値の文字順を逆にします(パラメータなし) * 文字列を繰り返します(1つの整数パラメーターを取り、現在の値を何回も繰り返します) - 値のすべての出現を削除します(1つの文字列パラメーターを取り、現在の値からすべての出現を削除します) $ [pseudo-]現在の値をランダムにシャッフルします(パラメーターなし) <現在の値をstdout(パラメータなしで)出力します 値 これらは関数に渡される可能性のある値であり、それらに一致する正規表現で表されます。 @[^|]*パイプ以外の文字を含む文字列リテラル。空の場合があります。 #[0-9]+ 整数リテラル >の次の行stdin。で使用する場合*、整数に変換します。 テストケース ╔════════════════════════╤═════════════╤══════════════╗ ║code │input │output ║ ╟────────────────────────┼─────────────┼──────────────╢ ║+>|!|+@hello|*> │13 │31hello31hello║ ║ │2 │ ║ ╟────────────────────────┼─────────────┼──────────────╢ ║+>|+@abcdefg|$ │hello │hcloeebafdlg ║ ╟────────────────────────┼─────────────┼──────────────╢ ║+@how …

11
ビット単位のサイクリックタグのシミュレーション
チャレンジ 既定のI / O形式の2つの文字列を指定して、次の操作を行います。 注:チャレンジでは、最初の文字列を「データ」、2番目の文字列を「プログラム」と呼びます。 プログラムを無限の文字列に変更します。無限の文字列は、プログラムが無限に繰り返されるだけです(例10--- 1010101010...)。チャレンジではこれを「無限プログラム」と呼びます データが空ではない間、無限プログラムをループしながら次の操作を実行します。 a。現在のコマンドが「0」の場合、データの左端のビットを削除します。データが空の場合、「0」は何もしません。 b。現在のコマンドが「1」の場合、データの左端のビットが1であれば、プログラムの次の文字をデータに追加します。 c。データが空でない場合、データを出力します。 テストケース データは入力の左側であり、プログラムは右側です。 100, 0 --> 00, 0 1111, 1 --> 11111, 111111, 1111111, ... 10, 011 --> 0, 0, 0 1110, 011 --> 110, 1101, 11010, 1010... ノート データとプログラムは0と1のみで構成されます 停止しないデータ/プログラムの場合、プログラムを停止する必要はありません。 データとプログラムは入力では空になりません。 複数の末尾および先頭の改行がある場合があります 標準的な抜け穴は禁止されています 任意の便利なI / O形式を使用できます code-golfと同様に、最短のコードが勝ちます!

1
ジェイソンが彼のJSONをフォーマットするのを手伝ってください
Jasonには大きなJSONがありますが、判読できないため、彼はそれをきれいにする必要があります。 フォーマット仕様 JSONには4つの異なるタイプがあります。 数字; ただ0-9 ストリング; で"エスケープされた二重引用符付き文字列\ 配列; で区切られ[]、アイテムはで区切られ,、アイテムはこれらのタイプのいずれかになります オブジェクト; で区切られ{}、formatはkey: valuekeyが文字列で、valueはこれらのタイプのいずれかです 間隔 配列には、項目間のコンマの後にちょうど1つのスペースが必要です。 オブジェクトには、キーと値の間にスペースが1つだけあるはずです。 : くぼみ 各ネストレベルは、以前よりも2インデントされます 各オブジェクトのキーと値のペアは、常に独自の行にあります。オブジェクトはインデントされます 配列に別の配列またはオブジェクトが含まれる場合、配列は複数行にわたってインデントされます。それ以外の場合、配列は1行のままです ルール このタスクを単純化するビルトインは許可されていません。 いつものように、標準的な抜け穴は許可されていません 例 [1,2,3] [1, 2, 3] {"a":1,"b":4} { "a": 1, "b": 4 } "foo" "foo" 56 56 {"a":[{"b":1,"c":"foo"},{"d":[2,3,4,1], "a":["abc","def",{"d":{"f":[3,4]}}]}]} { "a": [ { "b": 1, "c": "foo" }, …
11 code-golf  string  json  code-golf  number  code-golf  image-processing  code-golf  string  code-golf  number  sequence  arithmetic  number-theory  code-golf  string  code-golf  string  counting  code-golf  ascii-art  code-golf  math  code-golf  tips  code-golf  string  code-golf  grid  graph-theory  code-golf  parsing  interpreter  brainfuck  code-golf  math  arithmetic  number-theory  programming-puzzle  c#  code-golf  dominoes  code-golf  tips  code-golf  string  grid  crossword  code-golf  string  code-golf  kolmogorov-complexity  code-golf  number  sequence  code-golf  string  math  number  number-theory  primes  fastest-code  code-golf  number  code-golf  string  code-golf  ascii-art  number  kolmogorov-complexity  code-golf  string  grid 

1
ミンスキーレジスタマシンのシミュレーション(II)
これはSimsky a Minsky Register Machine(I)の拡張です。私はそこですべての説明を繰り返すつもりはないので、まずその問題の説明を読んでください。 部分(I)の文法は可能な限り単純でしたが、かなり長いプログラムになります。これはコードゴルフサイトであるため、ゴルフの文法が必要です。 高レベルでは、元の文法からの変更は次のとおりです。 最初の行のラベルはオプションです 2つの隣接する識別子を分離する必要がある場合を除き、空白はオプションです 状態はインライン化できます。曖昧さのない構文解析を保証するために、デクリメント操作の最初の状態がインライン状態の場合、括弧で囲む必要があります。これは、どのプログラムでもワンライナーにゴルフできることを意味します。 たとえば、元のテストケースでは次のとおりでした。 b + = a、t = 0 init : t - init d0 d0 : a - d1 a0 d1 : b + d2 d2 : t + d0 a0 : t - a1 "Ok" a1 : a + a0 …

3
BrainFlow Interpreter!
BrainFlow BrainFlowとは何ですか? BrainFlowはBrainF ** k(BFk)の拡張機能であり、追加機能と混乱のための3つの追加コマンドがあります。 どのコマンド? 通常のBFkコマンドに加えて、次のものもあります。 ^ セルの値に応じて、セル#にジャンプします。例:値が4のセル#0にいる場合、^はセル#4にジャンプします。 = セルの値をセルのインデックスに設定します。例:値が0のセル#4にいる場合、=は値を4に設定します。 & 現在のセルの値に基づいて、現在のセルの値をセルの値と等しく設定します。(これは言いにくいので、例を示します!)例:セル#33にいて、このセルの現在の値は7であり、セル#33の現在の値をセル#7の値に設定します。 オプションの課題 以下のいずれかを達成すると、指定されたボーナスがバイト数に適用されます。 Interpreter written in BrainFlow (サンプルで解釈でき、少なくとも1つの意味のある ^ = または &が含まれます): スコア/ 3 Interpreter written in BrainF**k: スコア/ 2 Doesn't contain any English letters (in either upper or lower case): スコア-20 Doesn't contain any of the BrainFlow …

3
クレム通訳を書く
Clemは、ファーストクラスの機能を備えた最小のスタックベースのプログラミング言語です。あなたの目的はクレム言語のインタプリタを書くことです。ここにあるリファレンス実装に含まれるすべての例を適切に実行する必要があります。 いつものように、標準の抜け穴が適用されます。 バイトカウントによる最小のエントリが優先されます。 クレム語 Clemは、ファーストクラスの機能を備えたスタックベースのプログラミング言語です。クレムを学ぶ最良の方法はclem、引数なしでインタプリタを実行することです。インタラクティブモードで起動し、使用可能なコマンドで遊ぶことができます。サンプルプログラムを実行するには、「example」がプログラムclem example.clmの名前であると入力します。この簡単なチュートリアルは、始めるのに十分なはずです。 関数には2つの主要なクラスがあります。原子関数と複合関数。複合関数は、他の複合関数とアトミック関数で構成されるリストです。複合関数にそれ自体を含めることはできません。 原子関数 アトミック関数の最初のタイプは定数です。定数は、単に整数値です。たとえば、-10。インタープリターが定数を検出すると、それをスタックにプッシュします。clem今すぐ実行します。入力-10プロンプトで。君は見るべきだ > -10 001: (-10) > 値001はスタック内の関数の位置を表し、入力し(-10) た定数です。+11プロンプトで入力してください。君は見るべきだ > +11 002: (-10) 001: (11) > (-10)がスタックの2番目の位置に移動し(11)、最初の位置を占めていることに注意してください。これがスタックの性質です!これが-減分コマンドでもあることに気づくでしょう。たび-または+番号の前に、彼らはその数ではなく、対応するコマンドの兆候を示しています。他のすべてのアトミック関数はコマンドです。合計14あります。 @ Rotate the top three functions on the stack # Pop the function on top of the stack and push it twice $ Swap the top …

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