7、23文字、9つのバイト
54340045141332401057403
オンラインでお試しください!
これは完全に数字で構成される言語ではかなり難しい課題ですが、私はそれを管理しました…
これは、7のエンコードでわずか9バイトです。(厳密に言えば、8バイト(最後の2つの末尾の1ビットを省略することができるため23×⅜−¼)ですが、初めてバイト数に切り上げるというPPCGの要件は、実際には利点です。余分な末尾の1ビットが必要であるため、質問によって禁止されていません。)
00000000: b1c0 2530 b6a0 22f8 1f ..%0.."..
このプログラムを7で作成する主な課題は、10バイト未満でゴルフすることでした(使用せずに7を作成する0
か1
、かなり難しいです)。これは、標準の「Hello world」プログラムと同じ構造を使用します。
5434004514133240105 7 403
5434004514133240105コマンド0〜5はリテラルをデータ空間に追加します
7 データ領域の新しいセクションを開始します
403データスペースに追加された別のリテラル
{暗黙:コマンドとして最後のセクションを評価する}
4は 、6の間の空のセクションで1番目と2番目のセクションを交換
し、1番目のセクション3の 出力を作成するコマンドを再構築します
(+気にしない他のいくつかの効果)
つまり、データスペースの2つのセクションを作成することから始めます。2つのリテラルがあり、それぞれがそこに一連のコマンドをプッシュします。2番目のセクション(スタックスタイルでプッシュされるため、最初のプッシュ=最後のポップ)はコマンドのかなり任意のシーケンスですが、コマンドシーケンスを使用してプッシュされます5434004514133240105
(したがって、データシーケンスを生成します5434664574733246765
。テキストで7を議論するとき、通常は通常のフォントを使用しますリテラルをプッシュするコマンドの場合、対応する結果のリテラルの場合は太字になります)。最初のセクションは、コマンドシーケンスを使用してプッシュされ403
、を生成し463
ます。次に、最初のセクションがプログラムにコピーされます(7の暗黙の動作)。
463
今だけのプッシュリテラルことがすぐに何かを(太字)コマンドではなく、(非ボールド)コマンドで構成されています。4
セクションを再配置して、「文字列リテラル」を最初のセクションに入れます。次に0
、7が最もよく知られている操作を実行します。データ空間のセクションを取得し、それを作成した可能性が最も高いコマンドシーケンスを再構築します。元のコマンドシーケンスがすべて0
-の5
場合、これは100%正確です(当然のことながら、これらのコマンドは純粋にデータをプッシュするため、実行したことの明白な証拠が残るため)5434004514133240105
。元のシーケンスを取得します。最後に、3
それを印刷します。
したがって、ここで確認する残りの部分は、文字列のエンコードです。これには独自のドメイン固有言語があります。
5434004514133240105
5 change encoding: 6 bits per character
43 select character set: digits and common symbols
40 '9'
04 space
51 select character set: uppercase letters
4133240105 'B' 'Y' 'T' 'E' 'S'
(「数字と共通記号」文字セットには「選択文字セット:小文字」はありません。最初に別の文字セットを経由する必要があります。したがって、効果的な10 -バイト制限。)