Brain-flakは明日1歳になります!誕生日を記念して、PPCGスタイルのバースデーパーティーを開催します。このパーティーでは、数人のユーザーがブレインフラック関連の質問を投稿します。祝福にご協力ください!:)
Brain-flakは私が書いた難解な言語で、すべてのコマンドが括弧であり、すべての括弧が完全に一致する必要があります。私自身の定義を借りるには:
この課題のために、「括弧」は次の文字のいずれかです
()[]{}<>
。次のように、開始ブラケットと終了ブラケットが正しい順序であり、中に文字がない場合、一対のブラケットは「一致」とみなされます。
() []{}
または、その中のすべてのサブ要素も一致する場合。
[()()()()] {<[]>} (()())
サブエレメントは、いくつかのレイヤーの深さにネストすることもできます。
[(){<><>[()]}<>()] <[{((()))}]>
次の場合にのみ、文字列は「完全一致」と見なされます。
すべての文字は角かっこです。
ブラケットの各ペアには、正しい開閉ブラケットが正しい順序であります
Brain-Flakの1歳の誕生日を祝うために、今日の課題は、不均衡なブラケットセットを取得し、それを有効なBrain-Flakにするために必要な操作の種類を決定することです。
たとえば、
((
は有効なbrain-flakコードではありませんが、これに追加))
すると、になり(())
、完全にバランスが取れているため、有効なbrain-flakです。これにより、この入力が追加可能になります。同様に、
>}
は有効ではありませんが{<
、makeに追加して有効にすることができ{<>}
ます。これにより、この入力がprependableになります。一部の入力はやや複雑です。たとえば、
)][({
追加または追加するだけでは有効にできません。しかし、それはできる付加することで有効となること[(
と追記します})]
。したがって、この入力はprependableとappendableの両方です。最後に、一部の入力は、アペンドまたはプリペンドの任意の組み合わせによって、有効なブレインフラックコードにすることはできません。たとえば、
(>
有効にすることはできません。(前置を<
作成し<(>
、及び添付の)
作成(>)
、有効でどちらも)ため、この入力は、追記又はprependableもありません。
今日の課題では、括弧の文字列を取り、その文字列が
appendable
prependable
both
neither
各ケースを表すために使用する値を選択できます。たとえば、、、、1, 2, 3, 4
またはを出力する'a', 'p', 'b', 'n'
か1, 'foo', 3.1415, -17
、何でも問題ありません。各出力が明確で一貫している限り、それは問題ありません。あなたはしなければならないが、明らかに出力対応の場合に指定します。
最も便利な形式でこの値を返すことができます(たとえば、関数から戻る、STDOUTに出力する、引数を変更する、ファイルに書き込むなど)。
入力が有効なブレインフラークまたは空になることはないと想定できます。
例
次の入力はすべて付加可能です:
))
(((()()())))}
)>}]
()[]{}<>)
これらはすべて追加可能です:
(({}{})
((((
([]()())(
{<<{
これらはすべて両方です:
))((
>()[(()){
>{
そして、これらはすべてではありません:
)(}
{(((()()()))>
[}
((((((((((>
((((((((((<>()]
いつものように、これはcode-golfなので、標準の抜け穴が適用され、バイト単位の最短回答が勝ちます!
この課題は、ブレインフラックでは特に難しいため、ブラウニーの最大数は、ブレインフラックで記述されたすべての回答を指します。:)
][
あるではないあなたが追加することができ、何もそれを有効にすることはできないとして、追加可能。同様に、先頭に追加できません。それは...「挿入可能」です!文字列に挿入して、有効なBrainflak全体を作成できます。
You can assume that the input will never be valid brain-flak or empty.
maximum brownie points
最大のブラウニーポイントとCookieを提供することは、Brain-Flakはもちろんのこと、どんな言語でも些細なことではないと思うので、代わりにBrainie-Flakingをブラウニーポイント以上に奨励すると思います。:P