タグ付けされた質問 「code-generation」

答えがコードを生成することが期待される課題のために。

8
一般化されたQuine Generator
チャレンジ このチャレンジでは、ソース言語 Sとターゲット言語 を指定しますT。あなたの仕事は、次のプログラムPを言語で書くことですS。Q言語の有効なプログラムがのT入力として与えられた場合、入力と出力を受け取らない言語のP有効なプログラム、つまりのソースコードに適用されるプログラムを出力します。さらに、答えには自明ではないサンプルプログラム(より面白く、より良いが、これに対してポイントを獲得しませんが)、結果のプログラム、およびの出力を提示する必要があります。これはコードゴルフですので、勝つための最短のコードです。RTQ(R)QRQRRP 言い換えれば、これは、任意のタイプの一般化されたクインを作成できる「ユニバーサルクインコンストラクター」の作成に関する課題です。 明確化 ソース言語とターゲット言語は同一である場合があります。 プログラムPは、すべての出力プログラムと同様に、入力として1つのストリング(STDINまたは同等のものから)を受け取り、1つのストリング(STDOUTまたは同等のものへ)を出力する必要がありますR。 入力プログラムQも文字列を別の文字列に変換する必要がありますが、その形式はより柔軟です:文字列から文字列への関数、特定の名前の変数を変更するコードスニペット、ターゲット言語の場合にデータスタックを変更するスニペットなどがありQます。たとえば、コメントを含めないことを指定することで、の形式をさらに制限することもできます。ただし、任意の計算可能な文字列から文字列への関数を入力プログラムとして実装できる必要があり、それらがどのように機能し、どのような制約を課すかを明示的に指定Qする必要があります。 出力プログラムRは、実際には(一般化された)クインである必要があります。Qしたがって、そうしない限り、入力(ユーザー入力、ファイルなど)を読み取ってはなりません。 標準の抜け穴は許可されていません。 例 ソース言語としてPythonを選択し、ターゲット言語としてHaskellを選択し、さらに入力プログラムがString -> Stringという名前の関数の1行の定義であることを要求するとしますf。文字列反転プログラムを与えると f x = reverse x Pythonプログラムへの入力としてP、別のHaskellプログラムのソースコードを出力しますR。このプログラムは、のソースコードをSTDOUTに出力しますRが、逆になります。Pアイデンティティ関数が与えられた場合 f x = x 入力として、出力プログラムRはクインです。

