Wygodnym i użytecznym sposobem przedstawienia powierzchni topologicznych jest fundamentalny wielokąt . Każda strona wielokąta jest dopasowana do innej strony i może być równoległa lub antyrównoległa. Na przykład tutaj jest podstawowy wielokąt torusa :
Aby dowiedzieć się, dlaczego jest to torus, możemy sobie wyobrazić, że naszym wielokątem jest kartka papieru. Aby uzyskać odpowiednią powierzchnię, chcemy wygiąć papier, tak aby odpowiadające mu krawędzie zrównały się ze strzałkami w tę samą stronę. W naszym przykładzie torusa możemy zacząć od zrolowania papieru do cylindra, aby połączyć dwie niebieskie krawędzie (oznaczone b). Teraz bierzemy naszą rurkę i wyginamy ją tak, aby dwie czerwone krawędzie (oznaczone a) łączyły się ze sobą. Powinniśmy mieć kształt pączka, zwany także torusem.
Może to być nieco trudniejsze. Jeśli spróbujesz zrobić to samo z następującym wielokątem, w którym jedna z krawędzi biegnie w przeciwnym kierunku:
możesz mieć kłopoty. Wynika to z faktu, że ten wielokąt reprezentuje butelkę Kleina, której nie można osadzić w trzech wymiarach. Oto schemat z wikipedii pokazujący, jak możesz złożyć ten wielokąt w butelkę Kleina:
Jak można się domyślać, zadaniem tutaj jest wzięcie podstawowego wielokąta i określenie, która to powierzchnia. W przypadku wielokątów czworokątnych (jedyne powierzchnie, które będziesz musiał obsługiwać) istnieją 4 różne powierzchnie.
Oni są
Torus
Butelka Kleina
Kula
Samolot projekcyjny
Teraz nie jest to przetwarzanie obrazu, więc nie oczekuję, że weźmiesz obraz jako dane wejściowe, zamiast tego użyjemy wygodnej notacji do przedstawienia podstawowego wielokąta. Być może zauważyłeś w dwóch powyższych przykładach, że nazwałem odpowiednie krawędzie tą samą literą (albo a lub b) i że nadałem skręconej krawędzi dodatkowy znak, aby pokazać jej skręcenie. Jeśli zaczniemy od górnej krawędzi i zapiszemy etykietę dla każdej krawędzi, postępując zgodnie z ruchem wskazówek zegara, możemy otrzymać notację reprezentującą każdy fundamentalny wielokąt.
Na przykład Torus warunkiem staną abab a Bottle Klein staną abab . Dla naszego wyzwania sprawimy, że będzie to jeszcze prostsze, zamiast oznaczać skręcone krawędzie znakiem minus, zamiast tego litery te będą pisane wielką literą.
Zadanie
Biorąc pod uwagę ciąg, określ, czy reprezentuje on podstawowy wielokąt, i wypisz wartość odpowiadającą jego właściwej powierzchni. Nie trzeba dokładnie nazywać powierzchni, wystarczy 4 wyjściowe odrębne wartości, każda reprezentująca jedną z 4 powierzchni, a piąta wartość reprezentuje nieprawidłowe dane wejściowe. Wszystkie podstawowe przypadki są omówione w części Proste testy , każdy samochód będzie izomorficzny w stosunku do jednego lub nieważny.
Zasady
Strony nie zawsze będą oznaczone a i b, ale zawsze będą oznaczone literami.
Prawidłowe dane wejściowe będą się składały z 4 liter, dwóch jednego typu i dwóch innych. Zawsze należy wyprowadzać poprawną powierzchnię dla poprawnego wprowadzania.
Należy odrzucić (nie wypisać żadnej z 4 wartości reprezentujących powierzchnie) nieprawidłowe dane wejściowe. Możesz zrobić wszystko, odrzucając dane wejściowe, o ile można je odróżnić od 4 powierzchni
To jest golf golfowy, więc celem jest zminimalizowanie liczby bajtów w kodzie źródłowym.
Testy
Proste testy
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
Trudniejsze testy
ABAB Torus
acAc Klein Bottle
Emme Projective Plane
zxXZ Sphere
aaab Bad input
abca Bad input
abbaa Bad input
ab1a Bad input
abab
jest przykładem z pierwszego akapitu, możesz tam znaleźć wyjaśnienie. Oto obraz pokazujący, dlaczego aabb
jest taki sam, jak abAb
butelka Kleina.
abab
torus iaabb
butelka Kleina?