私はesolangsを閲覧し、その言語に応じ偶然ました:https://github.com/catseye/Quylthulg。
この言語の興味深い点の1つは、プレフィックス、ポストフィックス、またはインフィックスを使用せず、3つすべてを使用して、「パンフィックス」表記法と呼ぶことです。
以下に例を示します。1+2
panfixで通常の中置記号を表す場合、次のようになります+1+2+
。演算子がオペランドの前、中間、後の両方にあることに注意してください。別の例は(1+2)*3
です。これはになり*+1+2+*3*
ます。*
オペランド+1+2+
とに関して、3つの場所すべてがどのようになっているかに再び注目してください3
。
チャレンジ
ご想像のとおり、この課題でのタスクは、式を中置からパンフィックスに変換することです。
いくつかの説明:
- 次の4つの基本操作のみを処理する必要があります。
+-*/
- それらの単項バージョンを扱う必要はありません、バイナリのみ
- あなたは括弧に対処する必要があります
*/
thenの通常の優先順位ルールを想定し、+-
それらすべてに対して結合性を残します。- 数値は非負の整数になります
- オプションで、入力と出力の両方にスペースを含めることができます
テストケース
1+2 -> +1+2+
1+2+3 -> ++1+2++3+
(1+2)*3 -> *+1+2+*3*
10/2*5 -> */10/2/*5*
(5+3)*((9+18)/4-1) -> *+5+3+*-/+9+18+/4/-1-*
これはcode-golfなので、バイト単位の最短コードが勝ちです!
S.split``
である必要がありますが[...S]
、実際には前もって一致し/\d+|./g
て、代わりに作業するのに役立つ場合があります。