バックグラウンド
Stack Catsは、Martin Enderによって作成された可逆の難解な言語です。Stack Catsの各コマンドは、それ自体の逆(のような対称文字として表される-_:T|
)であるか、その逆のコマンド(のような鏡像として表される()
{}
[]
<>
)のいずれかです。Stack Catsには、プログラム全体がそれ自体の鏡像であるべきという強力な構文要件があります。これは、有効なStack Catsプログラムが自然な鏡像アンビグラムであることを意味することに注意してください。
Stack Catsのコマンドセット全体を次に示します。
- 自己対称:
!*+-:=ITX^_|
- 対称ペア:
()
{}
[]
<>
\/
その他の文字は無効です。上記の文字セットにない文字を持つ入力はfalseを出力する必要があります。
言語には追加の制約が()
あり、{}
ペアは常にバランスをとる必要がありますが、簡単にするために、この状態をチェックする必要はありません。
以下は、有効なStack Catsプログラムの例です(再び、バランスの取れたかっこをチェックしないことに注意してください)。
{[+]==[+]}
[)>^<(]
({T)}|{(T})
<(*]{[:!-_:>}<[<)*(>]>{<:_-!:]}[*)>
これらは次のとおりではありません。
b<+>d
())(
({[<++<]})
チャレンジ
指定された文字列が有効なStack Catsプログラムであるかどうかを判断するプログラムまたは関数を作成します。また、コードは自然な鏡像アンビグラムである必要があります。
- コードはそれ自体の鏡像でなければなりません。
- 自然に表示されるコード全体がそれ自体の鏡像である限り、コードには1つ以上の改行を含めることができます。
- 表示が変更されないため、各行の末尾の空白を省略または追加できます。
- タブ文字は表示にあいまいさがあるため、許可されていません。
注:コードは有効なStack Catsプログラムである必要はありません。Stack Catsで許可されていない特定の余分な文字が含まれている場合があります。(完全なリストについては以下を参照してください。)
たとえば、次の2つのプログラムは対称的であり(したがって有効な送信)、3番目のプログラムはそうではありません。
({bTd})
[<q|p>]
({bTd})
IXI
({bTd})
IXI
- 「ミラー対称性」に関しては、Stack Catsスタイルの対称性のみが考慮されます(たとえば
({IH})
、ミラー対称性があるにもかかわらず、有効な提出ではありません)。 - コードには、次の文字セットと改行のみを含めることができます。
- 自己対称:スペース(
0x20
)+!"'*+-.8:=AHIMOTUVWXY^_ovwx|
- 対称ペア:
()
/\
<>
[]
bd
pq
{}
- 自己対称:スペース(
SEでコードとして表示される場合、文字セットは厳密に対称または自己対称になるように選択されます。
入出力
入力範囲は、印刷可能なASCII文字の1行の文字列です。
入力を文字列、文字のリスト、またはASCII値のリストとして選択できます。
次のいずれかを出力することを選択できます。
- 選択した言語で定義された真実/偽の値
- 実際の結果値は、入力間で異なる場合があります(たとえば、真の入力の場合は出力1、別の真の場合は2です)。
- 真実と偽の値を交換することは許可されていません。
- それぞれtrue / falseの2つの定数値
- この場合、結果の値は2つの定数値のいずれかでなければなりません。
提出には入力方法と出力値を指定する必要があります。
勝利条件
これはcode-golfであるため、各言語の最下位バイトが優先されます。
ノート
- 通常の標準的な抜け穴は禁止されています。
- もちろん、これをStack Catsで解決できますが、チャンスは、コードサイズを半分に削減できるフラグを使用できないことです。そして、それを拾うのは非常に難しい言語です:P
#
許可されない理由