タグ付けされた質問 「brain-flak」

この課題は、Brain-Flakの難解な言語およびBrain-Flakに基づく言語に関連しています。回答が特定の言語であることが必要な課題は、一般的に推奨されないことに注意してください。

30
小さな「H」から「H」を作成する
チャレンジ 整数を指定するとsize、次のことを行う関数またはプログラムを作成します。 size1に等しい場合、出力 H H HHH H H 場合はsize1、出力よりも大きく、 X X XXX X X どこXのプログラム/関数の出力size - 1 (必要に応じて0、回答で指定する限り、ベースケースをに対応させることができます) 次の出力形式のいずれかが受け入れられますが、どちらがより便利です。 任意の二つの異なる文字に対応する必要な構造の文字列Hとspace 対応する任意の二つの別個の値を要求される構造を有する二次元アレイ、H及びspace 任意の二つの別個の値は、対応する各列における出力の一つの行と列/文字列のリスト、Hおよびspace 各行に一定量の先行スペースがある限り、先行スペースを使用できます。2つの異なる出力文字は、異なる限り、選択したものに依存します。 コードが返す出力形式を指定します。 テストケース 1 H H HHH H H 2 H H H H HHH HHH H H H H H HH HH H HHHHHHHHH H HH HH …
73 code-golf  ascii-art  fractal  code-golf  code-golf  string  code-golf  string  matrix  code-golf  graph-theory  maze  binary-matrix  code-golf  kolmogorov-complexity  random  code-challenge  metagolf  test-battery  brain-flak  text-processing  code-golf  matrix  code-golf  number-theory  primes  code-golf  string  matrix  code-golf  binary  bitwise  code-golf  number  factorial  floating-point  code-golf  number  sequence  code-golf  sequence  cops-and-robbers  code-golf  sequence  cops-and-robbers  code-golf  string  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 

28
Brain-Flakのサプライズパーティー
この質問は、Brain-Flakの最初の誕生日を祝うために設計された一連のBrain-flak Birthdayチャレンジの一部です。Brain-Flak's Birthdayの詳細については、こちらをご覧ください。 今日はBrain-Flakの最初の誕生日です!だから、サプライズバースデーパーティーにしようと思った。お気に入りの言語で Surprise! Happy Birthday, Brain-Flak! (末尾の空白は許可されます) いつものように、プログラムはゴルフする必要があります。ただし、Brain-Flakプログラムは角かっこで構成されているため、ソース内の角かっこはカウントされません。(キャラクター()[]<>{}は合計バイト数にはカウントされません)、しかし、Brain-Flakを混乱させないようにバランスをとる必要があります。 ルール ここにルールの内訳があります ソースのブラケットはバランスが取れている必要があります。つまり、プログラムの括弧は、次の文法にまたがる必要があります。 S -> SS | (S) | [S] | <S> | {S} | E どこEが空の文字列です。 つまり、バランスの取れた文字列は、2つのバランスの取れた文字列を連結したもの、バランスの取れた文字列を中括弧で囲む、または空の文字列のいずれかです。 プログラムのスコアは、ブラケット以外のバイト数です。 あなたの目標は、選択した言語に関係なくスコアを最小化することです。 標準の規則が適用されるため、完全なプログラムまたは関数を作成できます。 タイの生バイトカウントがタイブレーカーとして機能する場合 確かに、特定の言語(Parenthesis Hell、 Parenthetic、Glypho、Lenguage)にはゼロバイトソリューションがあります。これが簡単な作業ではない言語でうまくゴルフをする方法を見つけてください。

8
Brain-Flak整数のゴルフ
整数はBrain-Flakで表すのが面倒です。8つの演算子があります。 () Evaluates to 1, but does not push anything on any stack [] Evaluates to an indeterminate value for the purposes of this question {} Removes the top of the stack and evaluates to it <> Switches to or back from the alternate stack and evaluates to zero (foo) …

