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

スタックベースのプログラミング言語のインタープリターや、特にコールスタックに関する課題など、スタックのようなデータ構造に関連する課題(詳細はタグwikiを参照)。

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 …

1
PreludeをBefungeに翻訳
これがウィークリーチャレンジ#2です。テーマ:翻訳 Preludeでプログラムのソースコードを取り込み、Befunge-93で同等のプログラムのコードを出力するプログラムまたは関数を記述します。プログラムを同等にするには、所定の入力に対してPreludeプログラムと同じ出力を生成し、Preludeプログラムが停止する場合にのみ停止する必要があります。 入力言語:プレリュード Pythonインタープリター: コードスニペットを表示 #!/usr/bin/python import sys NUMERIC_OUTPUT = True NUMERIC_INPUT = True try: filename = sys.argv[1] except: print "Usage:", sys.argv[0], "<filename>" raise SystemExit try: inFile = file(filename) except: print "Error when opening", filename raise SystemExit # code is kept as a list of voices, each voice a string …

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

10
これは私たちがロールする方法です
Pietはいくつかの理由で興味深いプログラミング言語です。今日は、1つの理由に注目します。ロールコマンドです。rollコマンドはもともとPostScriptからのもので、スタックを操作する強力な方法です。 rollコマンドは、スタックの上位2つの要素をポップし、それらをパラメーターとして使用します。最初の値をポップturnsし、2番目の値を呼び出しますdepth。深さnへのターンは、スタックの最上位の要素を取得し、スタック内のn番目の要素にし、その上の各要素を1つ上に移動します。turns 負の場合、これは反対方向に行われます。つまり、n番目の要素は上に移動し、他の要素は下に移動します。これは何abs(turns)度も繰り返されます。 チャレンジ スタックを取り込んで、ロールの実行後にそのスタックを返すプログラムまたは関数を作成します。 ルール 入力および出力は、リスト、配列、区切り文字付きの文字列、一度に1つの要素、またはその他の適切な形式で渡すことができます。出力は入力と同じ形式である必要があります。 depth 負になることはなく、スタックの長さを超えることはありません。 入力スタックには常に少なくとも2つの要素が含まれます。 これはコードゴルフなので、各言語で最短の答えが勝ちます。そのため、私は答えを受け入れません。 標準的な抜け穴は禁止されています。 テストケース in: out: 2 4 1 3 2 4 3 1 4 2 5 5 6 6 in: out: -2 3 1 2 2 3 3 1 in: out: -42 0 1 1 2 2 3 3 4 …
18 code-golf  stack 

