トポロジカルサーフェスを表す便利で便利な方法は、基本ポリゴンを使用することです。多角形の各辺は別の辺と一致し、平行または反平行のいずれかになります。たとえば、これはトーラスの基本的なポリゴンです。
これがトーラスである理由を理解するために、ポリゴンが紙であると想像できます。適切な表面を作成するために、対応するエッジが矢印が同じ方向に並ぶように紙を曲げます。トーラスの例では、紙を円柱に丸めて、2つの青いエッジ(ラベルb)を接続することから始めます。次に、チューブを取り出して曲げて、2つの赤いエッジ(a)が互いに接続するようにします。トーラスとも呼ばれるドーナツ型にする必要があります。
これには少し注意が必要です。エッジの1つが反対方向に向いている次のポリゴンで同じことをしようとすると:
トラブルに巻き込まれる可能性があります。これは、このポリゴンが3次元に埋め込むことができないクラインボトルを表しているためです。このポリゴンをクラインボトルに折り畳む方法を示すウィキペディアの図を次に示します。
ご想像のとおり、ここでのタスクは、基本的なポリゴンを取得し、どのサーフェスであるかを判断することです。4面ポリゴン(処理する必要がある唯一のサーフェス)には、4つの異なるサーフェスがあります。
彼らです
トーラス
クラインボトル
球
射影平面
これは画像処理ではないので、入力として画像を受け取るとは思わないが、代わりに便利な表記法を使用して基本ポリゴンを表現します。上記の2つの例で、同じ文字(aまたはb)で対応するエッジに名前を付け、ねじれたエッジにねじれを示す追加のマークを付けたことに気付いたかもしれません。時計回りに進んで、上端から開始して各端のラベルを書き留めると、各基本ポリゴンを表す表記を取得できます。
たとえば、提供されたトーラスはababになり、クラインボトルはab - abになります。私たちの挑戦では、ねじれたエッジをネガでマークする代わりに、文字を大文字にします。
仕事
文字列が与えられると、それが基本ポリゴンを表すかどうかを判断し、その適切な表面に対応する値を出力します。サーフェスに正確な名前を付ける必要はありません。それぞれが4つのサーフェスの1つを表す4つの異なる出力値を必要とし、5番目の値が不適切な入力を表します。すべての基本的なケースは「簡単なテスト」セクションで説明されており、すべての車は、1つまたは無効な車と同形です。
ルール
側面には常にaおよびbのラベルが付けられるわけではありませんが、常に文字でラベルが付けられます。
有効な入力は、4つの文字で構成され、2つのタイプと2つのタイプがあります。有効な入力を得るには、常に正しいサーフェスを出力する必要があります。
無効な入力は拒否する必要があります(サーフェスを表す4つの値のいずれも出力しません)。4つのサーフェスと区別できる限り、入力を拒否するときに何でもできます。
これはコードゴルフなので、目標はソースコードのバイト数を最小限にすることです。
テスト
簡単なテスト
abab Torus
abAb Klein Bottle
abaB Klein Bottle
abAB Projective Plane
aabb Klein Bottle
aAbb Projective Plane
aabB Projective Plane
aAbB Sphere
abba Klein Bottle
abBa Projective Plane
abbA Projective Plane
abBA Sphere
トリッキーテスト
ABAB Torus
acAc Klein Bottle
Emme Projective Plane
zxXZ Sphere
aaab Bad input
abca Bad input
abbaa Bad input
ab1a Bad input
abab
トーラスとaabb
クラインのボトルはなぜですか?