12
圧縮されたBrain-Flakを展開する
このチャレンジは、2018年4月のLotMチャレンジの一部として、およびBrain-flakの2回目の誕生日に投稿されました Brain-Flakプログラムをエンコードする最も効率的な方法は何かを考えていました。有効な文字は8つしかないため、行うべき明らかなことは、各文字を3ビットシーケンスにマップすることです。これは確かに非常に効果的ですが、それでも非常に冗長です。Brain-flakコードには、エンコードを短縮するために利用できる機能がいくつかあります。 ニラッドはすべて2つの一致するブラケットで表され、実際には2ではなく単一の情報単位として機能します。各ブラケットを1バイト文字に置き換えると、データを失うことなくエンコードがはるかに小さくなります。 これはそれほど明白ではありませんが、モナドの終了バイトも冗長です。'?'次のスニペットで文字が何を表すか推測できると思いますか? {(({}?<>?<>? 入力が有効なbrain-flakコードであると仮定した場合、それらの疑問符ごとに1つのオプションしかありません。これは、閉じるモナド文字を明確に使用して、すべての閉じ括弧を表すことができることを意味します。これには、文字セットを小さく保つという追加の利点があります。これは、ハフマンエンコーディングを使用する場合に非常に役立ちます。以来近いモナドの文字が最も可能性の高いワイドマージンによって最も一般的な文字になります、非常効率的である、単一ビットで表現することができます。 これらの2つのトリックにより、次のアルゴリズムを介してbrain-flakコードを圧縮できます。 モナドのすべての閉じ括弧をに置き換え|ます。または、言い換えると、開始一致の前にないすべての閉じ括弧をバーに置き換えます。そう... (({})<(()()())>{}) になるだろう (({}|<(()()()||{}| すべてのニラッドを閉じブラケットで置き換えます。したがって、何も含まれていない一致した括弧は、次のマッピングを使用します。 () --> ) {} --> } [] --> ] <> --> > これで最後の例は次のようになります。 ((}|<()))||}| 末尾の|文字を削除します。バーの総数は({[<文字の総数と等しくなければならないことがわかっているため、最後にバーがない場合は推測できます。次のような例: ({({})({}[()])}) になるだろう ({(}|(}[) 今日の課題は、このプロセスを逆にすることです。 文字のみを含む圧縮されたbrain-flakの文字列が与えられた(){}[]<>|場合、元のbrain-flakコードに展開します。入力は常に有効なブレインフラックに拡張されると想定できます。これは、入力のプレフィックスに文字を|超える({[<文字が含まれないことを意味します。 入力には末尾の|文字は含まれません。これらはコンテキストから推測する必要があります。 通常どおり、完全なプログラムまたは関数のいずれかを送信でき、入出力形式は許容されます。また、これはcode-golfであるため、ソースコードの長さ(バイト単位)によってコードがスコアリングされます。スコアが小さいほど優れています。 テストケース ここにいくつかのテストケースがあります。さらに必要な場合は、このpythonスクリプトとBrain-Flak Wikiを使用して独自のテストケースを生成できます。これは、これらのテストケースの大部分が由来する場所です。 #Compressed code #Original code ()))) (()()()()) ([([}()||||(>||{(})|>|}{((<}|||>}|}>} ([([{}(())])](<>)){({}())<>}{}{((<{}>))<>{}}{}<>{} ({(}|(}[)|||} ({({})({}[()])}{}) (((()))||(](((}}||(}([(((}))||||(]((}}|}|}}|||]||]|[))||(}))|}(}|(}]]|} ((((()()()))([]((({}{}))({}([((({}()())))]([](({}{}){}){}{})))[]))[])[()()])({}()()){}({})({}[][]){}

2
最速のミニフラッククイン
ミニフラックはのサブセットである脳高射砲の言語、<>、<...>および[]操作が禁止されています。厳密に言えば、次の正規表現と一致してはなりません。 .*(<|>|\[]) Mini-Flakは、Brain-Flakの最小の既知のチューリング完全サブセットです。 少し前、私は作ることができたクワインの中でミニフラックが、宇宙の一生の間に実行するには遅すぎました。 それで、あなたへの私の挑戦は、より速いQuineを作ることです。 得点 コードをスコアリングするに@cyは、コードの最後にフラグを付け、そのフラグを使用してRubyインタープリターで実行します(オンラインで試すにはrubyインタープリターを使用し-dます)。スコアは次のようにSTDERRに出力されます。 @cy <score> これは、プログラムが終了するまでのサイクル数であり、実行間で同じです。各サイクルの実行にはほぼ同じ時間がかかるため、スコアはプログラムの実行にかかる時間と直接相関する必要があります。 Quineが長すぎてコンピューターで適切に実行できない場合は、手動でサイクル数を計算できます。 サイクル数の計算はそれほど難しくありません。サイクル数は、実行されるモナドの数の2倍に実行されるニラドの数を加えたものに相当します。これは、すべてのniladを単一の文字に置き換え、実行される文字の総数をカウントすることと同じです。 スコアリングの例 (()()()) モナドが1つ、ニラドが3つあるため、スコアは5です。 (()()()){({}[()])} ループには6モナドと2ニラドのスコア8が含まれるが、ループは3回実行されるため、スコアを3回カウントします。 1*5 + 3*8 = 29 必要条件 あなたのプログラムは... 少なくとも2バイトである -Aフラグを使用してBrain-Flakで実行されると、ソースコードを出力します 正規表現と一致しません .*(<|>|\[]) ヒント クレーン、高射砲のインタプリタは、より高速なRubyインタプリタより断定的であるが、いくつかの機能を欠いています。最初にCrane-Flakを使用してコードをテストし、それが機能することがわかったらルビーインタープリターでスコアを付けることをお勧めします。また、プログラムをTIOで実行しないことを強くお勧めします。TIOはデスクトップインタープリターよりも遅いだけでなく、約1分でタイムアウトします。TIOがタイムアウトする前にプログラムを実行するのに十分な低得点を獲得できた場合、非常に印象的です。 [(...)]{}と(...)[{}]と同じように動作する<...>が、制限されたソースの要件を壊しません この課題への取り組み方を知りたい場合は、Brain-FlakとMini-Flak Quines をチェックしてください。

3
ブラケットのバランスをとる
目的:ブラケットの文字列を指定し、入力文字列をブラケットのバランスが取れた文字列に変換するために必要な最小のダメラウ-レーベンシュタイン距離を出力します。 入力 入力文字列には括弧のみが含まれ、他の文字は含まれません。つまり、の任意の文字の組み合わせです(){}[]<>。入力は、文字列または文字の配列として取得できます。入力文字列について他の仮定を行うことはできません。任意の長さ(言語でサポートされている最大サイズまで)、空の場合、ブラケットのバランスがすでに取れている場合などがあります。 ダメラウ-レーベンシュタイン距離 2つの文字列間のDamerau-Levenshtein Distanceは、2つの隣接する文字の挿入、削除、単一文字の置換、および転置(スワップ)の最小数です。 出力 出力は、入力文字列と角かっこが一致する文字列との間の最小Damerau-Levenshtein Distanceである必要があります。出力は、結果のバランスの取れた文字列ではなく、数値でなければなりません。 次のように、開始ブラケットと終了ブラケットが正しい順序であり、中に文字がない場合、一対のブラケットは「一致」とみなされます。 () []{} または、その中のすべてのサブ要素も一致する場合。 [()()()()] {<[]>} (()()) サブ要素は、いくつかのレイヤーの深さにネストすることもできます。 [(){<><>[()]}<>()] <[{((()))}]> (定義については@DJMcMayhemに感謝します) テストケース Input Possible Balanced Output Empty Empty 0 [](){}<> [](){}<> 0 [(){}<> [(){}<>] 1 [(]) []() 1 [[[[[[[[ [][][][] 4 (](<>}[>(}>><(>(({}] ()(<>)[(<><>){}] 7 >]{])< []{()} 3 ([)}}>[ (){}<> 4 {<((<<][{{}>[<) …

9
Brain-Flakでのゴルフのヒント
Brain-flakはスタックベースのチューリングターピット言語で、私とDJMcMayhemと1000000000の間で共同で作成されました。 一部のユーザーは、Brain-Flakの神秘的な方法を非常に経験しています。ですから、この質問を私たち、そしてできれば他の人たちにとっても、コミュニティと知識を共有し、「使いにくいように設計された」この言語への入り口を低くする方法として設定することをお勧めします。そしておそらく、私たちに新しい経験をもっと教えてください。 それでは、ブレインフラックでゴルフをするためのヒントはありますか?私は、一般的にゴルフの問題をコーディングするのに適用できるアイデアを探しています。それは少なくとも脳のフレークに特有のものです(たとえば、「コメントの削除」は答えではありません)。 回答ごとに1つのヒントを投稿してください。

6
追加または前置?依存する
Brain-flakは明日1歳になります!誕生日を記念して、PPCGスタイルのバースデーパーティーを開催します。このパーティーでは、数人のユーザーがブレインフラック関連の質問を投稿します。祝福にご協力ください!:) Brain-flakは私が書いた難解な言語で、すべてのコマンドが括弧であり、すべての括弧が完全に一致する必要があります。私自身の定義を借りるには: この課題のために、「括弧」は次の文字のいずれかです()[]{}<>。 次のように、開始ブラケットと終了ブラケットが正しい順序であり、中に文字がない場合、一対のブラケットは「一致」とみなされます。 () []{} または、その中のすべてのサブ要素も一致する場合。 [()()()()] {<[]>} (()()) サブエレメントは、いくつかのレイヤーの深さにネストすることもできます。 [(){<><>[()]}<>()] <[{((()))}]> 次の場合にのみ、文字列は「完全一致」と見なされます。 すべての文字は角かっこです。 ブラケットの各ペアには、正しい開閉ブラケットが正しい順序であります Brain-Flakの1歳の誕生日を祝うために、今日の課題は、不均衡なブラケットセットを取得し、それを有効なBrain-Flakにするために必要な操作の種類を決定することです。 たとえば、((は有効なbrain-flakコードではありませんが、これに追加))すると、になり(())、完全にバランスが取れているため、有効なbrain-flakです。これにより、この入力が追加可能になります。 同様に、>}は有効ではありませんが{<、makeに追加して有効にすることができ{<>}ます。これにより、この入力がprependableになります。 一部の入力はやや複雑です。たとえば、)][({追加または追加するだけでは有効にできません。しかし、それはできる付加することで有効となること[(と追記します})]。したがって、この入力はprependableとappendableの両方です。 最後に、一部の入力は、アペンドまたはプリペンドの任意の組み合わせによって、有効なブレインフラックコードにすることはできません。たとえば、(>有効にすることはできません。(前置を<作成し<(>、及び添付の)作成(>)、有効でどちらも)ため、この入力は、追記又はprependableもありません。 今日の課題では、括弧の文字列を取り、その文字列が appendable prependable both neither 各ケースを表すために使用する値を選択できます。たとえば、、、、1, 2, 3, 4またはを出力する'a', 'p', 'b', 'n'か1, 'foo', 3.1415, -17、何でも問題ありません。各出力が明確で一貫している限り、それは問題ありません。あなたはしなければならないが、明らかに出力対応の場合に指定します。 最も便利な形式でこの値を返すことができます(たとえば、関数から戻る、STDOUTに出力する、引数を変更する、ファイルに書き込むなど)。 入力が有効なブレインフラークまたは空になることはないと想定できます。 例 次の入力はすべて付加可能です: )) (((()()())))} )>}] ()[]{}<>) これらはすべて追加可能です: (({}{}) (((( ([]()())( {<<{ これらはすべて両方です: …

20
最初のブラケットマッチを見つける
これは、Brain-Flakの誕生日に至る一連の課題の1つでした。詳細はこちらをご覧ください。 チャレンジ この課題の目的は、完全に一致するブラケットの文字列から一致するブラケットの最初のペアを見つけること()[]{}<>です。完全に一致する文字列のDJMcMayhemの定義を借用するには: この課題のために、「括弧」は次の文字のいずれかです()[]{}<>。 次のように、開始ブラケットと終了ブラケットが正しい順序であり、その中に文字がない場合、一対のブラケットは「一致」とみなされます。 () []{} または、その中のすべてのサブ要素も一致する場合。 [()()()()] {<[]>} (()()) サブエレメントは、いくつかのレイヤーの深さにネストすることもできます。 [(){<><>[()]}<>()] <[{((()))}]> ブラケットの各ペアに正しい順序で正しい開始ブラケットと終了ブラケットがある場合にのみ、文字列は「完全一致」と見なされます。 入力 入力は、文字のみを含む単一の空でない文字列またはchar配列で構成()[]{}<>され、完全に一致することが保証されます。I / Oデフォルトに対応する合理的な方法で入力を行うことができます。 出力 プログラムまたは関数の出力は、最初の括弧を閉じる括弧のインデックスになります。出力は0、1インデックス化されているか、どちらかでなければなりません。繰り返しますが、出力はi / oのデフォルトに対応する合理的な方法で行われます。 テストケース Input 0-indexed 1-indexed () 1 2 (<>) 3 4 <[]{<>}> 7 8 {}{}{}{} 1 2 [[]<>[]] 7 8 これはcode-golfで、最少バイトが勝ちます!

3
人生がレモンを与えたら、レモネードを作りなさい
チャレンジ あなたはどこにでも単語が、入力文字列が与えられます"Lemon"、それはに変換する必要が発見され"Lemonade" たがa、d、およびe文のどこかから借りなければなりません。 例 入力例: 子供の頃にレモンを見つけました 出力例: 私は子供の頃レモネードを作りました レモネードは、元から次の上付き文字を盗んで作成されました 私はフン日間レモネードWH 電子を nは私がいた子供 これは、「e」、「d」、および「a」という可能な出力例の1つにすぎません。これはどこからでも取得できます(もちろん、単語以外はlemon) コメント •、、またはsが十分eでない場合は、指定された文字で実行可能なことを出力する必要があります。たとえば、入力は出力されますadbdblemonbblemond • lemonテキストは常にスタンドアロン(各側のスペース)であるとは限りません。たとえばlemons、入力のどこかに単語があり、出力は次のようになります。lemonades •入力にはlemon、0であっても任意の数のsを含めることができますlemon(この場合、出力は入力と同一になります)。 •レモネードを大文字と小文字で作成できます。たとえば、にleMonなる可能性がleMonadeあり、ade借りたものはどのような場合でも可能です(したがって、になる可能性もありますleMonADe)。あなたが借りた手紙のケースは、あなたがそれを借りたときの状態のままでなければなりません。(入力例->出力、he hAD lemOn-> h h lemOnADe) •完全なプログラムである必要はありません。機能だけで十分です。 •入力はCP437文字セットのみであると仮定できます。 コードゴルフ これはcode-golfであるため、バイト数が最も少なくなります! 擬似テストケース *注意:特定の入力に対して複数の出力が存在する可能性があるため、プログラムはこれらのテストケースのように正確に出力されない場合があります。これは、人々がロジックを理解できるようにするためです。 入力:EpaD leMons 出力:p LeMonaDEs 入力:hello world 出力:hello world 入力:レモンレモン 出力:レモンレモン *( 、、 文字は別の「レモン」から取られてはいけません)ead 入力:HE HADレモネード 出力:HH lemonADEade 入力:あなたはレモンが好きですか?あなたはレモンで私を苦しめました! 出力:o lemonADesが好きですか?あなたはレモネードを盛り上げました! …
21 code-golf  string  code-golf  parsing  internet  stack-exchange-api  code-challenge  kolmogorov-complexity  restricted-source  brain-flak  python  logic  pyth  code-golf  string  search  optimized-output  code-golf  tips  language-design  golfing-language  code-golf  tips  language-design  code-golf  number  sorting  pi  code-golf  math  number  code-golf  string  balanced-string  classification  brain-flak  code-golf  math  number-theory  decision-problem  code-golf  tips  code-golf  number  sequence  code-golf  balanced-string  brain-flak  code-golf  math  sequence  arithmetic  fibonacci  code-golf  math  parsing  code-golf  string  keyboard  code-golf  code-golf  string  source-layout  whitespace  code-golf  math  rational-numbers  code-golf  string  code-golf  string  code-golf  math  sequence  code-golf  number  floating-point  code-golf  string  decision-problem  subsequence  code-golf  string  kolmogorov-complexity  code-golf  string  permutations  balanced-string  brain-flak  code-golf  string  math  number  code-golf  string  primes  cipher  code-golf  string  ascii-art  chemistry  code-golf  ascii-art  grid  counting  code-golf  math  arithmetic  integer  code-golf  number  kolmogorov-complexity  code-golf  ascii-art  kolmogorov-complexity  sequence  metagolf  brain-flak  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  whitespace 

3
原子プロポーションのゲーム
あなたのタスクはAtomasをプレイするボットを作成し、最高スコアを獲得します。 ゲームの仕組み: ゲームボードは、6つの「原子」のリングから始まります。 1します3。原子自体に応じて、2つの原子間または別の原子上で原子を「再生」できます。 通常のアトムまたは特別なアトムを使用できます。 通常の原子: ボード上の任意の2つの利用可能な原子の間で通常の原子を再生できます。 範囲内の原子から始めます1 to 3が、範囲は40移動ごとに1ずつ増加します(したがって、40移動後に範囲は2 to 4)。 ボード上に範囲よりも低い原子がある場合1 / no. of atoms of that number on the board、スポーンする可能性があります。 2プレイする必要があるとしましょう。ボードは次のようになります。 1 1 2 1 2の右側に配置しましょう1。 ボードは次のようになります。 1 1 2 1 2 注:ボードは折り返されているので、1左端は実際には2右端のます。これは後で重要になります。 「特別な」アトムには4つのタイプがあり、それらは次のとおりです。 の +アトム: このアトムは、2つのアトム間で再生されます。産卵の確率は5分の1です。 原子の両側の+原子が同じ場合、融合が発生します。仕組みは次のとおりです。 The two atoms fuse together to create an atom …
21 code-challenge  game  code-golf  combinatorics  permutations  code-golf  image-processing  brainfuck  encode  steganography  code-golf  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  ascii-art  fibonacci  code-golf  string  code-golf  sorting  popularity-contest  statistics  code-golf  ascii-art  kolmogorov-complexity  code-golf  code-golf  ascii-art  tic-tac-toe  code-golf  string  code-challenge  classification  test-battery  binary-matrix  code-golf  math  arithmetic  code-golf  ascii-art  random  code-golf  string  code-golf  number  binary  bitwise  code-golf  number  arithmetic  code-golf  math  ascii-art  code-golf  string  ascii-art  code-golf  string  ascii-art  code-golf  string  code-golf  counting  code-golf  number  binary  bitwise  decision-problem  code-golf  array-manipulation  code-golf  tips  brain-flak  code-challenge  quine  source-layout  code-generation  code-golf  linear-algebra  matrix  abstract-algebra  binary-matrix  code-golf  string  palindrome  code-golf  puzzle-solver  sudoku  code-golf  ascii-art  code-golf  graphical-output  internet  code-golf  ascii-art  kolmogorov-complexity  code-golf  math  code-golf  clock 

9
3番目のFlak!
このチャレンジは、2018年4月のLotMチャレンジの一部として投稿されました Brain-Flakはチューリングターピット言語であり、PPCGでかなりの名声を得ています。この言語の記憶は2つのスタックで構成されていますが、ウィザードのWh eによって「隠された」3番目のスタックが発見され、Brain-Flakプログラムの興味深い新しい考え方につながりました。 だから、その貧しい隠された3番目のスタックの可視性を高めるのはどうですか?3番目のスタックに値する認識を持つ言語を作成しましょう!ここでThird-Flakを紹介します。 言語 Third-Flakには、3番目のスタックと呼ばれるスタックが1つだけあります。オペレータは、彼らが脳高射砲で行うのと同じ方法で、第三スタック上で動作しますが、ここには存在しない[]、{}、<>niladsなし{...}モナドは(サード高射砲プログラムでのみ許容文字があるので()[]<>)。各演算子の動作は次のとおりです(最後の要素がスタックの一番上にあるリストを持つ3番目のスタックを表す例を示します)。 ()Third-Flakで唯一の2文字演算子です。3番目のスタックの最上部を1つ増やします。例:[1,2,3]→[1,2,4] (、[、<:前ケースによって覆われていないすべての開口括弧プッシュ0第三のスタックに。例:[1,2,3]→[1,2,3,0] )3番目のスタックから2つの要素をポップし、それらの合計をプッシュバックします。例:[1,2,3]→[1,5] ]3番目のスタックから2つの要素をポップし、2番目から1番目を減算した結果をプッシュバックします。例:[1,2,3]→[1,-1] >3番目のスタックから要素をポップします。例[1,2,3]→[1,2] そして、言語の他の規則は次のとおりです。 実行の開始時に、3番目のスタックには単一の0のみが含まれます。 空[]または<>プログラム内に置くことは禁じられています(Third-Flakのセマンティクスに従う場合は、とにかく何もしませんが、実際にはBrain-Flakではここで再作成することはできません)。 プログラムの最後にある末尾の閉じ括弧が欠落している可能性があるという事実を除いて、括弧は常にバランスを取る必要があります。例として、[()<(()有効なThird-Flakプログラムがあります(プログラムの最後の3番目のスタックはになります[1,0,1])。 プログラムには、許可された6文字のみを含めることができます()[]<>。プログラムは空でないことが保証されています。 注:これは、空のスタックからポップする必要がある状況に対処する必要がないという以前のルールによって暗示されています。 チャレンジ シンプルで、Third-Flakのインタープリターを作成します。プログラムは、入力としてThird-Flakプログラムを受け取り、プログラムの最後の3番目のスタックの状態を出力として返す必要があります。 出力形式は、3番目のスタックの状態を明確に読み取ることができ、同じ番号が常に同じ方法でエンコードされる限り柔軟です(これは、出力形式が露骨な方法ではないことを示す方法です)不正行為を試みることは問題ありません)。 出力の選択により、チャレンジが簡単にならない限り、管理できる数値の範囲が制限される場合があります(これがデフォルトの抜け穴になるため)。 テストケース 各テストケースでは、最初の行が入力であり、2行目が出力スタックであり、スタックの最上部が最後の要素である数字のスペース区切りリストとして表されています。 [()<(() 0 1 0 1 [((((()()()()())) 0 0 0 5 ((([()][()][()]))) -3 [<<(((()()()())((((( 0 0 0 0 0 4 0 0 0 0 0 [()]<(([()])><[()] -1 0 …

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: 空のプログラム: 入力:なし 出力:なし …

28
逆モジュラスを計算する
タスク: の値を出力します。xここでa mod x = b、2つの値がありますa,b。 仮定 aそして、b常に正の整数になります 常に解決策があるとは限りません x 複数のソリューションが存在する場合は、少なくとも1つを出力します。 解決策がない場合は、何も出力しないか、解決策が存在しないという兆候を出力します。 組み込みが許可されています(他の数学的アプローチほど面白くありません) 出力は常に整数です 例 A, B >> POSSIBLE OUTPUTS 5, 2 >> 3 9, 4 >> 5 8, 2 >> 3, 6 6, 6 >> 7, (ANY NUMBER > 6) 8, 7 >> NO SOLUTION 2, 4 >> NO …
18 code-golf  math  number-theory  code-golf  number  integer  code-golf  string  code-golf  music  code-golf  arithmetic  array-manipulation  decision-problem  code-golf  math  rational-numbers  code-golf  code-golf  graphical-output  hardware  code-golf  math  number  code-golf  string  parsing  natural-language  code-golf  tips  brain-flak  code-golf  graph-theory  code-golf  number  polynomials  king-of-the-hill  code-golf  ascii-art  kolmogorov-complexity  animation  king-of-the-hill  code-golf  tips  code-golf  ascii-art  code-golf  string  array-manipulation  data-structures  code-golf  math  number  code-golf  string  base-conversion  binary  code-golf  decision-problem  graph-theory  code-golf  math  polynomials  code-golf  kolmogorov-complexity  physics  code-golf  sequence  number-theory  code-golf  math  integer-partitions  code-golf  array-manipulation  random  permutations  code-golf  string  decision-problem 

1
Brainflak Multiplication Metagolf
この質問は、Brain-Flakの最初の誕生日を祝うために設計されたいくつかのBrain-flak Birthdayチャレンジの最初のものです!Brain-Flakの誕生日の詳細については、こちらをご覧ください。 昨年の夏、私たちはBrain-flak Integer Metagolfを作成し、それが生成した回答はBrain-Flakコミュニティにとって非常に役立ちました。整数メタゴルフを非常に効率的にする主なものは、乗算ハードコーディングと呼ばれる技術です。 Brain-Flakでは、実行時の乗算は非常に高価です。既知の最短の乗算スニペットは次のとおりです。 ({}<>)({<({}[()])><>({})<>}{}<><{}>) メガトムが発見 ただし、コンパイル時間の乗算を作成する非常に簡単な方法があります。たとえば、次のコードは5倍になります。 (({})({})({})({}){}) オンラインでお試しください! これは、連続した式が一緒に追加されるため機能します。それぞれ({})がスタックに対して何もせず({}ポップし(..)てすぐに押し戻します)、スタックの一番上にあるものを評価します。これらのすべての式は、スタックの一番上にあるものを合計すると最大5倍になります。 いずれかのためにn、以下の文字列式は、スタックの最上部を掛けますスニペットを行いますn。 "("+"({})"*(n-1)+"{})" これはn、すべてスタックの最上位に評価される式を作成することで機能します。最初のものn-1は実際には何も変更せず、最後のものはプッシュの前にスタックのトップを削除します。 複合数値の場合、複数の小さな式を連結してバイトを節約できます。たとえば、5を2回掛けることで25を掛けることができます。 (({})({})({})({}){})(({})({})({})({}){}) これは非常に単純であり、いくつかの数値ではかなりうまく機能しますが、これを行うより良い方法があります。たとえば、私が思いついた方法の1つは、数値のバイナリ表現を使用しています。(ここにpythonの実装があります)この新しいメソッドは、前に示した単純な文字列式よりもはるかに効果的ですが、終わりではありません。 だから、私たちがどれほど良いものを得ることができるかを見る時だと思います。 Brain-Flakの簡単な概要 このチャレンジでBrain-Flakについて知っておく必要があるすべての説明を以下に示します。 Brain-Flakには「nilads」と「monads」があります。ニラッドは、中に何もないカッコです。各niladは処理を行い、値を返します。この挑戦のために私達がかかわっている2人のniladsは{}あり<>ます。 {}アクティブなスタックの一番上をポップし、その値を返します。<>アクティブスタックとアクティブスタックを切り替え、アクティブスタックが非アクティブになり、非アクティブスタックがアクティブになるように、ゼロを返します。 モナドは、中に何かがある括弧です。それらは、単一の引数、内部のすべての合計を取り、アクションを実行してから値を返します。懸念しているこれらの3つは(...)、<...>および[...]です。このチャレンジで最も重要なモナド(...)は、内部の値を取得してアクティブスタックにプッシュします。次に、引数を返します。 <...>そして[...]、彼らは任意のアクションを実行するのではなく、彼らが渡された値を変更しないでという、両方の「不活性」モナドです。 <...>渡された引数に関係なく、常にゼロを返します。一方、[...]常に引数timesを返します-1。 説明付きのサンプルプログラム Brain-Flakでプログラミングしたことがない場合は、説明されている操作を使用していくつかのサンプルプログラムを確認することをお勧めします。 ({}{}) これにより、スタックの上位2つの数字が追加されます。それぞれ{}がスタックから値をポップし、(...)合計を押し戻します。 ({}[{}]) 同様に、これはスタックの2番目の項目を最初の項目から減算します。それぞれ{}が値をポップする前と同様ですが[..]、2番目の値の前後で値が追加されます。もう一度(...)合計をプッシュします。 ({}<{}>) これにより、スタックの2番目の値が削除され、トップの値がそのまま維持されます。最後の2つと同じように機能しますが、2つ目の値はによって無音化される<...>ため、プッシュは最初の値のみを押し戻します。 (({})) これにより、スタックの一番上に値の2番目のコピーが作成されます。これは{}、値を取得してスタックの最上部をポップすることでこれを行い、最初に(..)値を評価してその値に戻します。2番目(...)は1番目から返された値を受け取り、それをスタックにプッシュします。2番目のコピーを作成します。 仕事 整数を指定nすると、現在のスタックの最上部にを掛けるスタッククリーンなBrain-Flakスニペットを作成しますn。 次のBrain-Flak操作を使用することが許可されています (...) -> Push Monad, Pushes the result of its contents <...> …

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