概要
文字のみを使用して、新しい文字列操作言語が作成されました$+#-!*|@>
!あなたの仕事は、できる限り少ないバイトでインタプリタを実装することです。
入力
文字列。この言語の1行です。これは、合理的な方法(stdin、関数パラメーター、コマンドライン引数など)で、または事前定義された変数として使用できます。プログラムがユーザー入力を要求する場合は、stdinから要求するすべてのユーザー入力を受け入れます。以下を参照してください。あなたはそれが有効なプログラムであると仮定するかもしれません。
出力
言語が出力するものは何でも、以下の仕様。妥当な方法(stdout、関数出力など)で文字列、または変数値を出力する必要があります。言語が明示的に出力する場合、これは stdoutに移動する必要があります。標準的な抜け穴は禁止されています。
言語仕様
処理と構文
この言語は、文字列操作のみを行うため、処理の非常に単純な形式です。空の文字列(""
)で始まり、各用語で変更されます。用語は、1つまたは2つの部分で構成されます。関数(下)と、場合によってはその動作を編集するパラメーター(下)が続きます。用語はパイプ(|
)で区切られます。あなたはそれが空のプログラムではなく、どの用語も空ではないと仮定するかもしれません。プログラムの最後に値を出力する必要があります。
関数
以下に示すように、この言語には6つの関数しかありません。各関数は、1つまたはゼロのパラメーターを受け入れます。
+
文字列を連結します(1つの文字列パラメーターを取り、それを現在の値に連結します)!
現在の値の文字順を逆にします(パラメータなし)*
文字列を繰り返します(1つの整数パラメーターを取り、現在の値を何回も繰り返します)-
値のすべての出現を削除します(1つの文字列パラメーターを取り、現在の値からすべての出現を削除します)$
[pseudo-]現在の値をランダムにシャッフルします(パラメーターなし)<
現在の値をstdout
(パラメータなしで)出力します
値
これらは関数に渡される可能性のある値であり、それらに一致する正規表現で表されます。
@[^|]*
パイプ以外の文字を含む文字列リテラル。空の場合があります。#[0-9]+
整数リテラル>
の次の行stdin
。で使用する場合*
、整数に変換します。
テストケース
╔════════════════════════╤═════════════╤══════════════╗
║code │input │output ║
╟────────────────────────┼─────────────┼──────────────╢
║+>|!|+@hello|*> │13 │31hello31hello║
║ │2 │ ║
╟────────────────────────┼─────────────┼──────────────╢
║+>|+@abcdefg|$ │hello │hcloeebafdlg ║
╟────────────────────────┼─────────────┼──────────────╢
║+@how areyou|-@o|-> │w │h areyu ║
╟────────────────────────┼─────────────┼──────────────╢
║+@out|<|*#3 │ │out ║
║ │ │outoutout ║
╟────────────────────────┼─────────────┼──────────────╢
║+> │what ever 345│what ever 345 ║
╟────────────────────────┼─────────────┼──────────────╢
║+@$pe<i@l|<|-@$pe<i@l|+>│A|$o $pe<!@| │$pe<i@l ║
║ │ │A|$o $pe<!@| ║
╟────────────────────────┼─────────────┼──────────────╢
║<|+>|!|< │input text | ║
║ │ │txet tupni ║
║ │ │txet tupni ║
╟────────────────────────┼─────────────┼──────────────╢
║+@># │ |># ║
╚════════════════════════╧═════════════╧══════════════╝
テストケース2はランダムであるため、その中の文字の順列はすべて有効であることに注意してください。また、表の出力は改行で区切られていますが、プログラムで同じようにする必要はありません。各場合の最後の値は最終出力です。
例(ゴルフなし)pythonインタープリター
オンラインでお試しください!IMOまたはIDLEを使用して実行すると、IMOが向上します。(私はそれを424バイトにまで減らしましたが、もっと多くのことができると確信しています)。
<
は、遭遇するたびに改行を印刷するようです。これは必須ですか?
+@>#
どうですか?私も使用しました#
。