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

8
自己コンパイルコンパイラ[終了]
これは、私がしばらく前に聞いたコンパイラに関する話に基づいていますが、残念ながら、いつ、どこで思い出すことができません。 自分自身をコンパイルできる言語で最短のコンパイラを作成します。「コンパイルプログラム」命令を持たない合理的なISA(68K、x86、MIPS、ARM、SPARC、IBM BALなど)をターゲットにします(VAXの一部のバージョンが除外される場合があります)。からソースプログラムを読み取りstdin、生成されたコードをに出力しstdoutます。I / Oおよび文字列処理に標準Cライブラリを使用できます(例:)_printf。言語全体をコンパイルする必要はありません。コンパイラを含むサブセットのみをコンパイルする必要があります(つまり、アセンブリ言語のクインを印刷するだけで、印象的ですが、ソリューションとしてカウントされません)。

5
同じコードの異なる文字
注:このチャレンジでは、コンパイルされた言語での回答のみが許可されます 仕事 タスクは非常に単純で、コンパイル時に同じ出力になる2つの異なるプログラムを作成します。 得点 ここからが楽しみです。スコアは、1つのプログラムに存在する一意のバイト数になります。たとえば、2つのプログラム(IBMコードページ437でエンコードされている)が ☻☻Program A そして ☺Program B 正確に1つのプログラムに含まれる文字は ☻☺AB したがって、スコアは4です。☻最初のプログラムでは2回表示されますが、1回しかカウントされないことに注意してください。 あなたの目標は最高のスコアを取得することです。可能な最高のスコアは256です。 これは、ASCIIエンコードプログラムで機能するスコアリングプログラムです。 規定 両方のプログラムのすべてのバイトを別のバイトに置き換えて、プログラムを別の結果にコンパイルするか、すべて一緒にコンパイルできないようにする必要があります。バイトを削除しても同じことが行われます。 両方のプログラムが同じフラグで実行される限り、コンパイルフラグを使用できます。 結果がマシンごとに異なる場合、実行するマシンが示されている場合、結果のコンパイルは静的でなければなりません(つまり、実行ごとに変化してはなりません)。 コンパイルの出力は、「同等」または「十分に類似」ではない同一のバイトのバイトである必要があります。 コンパイルの出力は空ではないはずです 警告/エラーはコンパイル間で同じである必要はありません プログラムまたはコンパイルのいずれかに印刷できない文字が含まれている場合は、hexdumpを必ず含めてください。技術的には必要ありませんが。

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:バズ) (リストされているものだけでなく、有効な入力のコードを生成するためにコンパイラが必要なことに注意してください。)

9
単項へのBrainf ** kおよび戻る
制限されたソースおよび他のそのような課題に非常に有用である言語がある単項、プログラムは一つだけの文字で書かれているbrainfuck誘導体。あなたの仕事は、プログラムをBrainfuckから単項に変換するプログラムと、逆のプログラムを作成することです。両方のプログラムは同じ言語で作成します。スコアは、2つのプログラムの長さの合計になります。 どのようにブレインファックから単項式に変換しますか? この表に従って、最初にあなたのコードをバイナリに変換します: 次に、コードを1つの巨大な2進数にコードの順序で連結します。 1文字列の先頭にa を付けて、一意の2進数を確保します。 任意の文字を使用して、2進数から単項数に変換します。 例:+.だろう000000000000000000000000000000000000000000000000000000000000000000000000000000000000(84ゼロ)。 Brainfuck->単項仕様 結果のプログラムは信じられないほど巨大になるため、実際のプログラムではなく、結果のプログラムの長さだけを印刷します。 stdin、関数argなどを使用して、brainfuckプログラムを文字列として取得し、長さを出力します。 プログラムは常に有効で、8文字しか含まれていません。 単項-> Brainfuckの仕様 上記のアルゴリズムの逆を実装する必要があります。 ここでも問題のサイズが大きいため、入力は単項コードの長さを表す数値になります。 いつもと同じI / Oルール。 プログラムは常に有効で、8文字しか含まれていません。 テストケース Hello World- ++++++[>++++++++++++<-]>.>++++++++++[>++++++++++<-]>+.+++++++..+++.>++++[>+++++++++++<-]>.<+++[>----<-]>.<<<<<+++[>+++++<-]>.>>.+++.------.--------.>>+.=239234107117088762456728667968602154633390994619022073954825877681363348343524058579165785448174718768772358485472231582844556848101441556 フィボナッチ- ++++++++++++++++++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++++>++++++++++++++++>>+<<[>>>>++++++++++<<[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]>[<+>-]>[-]>>>++++++++++<[->-[>+>>]>[+[-<+>]>+>>]<<<<<]>[-]>>[++++++++++++++++++++++++++++++++++++++++++++++++.[-]]<[++++++++++++++++++++++++++++++++++++++++++++++++.[-]]<<<++++++++++++++++++++++++++++++++++++++++++++++++.[-]<<<<<<<.>.>>[>>+<<-]>[>+<<+>-]>[<+>-]<<<-]<<++...=13067995222095367150854793937817629722033205198624522624687536186118993888926522550140580142585590431635487113180955099384652678100247403485397450658564826143160529351955621991895221530908461364045400531236124980271740502887704217664044858614821622360156740992393765239123681327824577149595724956207165558106099868913919959549896553103116795519592552089266360725543244154867904980260 これはコードゴルフなので、バイト単位の最低スコアが勝ちです! Unaryで解決策を考えている人はいますか?; P