9
賢い数字を作る
Wiseは、私がしばらく前に設計した単純なビット単位の言語です。Pythonのビット演算に基づいています。いくつかの操作があり、これらのほとんどはPythonの同等のシンボルと同じか、非常に似ています。 : スタックの一番上を複製する ? スタックの上部を下部に回転させます ! スタックの下部を上部に回転させます [ ] スタックの最上部がゼロでないときにループする ~スタックの最上部ではない(-(n+1)) -スタックのトップを無効にします(-n) >スタックの一番上を一度右にビットシフトします(n//2) <スタックの一番上を一度左にビットシフトします(n*2) ^xorスタックの上位2項目(Pythonと同じ) |またはスタックの上位2項目(Pythonと同じ) &スタックの上位2項目(Pythonと同じ) Wiseで整数を作成するのは非常に簡単で、ゼロを作成し::^て増分できる~-ので、ゼロを作成して何度も増分できます。しかし、-物事を削除すると、もう少し面白くなります。 残りの操作を使用して、すべての番号を作成できます。たとえば、ここは3です ~<<~ TIO これ~は、無限の0ビット列であるゼロを負のビット、無限のビット列に変換し1、それぞれが最後にビットを<追加する0ために機能します。終了すると、~それぞれ0が2つ1のsが続くsの文字列になります、またはほとんどの人がそれを呼ぶように3。 仕事 正の整数を指定すると、そのソース(出力のソース、独自のソースで使用可能)nなしで数値を作成するWiseプログラムを出力するプログラムを作成します。スタックの先頭に既にゼロがあると仮定することができます。-- これはメタゴルフで はなく コードゴルフなので、必ずしも出力ではなくソースコードの生成を最小限にすることを目指してください。 出力例 このリストは網羅的ではなく、単に可能な出力です 1 -> ~<~ 2 -> ~<~< 3 -> ~<<~ 4 -> ~<~<< 5 -> ~<~:<<| 6 -> ~<<~< 7 -> ~<<<~ …

11
PPCGを出力するプログラム…を出力するプログラムを出力します
チャレンジ: 実行すると、別の言語で実行可能な2番目のプログラムのソースコードを出力するコードを記述します。2番目のプログラムは、3番目の言語で実行できる3番目のプログラムのソースコードを出力する必要があります。最後のプログラムはPPCG、オプションの単一の末尾改行で出力する必要があります。 勝者は、ほとんどの言語で提出されます。最初のプログラムのコード長がタイブレーカーになります。 重要なルール: どのプログラムも同一にすることはできません 各言語は、いずれかのソースコードでのみ機能する必要があります。チェーンの2つの場所で同じ言語を壊さずに使用することはできません(例を参照)。 短縮されたチェーンは壊れたチェーンではありません。意図した場所とは異なる場所で言語を使用でき、最終結果がまだPPCGである場合、それは無効です 言語のすべてのバージョンは一意の言語としてカウントされます(ただし、ルール番号2に留意してください) 例: 無効な提出: print("""print'disp("PPCG")'""") Python 3:print("""print'disp("PPCG")'""")プリントprint'disp("PPCG")' Python 2:print'disp("PPCG")'印刷disp("PPCG") オクターブ:disp("PPCG")プリントPPCG これは正常に動作、しかし:あなたは、チェーンを壊すことなく、Pythonの2に、第1および第2のコードの両方を実行することができますので、これはルール番号2に違反します。 スコア3の有効な提出: print("""print'disp("PPCG")'""") Python 3:print("""print'disp("PPCG")'""")プリントprint'disp("PPCG")' Perl:print'disp("PPCG")'印刷disp("PPCG") オクターブ:disp("PPCG")プリントPPCG これは、無効な例とまったく同じコードです。違いは、ルール番号2に従う言語を選択したことです。最初のコードはPerl / Octaveで、2番目のコードはPython 3 / Octaveでも、最後のコードはPython 3 / Perlでも実行できません。Python 2を言語の1つとして使用していないため、Python 2は最初の2つのプログラムを実行できますが、これは有効です。

9
メタポリグロット馬
PPCGに取り組んでいた頃、私は、クインの問題とポリグロットの問題が非常に一般的であることに気付きました。また、問題のメタソリューション、つまり問題の解決策であるプログラムを生成するスクリプトは、コミュニティから多くの肯定的なフィードバックを得る傾向があります。したがって、これらの3つのアイデアを実装するこの課題を作成しました。 読者でありコードゴルフ愛好家であるあなたの仕事は、2つの言語AとBで実行できるスクリプトをできるだけ短く作成して、AとBのクインを生成することです。プログラムを言語Aで実行すると、言語Bのクインであるが、言語Aのクインではないプログラム。言語AとBは、生成されたクインがいずれかのバージョンでのみ機能することを念頭に置いて、同じ言語の異なるバージョンにすることができます。 標準の抜け穴は閉じていると見なされるべきであり、適切なクインのみが許可されること に留意してください。 幸運なことに、最少のキャラクターが勝ちます!

4
成長するクインシーケンス
p1 p2 ... p10以下の特性を満たす10個のプログラムのシーケンスを作成します。 pK印刷pK+1のためのK1から9まで p10 プリント p10 最初のKプログラムが連結されると、結果のプログラムがp1...pK印刷されp1...pKます。 各プログラムpKは、前のプログラムよりもバイトサイズが大きくなければなりませんpK-1。 すべてのプログラムは同じ言語である必要があります。 組み込みのクイニング機能(Q多くの言語など)が許可されています。 スコアは、10個のプログラムのバイトカウントの合計です。プログラムは10個しかないため、コードはできるだけ短くする必要があります。幸運を。

2
文字列から画像
ちょっとした背景: Brainf * ckについて最初に学んだとき、最初にしたことの1つは、文字列を取り込んで、その文字列を印刷するためのある程度最適化されたプログラムを作成するJavaアプリケーションを作成することでした。 最近、私はPietで遊んでいて、同じことをやって遊んでいます。私は、Pietがこの挑戦に少し追加するかなり興味深い言語であることを理解しました。 だから、私はSEの友達に挑戦をしたかったのです。この言語で何ができるか見てみましょう。 チャレンジ 空でないASCII文字列を取り込むプログラムまたは関数を作成します。ストリングを処理して、ストリングを出力して終了するPietプログラムを生成します。 出力は、最適な形式のパイトソースイメージです。PNGが推奨されますが、必須ではありません。 Piet機能はここでテストできます。 Pietコードは、出力文字列自体を生成する必要があります。ユーザーからの入力は許可されていません。 以下に示すように、Piet-承認済みの色のみを使用できます。 これは人気コンテストなので、投票により勝者が選ばれます。ソースコードのサイズによって関係が壊れます。 ボーナスポイントは、出力画像の創造性に基づいて、私の裁量で授与されます。結局のところ、これらは写真です。

4
実用的な数値を計算する
定義 正の整数nは、すべてのより小さい正の整数がの別個の約数の合計として表される場合に限り、実用的な数値(OEISシーケンスA005153)ですn。 たとえば18、実用的な数値です。除数は1、2、3、6、9、18であり、18より小さい他の正の整数は次のように形成できます。 4 = 1 + 3 5 = 2 + 3 7 = 1 + 6 8 = 2 + 6 10 = 1 + 9 11 = 2 + 9 12 = 3 + 9 = 1 + 2 + 9 = 1 + 2 + 3 …
18 code-golf  sequence  number-theory  code-golf  code-challenge  sorting  c  code-golf  restricted-source  code-golf  natural-language  code-golf  tree-traversal  file-system  popularity-contest  pi  polyglot  code-golf  game  sliding-puzzle  code-golf  game  minesweeper  code-challenge  ascii-art  code-challenge  popularity-contest  graphical-output  code-challenge  popularity-contest  hello-world  underhanded  obfuscation  code-golf  code-golf  function  code-golf  code-golf  code-golf  popularity-contest  rosetta-stone  code-golf  primes  code-golf  restricted-source  popularity-contest  number  sequence  code-golf  restricted-source  popularity-contest  graphical-output  code-golf  popularity-contest  code-golf  primes  code-golf  game  code-golf  math  popularity-contest  popularity-contest  code-generation  popularity-contest  code-bowling  code-golf  popularity-contest  underhanded  code-golf  metagolf 

4
FractranをBrainfuckに変換する
バックグラウンド Fractranは、John Conwayによって発明された難解なチューリング完全プログラミング言語です。Fractranプログラムは、分数の順序付きリストで構成されています。プログラムは、入力として単一の整数を取ることから始まります。プログラムの各反復で、最初の分数をリストで検索し、その分数で数値を乗算すると別の整数が生成されるようにします。次に、リストの先頭から新しい番号でこのプロセスを繰り返します。リストに数値と乗算できる分数がない場合、プログラムは終了し、数値を出力として提供します。 Fractranがチューリング完全である理由は、レジスタマシンをシミュレートするためです。数値の素因数分解はレジスタの内容を保存しますが、除算と乗算は条件付きでレジスタを加算および減算する方法です。ウィキペディアの記事(上記にリンク)を読むことをお勧めします。 チャレンジ あなたのタスクは、STDINから有効なFractranプログラムを唯一の入力として取得し、Fractranプログラムをシミュレートする有効なBFプログラムをSTDOUTに生成する、可能な限り最短のプログラムを作成することです。BFを使用してFractranプログラムをシミュレートする方法は2つあります。 注:あなたの答えはBFプログラムではありません。答えは、特定のFractranプログラムからBFプログラムを生成するコードです。目標は、BFプログラムをFractranプログラムと同等にすることです。(技術的にはBFで競争することができますが、難しいでしょう) オプション1 プログラムは、次のことを行うBFプログラムを出力する必要があります。 対応するASCII文字(BF入力の動作方法による)の形式で、STDINから正確に1つの番号を取得します。これは、Fractranプログラムへの入力です。 対応するASCII文字の形式でSTDOUTに正確に1つの数字を出力します。これはFractranプログラムからの出力です。 このオプションは、Fractran仮​​想マシンからの正確な入力と出力を表すことを目的としています。 オプション2 プログラムが生成するBFコードは次のことを行う必要があります。 (プログラムを実行する前に)メモリに既にエンコードされている数の素因数分解を行うことにより、入力を取得します。入力が28(2 * 2 * 7)の場合、2番目のセルに値2があり、7番目のセルに値1があります(ポインターはセル0から始まります)。他のすべてのセルはゼロになります。 プログラムの終了時に、出力の素因数分解をメモリにエンコードすることにより、出力を提供します。出力が10の場合、セル2と5のそれぞれに値1がなければなりません。他のすべての素数のセルの値はゼロでなければなりません。他のセルの内容は関係ありません。 このオプションは、Fractran言語の背後にあるコンピューティングモデルを表します。 ルールと要件 入力(プログラムの上部)は、STDINの分数のリストになります。分子と分母の間にコンマがある行ごとに1つの小数があります。空行は入力の終わりを表します。端数は常に最低の項に削減されます。 プログラムの出力は、STDOUTに対する単一行の有効なBFプログラムでなければなりません。このプログラムは、2つのオプションのいずれかに従って、特定のFractranプログラムをシミュレートできる必要があります。入力については、生成されたBFプログラムはFractranプログラムと同じ出力を生成できるはずです。 選択したオプションを指定する必要があります。 BFメモリとテープの境界、およびそれらがラッピングしているかどうかを選択できます。 コードゴルフ。また、出力されるBFプログラムのサイズは重要ではなく、変換を行うプログラムのサイズのみが重要です。 プログラムは印刷可能なASCIIのみで構成する必要があります 私がどこでもあいまいな場合は、askすることをaskしないでください。これは説明するのが非常に複雑な課題です。 さらに、プログラムが動作しているかどうかを簡単に確認できるように、次の入力用にプログラムで生成されたBFコードを投稿してください。 33,20 5,11 13,10 1,5 2,3 10,7 7,2 このプログラムは、数値のバイナリ展開で1の数を計算します。ただし、入力と出力は奇妙な形式になっています(すべてのFractranプログラムと同様)。入力の形式は2 ^ Aで、出力の形式は13 ^ Bです。

13
逆順列インデックス
前書き リストの辞書式の順列n個の要素は、0から番号を付けることができ、N!-1.たとえば、3!= 6個の順列が(1,2,3)あろう(1,2,3)、(1,3,2)、(2,1,3)、(2,3,1)、(3,1,2)、(3,2,1)。 順列がリストに適用されると、その要素は順列の数字と同じ順序で並べられます。たとえば、yieldsに順列(2,3,1)を適用しl = (a,b,c)ます(l[2],l[3],l[1]) = (b,c,a)。 順列の逆は、この操作を逆にする順列として定義されます。つまり、順列を適用し、その逆(またはその逆)は配列を変更しません。たとえば、yの逆(2,3,1)は(3,1,2)、(b,c,a)yieldsに適用されるため(a,b,c)です。 また、順列自体に適用される順列の逆は、整数1… nを生成します。たとえば、yields に適用(3,1,2)し(2,3,1)ます(1,2,3)。 私たちは今、関数定義revind(Xをインデックスと順列の逆置換の指標として)のx。(興味がある場合、これはA056019です。) インデックスの順列ので、私は唯一の最後の変更のkリストの項目を場合に限っ 0≤ I < K!、我々は影響を与えずに、リストの先頭に任意の数の要素を追加することができますrevind(Iを)。したがって、リストの長さは結果に影響しません。 チャレンジ あなたのタスクはrevind(x)を実装することです。入力/引数として単一の非負整数xを取り、結果を単一の非負整数として出力/返す完全なプログラムまたは関数を作成します。 入力および出力は0インデックスまたは1インデックスの場合がありますが、これはそれらの間で一貫している必要があります。 インデックスによって順列を生成する、順列のインデックスを返す、または逆順列を見つける組み込み関数は禁止されています。(すべての順列または次の順列を生成するビルトインが許可されます。) 標準のコードゴルフ規則が適用されます。 例 以下の例は0から始まります。 Input Output 0 0 1 1 2 2 3 4 4 3 5 5 6 6 13 10 42 51 100 41 1000 3628 2000 …
17 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 

2
真理値表が与えられたら、それを満たすStackylogicプログラムを出力します
Stackylogicは、前の課題で作成したプログラミング言語です:Stackylogicを実行します。詳細と例については、その投稿を読んでください。しかし、次のように機能します。 Stackylogicは、入力用に0とを取り1、単一0 または1完了時に出力します。 プログラムは、文字のみを含む行で構成さ01?だけでなく、正確に一つとして<ラインの1の終わりに。行は空ではないかもしれないとして行が<少なくとも一つ持っている必要があります0、1または ?それ以前に。 2ビットのNANDを計算するサンプルプログラムを次に示します。 1 ?< 11 ? 0 プログラム内のすべての行はスタックと見なされ、左が下、右が上になります。暗黙的に、プログラムの最初の行の前と最後の行の後に空のスタック(つまり空の行)があります。 <プログラムが実行されたときに、カーソルと呼ばれ、マークスタックは上を開始します。実行は次のように進行します。 カーソルが現在指しているスタックから先頭の文字をポップします。 文字がの場合、?ユーザーにa 0またはa を要求し、それが文字であるかのよう1に動作します。 文字がの場合、0カーソルを1スタック上に(現在の行の上の行に)移動します。 文字がの場合、1カーソルを1スタック下に(現在の行の下の行に)移動します。 カーソルの移動先のスタックが空の場合、スタックからポップされた最後の値(常にa 0または1)を出力し、プログラムを終了します。 それ以外の場合、カーソルの移動先のスタックが空でない場合は、手順1に戻ってプロセスを繰り返します。 この課題を実現するために重要なことは、すべてのStackylogicプログラムが真理値表と同等であることです。所定の数のブール値が入力され、正確に1つのブール値が確定的に出力されます。 したがって、あなたのタスクは、満たすかシミュレートするStackylogicプログラムを作成することです。つまり、与えられた真理値表と同じ出力を持ちます。しかし、Stackylogic が任意の真理値表をシミュレートできることは明らかではないため、ここに帰納法による証明があります。 規範事例 2つの0入力の真理値表は、常に0またはを 出力する表です1。これらのテーブルに相当するStackylogicは0<、1< それぞれです。 誘導ステップ Stackylogicが任意のN入力真理値表をシミュレートできると仮定します。M = N + 1とします。 M入力テーブルTは、2つのN入力テーブルT 0およびT 1に追加の入力ビットBを加えて表現できます。Bが0の場合、T 0の結果が使用されます。Bが1の場合、T 1の結果が使用されます。 たとえば、擬似コードに対応する3入力の真理値表 if B: result = x OR y else: result …

12
シャミールの秘密の共有
与えられたn(プレイヤーの数)、 t(しきい値)、およびs(秘密)、出力nによって生成された秘密シャミール秘密分散アルゴリズム。 アルゴリズム このチャレンジの目的のために、計算はGF(251)(sizeの有限体251、または整数mod 251として知られる)で行われます。通常、フィールドは、サイズがより大きい素数になるように選択されnます。課題を簡素化するために、フィールドサイズは一定になります。251これは、8ビットの符号なし整数で表現できる最大の素数であるため選択されました。 t-1(包括的)範囲でランダムな整数を生成します[0, 250]。これらのラベル1を通過T-1 。 構築t-1用い番目の多項式をsのパワーの係数として工程1からの一定値とランダムな整数としてx:F(X)= S + X * 1 + X 2 * 2 + ... + X T- 1 * a t-1。 (包括的)範囲内の(f(z) mod 251)それぞれの出力。z[1, n] 参照実装 #!/usr/bin/env python from __future__ import print_function import random import sys # Shamir's Secret Sharing algorithm # Input …
17 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 

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 

13
FizzBu​​zzコンパイラーを作成する
コンパイラーゴルフの世界へようこそ。あなたの仕事は、仕様でFizzBu​​zzのバリアントを再生する別のプログラムを生成するプログラムを書くことです。 コンパイラー FizzBu​​zzプログラムのバリアントを仕様に合わせて生成するコンパイラーを作成します。このバリアントの仕様は、整数/文字列のペアの配列の形式で表されます。 入力は、言語に都合のよい形式であればどのような形式でもかまいません。(私の例ではn:xxxxを使用していますが、これは単に説明のためです。) 各整数入力は、コンパイラーの呼び出しごとに1回のみ使用できます。 各ペアの整数は、少なくとも1つの値を持ちます。 各ペアの文字列は、ちょうど4つのASCII文字で構成されます。 出力は、以下の規則に準拠する単一の完全なプログラムでなければなりません。 テキスト形式のプログラムである限り、出力は任意の便利な形式にすることができます。(したがって、ラムダ式を返しません。) 上記の規則に準拠していない入力の動作は未定義です。 生成されたFizzBu​​zzプログラム コンパイラが生成するプログラムは、入力として単一の整数nを受け取ります。1からnまでの一連の数値を出力し、必要に応じて数値をFizzBu​​zz文字列に置き換えます。 生成されたプログラムは、コンパイラーと同じ言語である必要があります。 入力nは、言語に適した任意の形式にすることができます。 nには少なくとも1つの値があります。 コンパイラーへの整数入力の少なくとも1つの倍数である数値は、それらの整数を結合したすべてのストリングで置き換える必要があります。 FizzBu​​zz文字列に置き換えられない数値は、10進数のASCIIで出力する必要があります。 例えば; > GenFizzBuzz 3:Fizz 5:Buzz > a.out 5 1 2 Fizz 4 Buzz 得点 エントリーは、コンパイラーが生成するプログラムの長さをコンパイラーの長さに追加することによってスコアリングされます。以下の各パラメーターを使用してコンパイラーを何度も実行し、生成されたプログラムの長さとコンパイラーの長さを加算して、スコアを見つけます。 ただカウント。(入力なし-生成されたプログラムは、置換なしで1からnまでカウントされます。) ただのゴルフ。(1:ゴルフ-生成されたプログラムは「ゴルフ」をn回出力します。) クラシックFizzBu​​zz。(3:フィズ、5:バズ) (リストされているものだけでなく、有効な入力のコードを生成するためにコンパイラが必要なことに注意してください。)

2
正規表現のコンパイル
このタスクでは、正規表現を読み取り、その正規表現が入力文字列を受け入れるかどうかを出力する別のプログラムを生成するプログラムを作成する必要があります。出力は、提出物と同じ言語で書かれたプログラムでなければなりません。 入力 入力は、次のABNFに一致する正規表現rです(最初の生産規則はですREGEX)。 REGEX = *( STAR / GROUP / LITERAL / ALTERNATIVE ) STAR = REGEX '*' GROUP = '(' REGEX ')' LITERAL = ALPHA / DIGIT ALTERNATIVE = REGEX '|' REGEX 入力がこの文法と一致しない場合、プログラムの動作は未定義です。 解釈 入力を正規表現として解釈します。ここ*で、Kleene-star(左引数を0回以上繰り返すことを意味します)|は代替で(あり、)グループであり、演算子はまったく連結されていません。グループ化はスターより優先され、スターは連結より優先され、連結は代替より優先されます。 正規表現が文字列全体と一致する場合、文字列は受け入れられると言われます。 出力 プログラムの出力は、文字列読み込み、あなたの投稿と同じ言語で書かれた別のプログラムであるのかどうか、実行時に方法を定義した実装では、出力rは受け入れ秒を終了。出力はユーザー定義の方法で実行できますが、受け入れられたプログラムと拒否されたプログラムの出力は2つだけでなければなりません。 出力プログラムの入力が2 16 -1バイトより長くなることはないと想定できます。 制限事項 提出物も、提出物によって生成されたプログラムも、組み込み機能またはライブラリを使用できません。 正規表現に一致 正規表現を変換する 正規表現をコンパイルする 文法からパーサーを生成する 提出物が簡単になるように問題を簡素化する 得点 …

7
500バイトで区切られた反復期間の最長期間を書き込みます
あなたの仕事は、シーケンス内の各プログラムの長さが500バイトに制限されている、最も長い期間反復するquineを作成することです。 つまり、次の手順を繰り返す場合: 最初のプログラムから始めます 現在のプログラムを実行する 手順2に戻る 最終的に元のプログラムに戻ります。サイクル内のプログラムの数はスコアであり、最大化しようとしています。 どのプログラムでもエラーは発生しません。各プログラムも同様に実行する必要があります(異なるバージョン、実装、コンパイラオプション、プラットフォームなどはありません)(編集:はい、擬似乱数ジェネレーターのような外部状態は最後に含まれていましたステートメント。外部状態は、各実行後に「リセット」する必要があります。真の乱数を使用する場合、最悪の場合が想定されます。 この課題と最長期間の反復クイン(100対500以外)との違いは、サイクル内のすべてのプログラムも500バイト以下でなければならないことです。これは、可能な最長のサイクルが(256 ^ 501-1)/ 255以下であることを意味します。それはもちろん大きな数字ですが、計算に必要なコードの量という点ではそれほど大きくはありません。したがって、課題は、できるだけ多くの(256 ^ 501-1)/ 255の可能性を使用することであり、忙しいビーバーの課題ではありません。 プログラムが独自のソースコードにアクセスすることは許可されていません。ただし、必要に応じて空のプログラムを使用できます(他の規則に従う場合)。 プログラムを手動でチェックするのは難しいので、理論的な方法を使用してスコアを計算することができます。プログラムにスコアと正確さの説明を含める必要があります。スコアを把握できない場合は、代わりに、サイクル内のプログラム数の下限を事実上のスコアとして使用できます。より良い下限を見つけた場合、または正確な実際のスコアを見つけた場合、これを更新することができます。 これはコードチャレンジなので、最高のスコアが勝ちます! 編集:あなたのスコアが科学的記法であるものを書くことをお勧めします。そうすれば、答えはより簡単に比較できます。他の形式のスコアも特に問題なくプログラムに関連付けられている場合、まったく問題ありません。また、読者はこれに準拠するために以前の回答を編集することをお勧めします。

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