3
星空のメタゴルフ
Starryは、難解なプログラミング言語です。コードは+*.,`'、各文字が表す実際のコマンドがその前のスペースの数によって決定される場所のみで構成されます。さまざまなコマンドが非常にさまざまなバイト数に対応できるため、ゴルフの固定出力の課題であっても難しいことです。特に、数値リテラルには単項表現があるため、小さい数字を操作して大きい数字を作成する必要があります。 したがって、この課題は、そのような星空プログラムをゴルフできるプログラムを書くことです。 Starryはどのように機能しますか? (いくつかの詳細はエソランで未指定のままになっているため、Rubyインタープリターの動作について説明します。) Starryはスタックベースの言語であり、任意の精度の整数値の単一スタック(最初は空です)を備えています。 意味のある文字は次のとおりです。 +*.,`' およびスペース。他のすべての文字は無視されます。これらのスペース以外の文字のいずれかが続くスペースの各シーケンスは、単一の命令を表します。命令のタイプは、スペース以外の文字とスペースの数によって異なります。 手順は次のとおりです。 Spaces Symbol Meaning 0 + Invalid opcode. 1 + Duplicate top of stack. 2 + Swap top 2 stack elements. 3 + Rotate top 3 stack elements. That is, send the top stack element two positions down. [... 1 2 3] …