Eine bequeme und nützliche Art, topologische Oberflächen darzustellen, ist die Verwendung eines Grundpolygons . Jede Seite eines Polygons stimmt mit einer anderen Seite überein und kann entweder parallel oder antiparallel sein. Das Hier ist zum Beispiel das Grundpolygon eines Torus :
Um herauszufinden, warum dies ein Torus ist, können wir uns vorstellen, dass unser Polygon ein Blatt Papier ist. Um die richtige Oberfläche zu erhalten, möchten wir unser Papier so biegen, dass die entsprechenden Kanten mit den Pfeilen in gleicher Richtung ausgerichtet sind. Für unser Torus-Beispiel können wir das Papier zunächst in einen Zylinder rollen, sodass die beiden blauen Ränder (mit b gekennzeichnet) verbunden sind. Jetzt nehmen wir unser Rohr und biegen es so, dass die beiden roten Kanten (mit a gekennzeichnet) miteinander verbunden sind. Wir sollten eine Donutform haben, auch Torus genannt.
Das kann etwas kniffliger werden. Wenn Sie versuchen, dasselbe mit dem folgenden Polygon zu tun, bei dem eine der Kanten in die entgegengesetzte Richtung zeigt:
Sie könnten in Schwierigkeiten geraten. Dies liegt daran, dass dieses Polygon die Klein-Flasche darstellt, die nicht in drei Dimensionen eingebettet werden kann. Hier ist ein Diagramm aus Wikipedia, das zeigt, wie Sie dieses Polygon in eine Klein-Flasche falten können:
Wie Sie vielleicht erraten haben, besteht die Aufgabe hier darin, ein grundlegendes Polygon zu nehmen und zu bestimmen, um welche Oberfläche es sich handelt. Für vierseitige Polygone (die einzigen Flächen, die Sie bearbeiten müssen) gibt es 4 verschiedene Flächen.
Sie sind
Torus
Klein Flasche
Kugel
Projektives Flugzeug
Dies ist keine Bildverarbeitung, daher erwarte ich nicht, dass Sie ein Bild als Eingabe verwenden. Stattdessen verwenden wir eine praktische Notation, um das grundlegende Polygon darzustellen. Möglicherweise haben Sie in den beiden obigen Beispielen bemerkt, dass ich die entsprechenden Kanten mit demselben Buchstaben (entweder a oder b) benannt und der verdrehten Kante eine zusätzliche Markierung gegeben habe, um ihre Verdrehung anzuzeigen. Wenn wir an der oberen Kante beginnen und die Beschriftung für jede Kante im Uhrzeigersinn notieren, erhalten wir eine Notation, die jedes grundlegende Polygon darstellt.
Zum Beispiel vorausgesetzt , dass der Torus würde abab und die Klein - Flasche würde abab . Für unsere Herausforderung werden wir es noch einfacher machen, anstatt verdrehte Kanten mit einem Negativ zu markieren, werden wir stattdessen diese Buchstaben groß schreiben.
Aufgabe
Bestimmen Sie anhand einer gegebenen Zeichenfolge, ob sie ein grundlegendes Polygon darstellt, und geben Sie einen Wert aus, der der richtigen Oberfläche entspricht. Sie müssen die Flächen nicht genau benennen, sondern benötigen nur 4 unterschiedliche Ausgabewerte, die jeweils eine der 4 Flächen darstellen, wobei ein fünfter Wert eine falsche Eingabe darstellt. Alle grundlegenden Fälle werden im Abschnitt Einfache Tests behandelt . Jedes Auto ist isomorph zu einem der oder ungültig.
Regeln
Seiten werden nicht immer mit a und b gekennzeichnet, aber sie werden immer mit Buchstaben gekennzeichnet.
Gültige Eingaben bestehen aus 4 Buchstaben, zwei von einem Typ und zwei von einem anderen. Sie müssen immer die richtige Oberfläche für eine gültige Eingabe ausgeben.
Sie sollten ungültige Eingaben ablehnen (keinen der 4 Werte ausgeben, die Oberflächen darstellen). Sie können alles tun, wenn Sie eine Eingabe ablehnen, solange diese von den 4 Oberflächen unterscheidbar ist
Dies ist Codegolf, daher besteht das Ziel darin, die Anzahl der Bytes in Ihrem Quellcode zu minimieren.
Tests
Einfache Tests
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
Schwierigere Tests
ABAB Torus
acAc Klein Bottle
Emme Projective Plane
zxXZ Sphere
aaab Bad input
abca Bad input
abbaa Bad input
ab1a Bad input
abab
ist das Beispiel im ersten Absatz, Sie können dort nach einer Erklärung suchen. Hier ist ein Bild, das zeigt, warum aabb
das gleiche ist wie abAb
bei einer Klein-Flasche.
abab
ein Torus undaabb
eine Klein-Flasche?