3
Brainfuckコンパイラを書く
Brainfuckプログラムを取得し、実行可能なマシンコードにコンパイルするプログラムを作成します。x86、x86_64、jvm(javaバイトコード)またはarmv6をターゲットにし、ELF、a.out、クラスファイル、exe、comの実行可能形式のいずれかを使用できます。実行可能ファイルは、LinuxまたはWindows(またはJavaのいずれか)で動作するはずです。 プログラムも生成された実行可能ファイルも、外部プログラム(別のコンパイラ、アセンブラ、インタプリタなど)を実行することはできません。 最短のコードが優先されます。

1
自己表示画像[終了]
休業。この質問には詳細または明確さが必要です。現在、回答を受け付けていません。 この質問を改善してみませんか?詳細を追加し、この投稿を編集して問題を明確にしてください。 11ヶ月前に閉鎖。 バックグラウンド 自己解凍.ZIPファイルがあります。通常は拡張子.EXEが付きます(抽出されるファイルを実行することにより)が、名前をに変更すると.ZIP、いくつかのZIP解凍ソフトウェアでファイルを開くことができます。 (.EXEファイルには特定のヘッダーが.ZIP必要ですが、ファイルには特定のトレーラーが必要であるため、これは可能です。.EXEヘッダーと.ZIPトレーラーの両方を持つファイルを作成することは可能です。) あなたのタスク: 「自己表示」イメージファイルを作成するプログラムを作成します。 プログラムは、64x64の画像(少なくとも4色がサポートされている)を入力として受け取り、「結合された」ファイルを出力として受け取ります。 プログラムの出力ファイルは、一般的な画像ビューアによって画像ファイルとして認識されます。 画像ビューアで出力ファイルを開くと、入力画像が表示されます 出力ファイルは、任意のオペレーティングシステムまたはコンピュータータイプの実行可能ファイルとしても認識されます。 (一般的でないオペレーティングシステムまたはコンピューター用のファイルが作成された場合、オープンソースのPCエミュレーターが存在していると便利ですが、これは必須ではありません。) 出力ファイルを実行すると、入力画像も表示されます ファイルの名前を変更する必要があります(たとえば、.PNGから.COM) プログラムとその出力ファイルを同じOSで実行する必要はありません。このプログラムは、たとえば、Windowsプログラムと、Commodore C64で実行できる出力ファイルです。 受賞基準 生成するプログラムの最小出力ファイル勝利を 出力ファイルのサイズが入力画像によって異なる場合(たとえば、プログラムが画像を圧縮するため)、最大 4色の64x64画像を表すプログラムによって作成された最大の出力ファイル数 ところで StackOverflowでこの質問を読んだとき、私は次のプログラミングパズルのアイデアを思いつきました。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.