APLでは、trainsと呼ばれる暗黙の関数を作成できます。それらがどのように機能するかは、この課題とは無関係です。⍴
関数として使用して、グループ化するさまざまな方法を次に示します。
⍴ -> ⍴
⍴⍴ -> ⍴⍴
⍴⍴⍴ -> ⍴⍴⍴
⍴⍴⍴⍴ -> ⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴ -> ⍴⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴⍴ -> ⍴(⍴⍴(⍴⍴⍴))
...
順序は同じままです。手順は、厳密に3つ以上の関数がある限り、最後の3つの関数が1つの関数にグループ化されることです。ネストされたトレインに出会った場合、先に進む前にまずそれを括弧で囲みます。以下に適用される手順を示します⍴⍴⍴⍴⍴⍴
。
Step 0: ⍴⍴⍴⍴⍴⍴
There are strictly more than 3 functions, repeat.
Step 1: ⍴⍴⍴(⍴⍴⍴)
There are strictly more than 3 functions, repeat.
Step 2: ⍴(⍴⍴(⍴⍴⍴))
There are 3 or less functions, we're done.
以下に同じ手順を適用し⍴⍴⍴(⍴⍴)⍴(⍴⍴⍴⍴(⍴⍴⍴))⍴⍴
ます:
Step 0: ⍴⍴⍴(⍴⍴)⍴(⍴⍴⍴⍴(⍴⍴⍴))⍴⍴
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴⍴⍴(⍴⍴⍴)
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴⍴
There are 3 or less functions, we're done.
Step 1: ⍴⍴(⍴⍴(⍴⍴⍴))
There are 3 or less functions, we're done.
Step 1: ⍴⍴⍴(⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴)
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴
There are 3 or less functions, we're done.
Step 2: ⍴⍴⍴((⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴))
There are strictly more than 3 functions, repeat.
Step 3: ⍴(⍴⍴((⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴)))
There are 3 functions or less, we're done.
入力
この課題では、入力が簡素化されます。これは、括弧の選択とは異なる2つの異なる文字を括弧の開閉に使用し、関数に1つの文字を選択できることを意味します。選択する文字は一貫している必要があります。入力は空ではなく、コンテンツのない括弧(つまり()
)は含まれません。
出力
繰り返しますが、3つの異なる文字を選択できます。2つは括弧、1つは関数です。入力用に選択したものと同じである必要はありませんが、一貫している必要があります。
ルール
- 入力内の1つの関数のみを囲む括弧がある場合は、出力からそれらを削除する必要があります。出力に不要な括弧を含めることはできません(つまり、1つの関数のみを囲む、または出力全体を囲む)。
- ソリューションがこの課題に対して有効である限り、ここで使用されるアルゴリズムを実装する必要はありません。
- 入力および出力は、入力および出力セクションで説明されている形式の文字列です。入力には少なくとも1つの文字が含まれます。
- 標準の抜け穴の使用は固く禁じられています。
- これはcode-golfなので、最短の回答が勝ちます。ただし、これは言語ごとの競争であり、このタスクが他の言語で書かれたコードと比較して長いコードになる言語での回答を奨励するため、受け入れられた回答はありません。
テストケース
ここで使用される()⍴
文字はです。選択した文字に置き換える必要があります。
⍴ -> ⍴
⍴ -> ⍴
⍴⍴ -> ⍴⍴
⍴⍴⍴ -> ⍴⍴⍴
⍴⍴⍴⍴ -> ⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴ -> ⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴⍴))))))
⍴⍴⍴⍴⍴(⍴⍴⍴)⍴⍴(⍴(⍴⍴⍴)⍴⍴⍴)⍴⍴⍴ -> ⍴(⍴⍴(⍴⍴((⍴⍴⍴)⍴(⍴(⍴(⍴⍴⍴)(⍴⍴⍴))(⍴⍴⍴)))))
(⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴) -> (⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴)
(⍴⍴⍴)(⍴⍴⍴)⍴⍴⍴ -> (⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴)
⍴⍴(⍴)⍴⍴ -> ⍴⍴(⍴⍴⍴)
((⍴⍴)) -> ⍴⍴
⍴⍴((⍴⍴))⍴⍴ -> ⍴⍴((⍴⍴)⍴⍴)
このチャレンジはサンドボックスに投稿されました。必要な特権を持っている場合は、サンドボックスの投稿をここで表示できます。