17
存在しない言語用のインタープリターを構築する
入力を取得し、解釈し、結果を数値の配列として出力する、偽のスタックベースの言語用のインタープリターを構築します。各バイトを反復処理し、この表に基づいて異なる機能を実行する必要があります。 0000(0):連結(スタック内の上位2つの数字を文字列であるかのように結合します。例:12,5-> 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 …

15
息子が手紙を見つけるのを手伝ってください
バックグラウンド 私の4歳の彼のラビから得たゲームに基づいています。 「目標」は、特定の順序で文字を「見つける」ことaecdbです。レターカードのスタックが与えられますdaceb。周期的ではありますが、指定された順序でのみスタックを検索できます。必要な手紙に出会ったら、それをスタックから取り出します。 目的 順序とスタック(相互の重複のない順列)を指定すると、ゲームのプレイ中に表示される一連の最上位スタック文字(すべて印刷可能なASCII)を見つけます。 ステップバイステップの例 aecdbスタックを指定して順序を見つける必要がありますdaceb。 スタックのトップd:探しているもの(a)ではないため、シーケンスに追加しd、スタックを取得するために回転します:acebd。 スタックのトップa:はい!したがって、シーケンスに追加daし、スタックから削除します:cebd。 スタックのトップc:探しているもの(e)ではないため、シーケンスに追加しdac、スタックを取得するために回転します:ebdc。 スタックのトップe:はい!したがって、シーケンスに追加daceし、スタックから削除します:bdc。 スタックのトップb:探しているもの(c)ではないため、シーケンスに追加しdaceb、スタックを取得するために回転します:dcb。 スタックのトップd:探しているもの(c)ではないため、シーケンスに追加しdacebd、スタックを取得するために回転します:cbd。 スタックのトップc:はい!したがって、シーケンスに追加dacebdcし、スタックから削除します:bd。 スタックのトップb:探しているもの(d)ではないため、シーケンスに追加しdacebdcb、スタックを取得するために回転します:db。 スタックのトップd:はい!したがって、シーケンスに追加dacebdcbdし、スタックから削除します:b。 スタックのトップb:はい!したがって、シーケンスに追加dacebdcbdbし、スタックから削除します:。 これで完了です。結果はdacebdcbdbです。 リファレンス実装 def letters(target, stack): string = '' while stack: string += stack[0] if stack[0] == target[0]: stack.pop(0) target = target[1:] else: stack.append(stack.pop(0)) return string print letters('aecdb', list('daceb')) オンラインでお試しください! テストケース try、yrt→yrtyry 1234、4321→4321432434 ABCDEFGHIJKLMNOPQRSTUVWXYZ、RUAHYKCLQZXEMPBWGDIOTVJNSF→RUAHYKCLQZXEMPBWGDIOTVJNSFRUHYKCLQZXEMPWGDIOTVJNSFRUHYKLQZXEMPWGIOTVJNSFRUHYKLQZXMPWGIOTVJNSRUHYKLQZXMPWIOTVJNSRUYKLQZXMPWOTVNSRUYQZXPWOTVSRUYQZXPWTVSRUYQZXWTVSRUYZXWTVSUYZXWTVUYZXWVYZXWYZXYZ …

4
実際に整数のメタゴルフ
バックグラウンド 実際(Seriouslyの後継)は、2015年11月に作成したスタックベースの命令型ゴルフ言語です。他の多くのゴルフ言語と同様に、スタックの内容に基づいて異なる機能を実行する1バイトのコマンドがあります。その専門の1つは数学です-多種多様な数学ベースのコマンドがあります。ただし、数学演算を実行するには、スタックに(1つ以上の)数値を配置する必要があります。多くの異なるオプションがあるため、特定の値をできるだけ少ないバイト数でプッシュすることは困難です。この課題では、実際にできる限り少ないバイトで数値(具体的には整数)を表すことを正確に行います。 チャレンジ N入力として整数を指定するNと、スタックにプッシュされる結果となる有効な実際のコードを出力します。 入力は、32ビットの符号付き2の補数整数の範囲内にあります(つまり、包括的範囲の整数[-2147483648, 2147483647])。 結果は整数(float、string、list、またはfunctionではなく)でなければならず、スタックの先頭になければなりません。 スタックの内容について何も仮定しないでください(空かどうかなど)。スタック上の既存の値を変更または再配置してはなりません。 このチャレンジを書いている時点でのActuallyの最新のコミットが使用されることになっています。バグ修正またはパフォーマンスの強化(または許可されたコマンドの機能を削除または変更しないその他の小さな変更)を行った場合、このバージョンを更新します。 ソリューションは、少なくとも単純なソリューション(:数値リテラルを作成するために入力に追加)と同様に実行する必要があります。 スコアは、簡単な解の長さの合計から、スコアリングに使用される1000個の32ビット符号付き2の補数整数の選択の出力の長さの合計を引いたものになります。必要に応じて、スコアリング整数をいつでも変更する権利を留保します(テストケースの最適化や、テストケースの徹底が不十分な場合など)。 ソリューションは、入力ごとに30秒以内に有効な回答を出力する必要があります。タイミングは、標準の無料のCloud9ワークスペースで行われます。 コマンド 簡単にするために、(現在の)208個のコマンドのうち141個のみを使用でき、数値計算とは関係のない141個の多くのオーバーロードが削除されています。許可されるコマンドのリストは次のとおりです(形式は<hex code> (<symbol>): <descriptions of functions based on stack values and types>次のとおりです。 0B (♂): take the next command and map it over the top of the stack (for example, ♂A is equivalent to `A`M) 1F (▼): pop …

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 -> output。他の受け入れ可能な出力が存在する可能性があることに注意してください。 a Not -> N aa Not -> :( abcd Not -> :( aaa rerere -> re:re:re xx ABAAAB -> A:A MMM ABABBAABBAABBA -> ABBA:ABBA:ABBA x33x 10100110011001 -> 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<e.length;n++)compileLine(e[n],t);var r="";for(var n=0;n<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("<--"))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&255;e=e>>8}while(n);return t} <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <textarea id="text" cols="40" rows="10"></textarea> <br/> <button onclick="compile()">Compile</button> <br/> <textarea id="compiledArray" cols="40" rows="10" readonly></textarea> …

2
Befungeプログラムを圧縮する
Befungeは2次元の難解なプログラミング言語です。基本的な考え方は、(1文字の)コマンドが2次元グリッドに配置されるということです。制御フローはグリッド上を移動し、通過するコマンドを実行し、矢印にヒットすると方向を変更します(>^<v)。コマンドはスタックベースです。このリストを参照してください。http://esolangs.org/wiki/Befungeも参照してください。 Befunge-98の仕様が利用可能です。 問題 Befungeプログラムをよりコンパクトな表現に変換するプログラムを作成します。たとえば、次のプログラムは印刷します0: > 0 v > @ . ^ < この場合、スペースの行を削除することにより、プログラムの動作を変更せずに圧縮できます。 >0v >@. ^ < より洗練された変換は、コマンドのシーケンスを回転またはミラー化し、プログラムを圧縮するために不要な制御フローコマンドを排除できます。たとえば、このプログラムでは: >12345v 6 v....7< . . . @ プログラムの終わりを穴に押し込むかもしれません。 >12345v >...@ 6 ^....7< 最初の例では、可能な限り最もコンパクトなプログラムは >0.@ 出力プログラムで同じ結果が得られる限り、任意の変換を使用できます。 入力プログラム 入力プログラムは有効なBefunge-98プログラムです。 入力プログラムが決定論的であると仮定することができます。つまり、外部状態を読み取るコマンドは使用しません。ユーザー入力コマンド&と~、ランダマイザー?、および自己修正コードコマンドpとgです。 入力プログラムが終了することを想定できます。 得点 これはコードゴルフではありませんが、コードゴルフを実行するプログラムを作成する問題です。 入力はテストケースのセットです(上記の入力制限を満たすBefungeプログラム)。合計スコアは、テストケースのスコアの合計です。 各テストケースのスコア スコアは、出力プログラムの空でないセルの凸包の面積です。各セルは、4つの角がデカルト平面の格子点である正方形として扱われます。たとえば、 > v @ < 9.5のスコアを取得します。 プログラムが特定の入力で妥当な時間とメモリで終了しない場合、スコアは入力プログラムのスコアです。(これは、プログラムが時間内に終了しない場合、入力プログラムを変更せずに出力する時間制限ラッパーを簡単に追加できるためです。) プログラムで処理した後、テストケースプログラムの結果が異なる(または終了しない)場合、スコアは入力プログラムのスコアに100ポイントのペナルティを加えたものです。

5
モンドリアン絵画記述言語
この課題は、モンドリアン絵画記述言語(MPDL)のインタープリターのコーディングにあります。 言語定義 この言語は、長方形のスタックで動作します。長方形は、左上の座標と右下の座標で定義されます。座標は整数でなければなりません。スタックは、属性を持つ単一の長方形で初期化されます(1,1,254,254) 各コマンドの形式は次のとおりです。 <character><integer> 次の3つのコマンドがあります。 v<integer>:スタック内の最新の長方形で、パラメーターで示された位置(パーセンテージ)で垂直分割を実行します。ソースの長方形はスタックから削除され、分割の結果の2つの新しい長方形に置き換えられます。左の長方形がスタックにプッシュされ、次に右の長方形がプッシュされます。長方形の座標は整数であるため、分数は最も小さい整数に丸められる必要があります。 h<integer>:水平分割。上の長方形がスタックにプッシュされ、次に下の長方形がプッシュされます。 c<integer>:スタックから最新の長方形を削除し、パラメーターとして指定された色にペイントします。1 =白、2 =赤、3 =青、4 =黄 チャレンジ パラメータとしてペイントの説明を取り、ペイントされた長方形の256x256ビットマップ表現を作成するプログラムを作成します。長方形は、3ピクセルの黒い線で区切る必要があります。1ピクセルまたは2ピクセルの長方形は、黒以外のピクセルを境界線の黒ピクセルで非表示にする必要があります。 入力は、パラメータまたはファイルとして読み取ることができます。コマンドはスペースで区切る必要があります。入力ファイルには正しい構文があり、末尾または先頭のスペース、タブなどがないと仮定できます。出力は、画面に直接表示するか、ファイルを自分で保存できます。 最短のコードが優先されます。 テスト 次のソース: v25 h71 v93 h50 c4 c1 c1 c2 h71 c3 h44 c1 c1 赤、青、黄色のコンポジションIIを生成する必要があります。

4
ASCIIアートで長い分割を視覚化する
ASCIIアートで長い除算を視覚化するプログラムを作成します。入力は、選択した入力形式を使用して、分子と分母の2つの整数で構成されます。 例: 1234÷56: 22 ---- 56|1234 112 --- 114 112 --- 2 1002012÷12: 83501 ------- 12|1002012 96 --- 42 36 -- 60 60 -- 12 12 -- 0÷35 0 - 35|0 ルール: プログラミング言語の除算演算子の使用は許可されています。 大きな整数のサポートの使用も許可されています。 一貫性のために: 商がゼロの場合、ダイビングボードの最後にゼロを1つ出力します。 余りがゼロの場合、印刷しないでください。 数字に先行ゼロを印刷しないでください。 末尾の余分な改行と右側の末尾のスペースは許可されます。 最小の文字数のソリューションが勝ちです。 制限: 0 <=分子<= 10 72 - 1 1 <=分母<= 9999999 …

2
スタック状態図を解く
スタック状態図は、1つのスタックの値が他のスタックにどのように変更されるかを示します。たとえば、これはスタック状態図です: 3 0 2 1 0 これは、最初に3つの値(3パーツ)を含むスタックがあることを意味します。これらの値には0から2までのインデックスが付けられ、先頭に0が付きます2 1 0。次の部分0 2 1 0では、スタックの最終状態について説明します。元々スタックの最上位にあった値も、後方にコピーされています。 これらの変換は、いくつかのデータ型をサポートするスタックで発生します。 「値」タイプ。これは元々スタックにあったものです。これは文字列、整数などでもかまいませんが、その値を知る必要はありません。 「リスト」タイプ。これは、任意のデータタイプの値を含むリストです。 この変換をモデル化するには、次の操作が許可されます。 S:スタックの上部にある2つの値を交換します。2 1 0→2 0 1 D:スタックの一番上に値を複製します:1 0→1 0 0 R:スタックの一番上の値を削除します。2 1 0→2 1 L:一番上の値を、その値を含む1要素のリストに変換します。2 1 0→2 1 (0) C:スタックの上位2つのリストを連結します。2 (1) (0)→2 (1 0) U:リストのすべての値をスタックに配置します。2 (1 0)→2 1 0 これらは、他のコマンドが使用されない限り、Underloadコマンドと同等~ : ! a * ^です。 …

4
StackyMathを解釈してください!
あなたが私の新しいスタックベースの言語を実装する時間です!StackyMathと呼ばれます。これは、スタック上の8つの操作とスタックに番号を追加する方法を備えたスタックベースの言語になります。 操作のリスト: /:部門。スタックの上位2桁で実行されます。結果をスタックにプッシュします。 *:乗算。スタックの上位2桁で実行されます。結果をスタックにプッシュします -:減算。スタックの上位2桁で実行されます。結果をスタックにプッシュします +:追加。スタックの上位2桁で実行されます。結果をスタックにプッシュします ^:べき乗。スタックの上位2桁で実行されます。結果をスタックにプッシュします %:モジュロ。スタックの上位2桁で実行されます。結果をスタックにプッシュします !:階乗。スタックの一番上の番号で実行されます。結果をスタックにプッシュします D:スタックの一番上の番号を複製します 擬似コードで定義された操作: /: push(pop divided by pop) *: push(pop times pop) -: push(pop minus pop) +: push(pop plus pop) ^: push(pop to the pop) %: push(pop mod pop) !: push(factorial pop) D: t = pop; push(t); push(t) 数字をスタックにプッシュする方法: スタックに番号を追加するのは簡単です。必要な場所にプログラムに生の番号を入れるだけです。スタックに複数の数字を配置する必要がある場合は、コンマ(,)で区切ることができます。あなたのプログラムは-入力の数字を処理する必要はありません。ユーザーが数字を望むなら、否定したい数字、ゼロ、-。プログラムの入力の数値も正の整数に制限されます。 入力: プログラムは、コマンドラインで入力するか、標準入力から入力する必要があります。入力は,、必要に応じて区切られた数字(科学表記法または小数なし)と上記で定義された操作のみで構成されます。 …

12
そして、すべての人々が言っ​​た...
目的文字[またはを含まないテキストの入力を前提として]、次のアクションを実行します。 すべてのインスタンスのためのAmen少なくとも一つの大文字で(そのすべてのインスタンスAmenを除くamen)、同じことを出力Amen(時価総額を保持)。 /all the people said[?: ]/i(正規表現である)のすべてのインスタンスに対して、出力も行いますAmen(どんな場合でも問題ありません)。 すべての出力の後に、改行、スペース、無などの定数セパレーターを選択できます。 これはcode-golfであるため、バイト単位の最短プログラムが優先されます。 IOの例 Input: I said AMEN! AMEN, PEOPLE! Output: AMENAMEN ; any separator is fine, I choose none. Input: amen amen amen amen Output: ; nothing Input: ; empty Output: ; nothing Input: *blah blah blah* And all the people said? Output: …

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