CAPL 1.5+; 6入力なし; 10-10 =入力あり
追記
私は、彼らが質問を求めている正確に何をすべきかの組み込み関数を作ることができるようにカスタム言語は、しかし、私はCAPLを簡単にゴルフをするために作られた、質問にゴルフで許可されていないことをどこかに[リンク?]を読んだことが一般的では。ここで許可されていないと思われる場合は、お知らせください!
> <>とBefunge(行間を移動して16進文字を使用して数字をプッシュできます)からアイデアを得ました。Rubyからのアイデアとゴルフをより簡単にするためのアイデアです。
CAPLは左から右に読み取り、行の終わりで1行下に移動します。最後の行である場合、プログラムは終了します。
まだ誰もこの言語を知らないので、できる限り説明しようとします。
yを出力します。6バイト
bb*.n<
bb* b16進であり11、そうbb*である11*11= 121、UTF-8と同等ですy。この値はスタックにプッシュされます。
.スタックから最上位の値をポップし、UTF-8として出力します。121スタックの一番上にある、インデックスがここでは無視されます。
n改行を出力します
<ポインターを行の先頭に戻し、その行を繰り返します。入力を期待していないので、入力を再要求せずにこれを安全に行うことができます。
入力から出力。10バイト、ボーナス後は0
i~a&{X:.)}
iユーザーからの入力を受け取り、スタックの一番上にUTF-8としてプッシュし、その後、長さをプッシュします。すなわち、[72,101,108,108,111,5]
~スタックからポップ数は、その後バイトの量を逆転させます。すなわち、[111,108,108,101,72]
a16進数のfor 10、改行文字
&{...}無限ループを作成します。入力があるので、ポインターを行に戻すことはできません。関数を下の行に配置することで1バイト安全になりますが、このチャレンジでは改行を使用できません。
Xスタックから一番上の値を削除します(ループのインデックス)
:.一番上の値を複製し、UTF-8として出力し
)ます。([1,2,3,4,5]-> [5,1,2,3,4])
ただし、これは、改行で始まり、入力、改行、入力などの出力を開始することを意味します。改行で開始できない場合は、次のコードを使用します。ボーナス。
iXa#~&{X:.)}
ここでの唯一の新しいコマンドは#、スタック上のアイテムの量をスタックにプッシュします。
1をi追加してから改行を交換する方が、長さを削除して再度取得するよりも長いため、長さをから削除しました。
楽しみのために、ここに「Hello World」プログラムがあります
"Hello World"#~
#?!;.<
?!操作は> <>さんと同じです
yたり\n、文字列リテラルの内部で使用したりすることはできません」と読むべきですか?