すべてのBrain-Flakスニペットを生成する
この質問は、Brain-Flakの最初の誕生日を祝うために設計されたいくつかのBrain-flak Birthdayチャレンジの2番目です!Brain-Flakの誕生日の詳細については、こちらをご覧ください。 チャレンジ この課題では、括弧のリストから完全に一致するすべての文字列を生成します。完全に一致する文字列のDJMcMayhemの定義を借用するには: この課題のために、「括弧」は次の文字のいずれかです()[]{}<>。 次のように、開始ブラケットと終了ブラケットが正しい順序であり、中に文字がない場合、一対のブラケットは「一致」とみなされます。 () []{} または、その中のすべてのサブ要素も一致する場合。 [()()()()] {<[]>} (()()) サブエレメントは、いくつかのレイヤーの深さにネストすることもできます。 [(){<><>[()]}<>()] <[{((()))}]> ブラケットの各ペアに正しい順序で正しい開始ブラケットと終了ブラケットがある場合にのみ、文字列は「完全一致」と見なされます。 入力 プログラムまたは関数は、便利で一貫した形式の4つの非負数のリストを受け取ります。これには、整数のリスト、数字で区切られていない文字列、または個別の引数が含まれます(ただし、これらに限定されません)。これらの4つの数字は、各タイプのブラケットの一致したペアの数を表します。たとえば、次[1,2,3,4]を表します。 1ペア () 2組の {} 3組[]と 4ペア <> 一貫性がある限り、各入力に対応するブラケットのペアを選択できます。 出力 この括弧のリストから重複なく形成できる、完全に一致したすべての文字列を出力する必要があります。出力は、括弧で区切られていない文字列をSTDOUTに出力したり、文字列のリストを関数からの戻り値として出力したりするなど、妥当な形式で出力できます。 アルゴリズムは任意の入力に対して機能する必要がありますが、メモリ、時間、整数サイズの制限について心配する必要はありません(たとえば、答えがCの場合、入力として2 33を取得しません)。 これはcode-golfであるため、バイト単位の最短回答が優先されます。 入力と出力の例 これらの例では、上記と同じ入力順序を使用します。 各例では、最初の行が入力され、次の行が出力になります Example 0: [0,0,0,0] Example 1: [1,0,0,0] () Example 2: [0,2,0,0] {}{} {{}} Example 3: [0,0,1,1] []<> …