Topolojik yüzeyleri temsil etmenin kullanışlı ve kullanışlı bir yolu temel bir çokgendir . Bir çokgendeki her bir taraf başka bir tarafla eşleşir ve paralel veya anti-paralel olabilir. Örneğin, burada bir torusun temel çokgeni :
Bunun neden bir torus olduğunu anlamak için çokgenimizin bir kağıt olduğunu hayal edebiliriz. Düzgün bir yüzey elde etmek için, ilgili kenarların okları aynı şekilde olacak şekilde kağıdımızı bükmek istiyoruz. Torus örneğimiz için, kağıdı iki mavi kenarın (b etiketli) bağlanması için bir silindire yuvarlayarak başlayabiliriz. Şimdi tüpümüzü alıyoruz ve iki kırmızı kenar (a etiketli) birbirine bağlanacak şekilde büküyoruz. Torus olarak da adlandırılan bir çörek şekline sahip olmalıyız.
Bu biraz daha hileli olabilir. Kenarlardan birinin zıt yöne gittiği aşağıdaki çokgenle aynı işlemi yapmaya çalışırsanız:
kendinizi belada bulabilirsiniz. Bunun nedeni, bu çokgenin üç boyuta gömülemeyen Klein şişesini temsil etmesidir . İşte wikipedia'dan bu çokgeni bir Klein şişesine nasıl katlayabileceğinizi gösteren bir diyagram:
Tahmin edebileceğiniz gibi, buradaki görev temel bir çokgen almak ve bunun hangi yüzey olduğunu belirlemek. Dört taraflı çokgenler için (işlemeniz gereken tek yüzey) 4 farklı yüzey vardır.
Onlar
yumru
Klein Şişe
küre
Projektif düzlem
Şimdi bu görüntü işleme değil, bu yüzden bir görüntüyü girdi olarak almanızı beklemiyorum, bunun yerine temel çokgeni temsil etmek için uygun bir gösterim kullanacağız. Yukarıdaki iki örnekte, aynı harfe (veya a veya b) karşılık gelen kenarları adlandırdığımı ve bükülmüş kenara, bükülmesini göstermek için ek bir işaret verdiğimi fark etmiş olabilirsiniz. Üst kenardan başlayıp saat yönünde giderken her kenarın etiketini yazarsak, her bir temel çokgeni temsil eden bir gösterim alabiliriz.
Örneğin Torus olacak İşletmesi abab ve Klein Şişe olacaktı abab . Zorluğumuz için bunu daha da basit hale getireceğiz, bükülmüş kenarları negatif ile işaretlemek yerine, bu harfleri büyük harfe dönüştüreceğiz.
Görev
Bir dize verildiğinde temel bir çokgeni temsil edip etmediğini belirleyin ve uygun yüzeye karşılık gelen bir değer verin. Yüzeyleri tam olarak adlandırmanız gerekmez, her biri 4 yüzeyden birini temsil eden 4 çıkış ayrı değerine ihtiyacınız vardır ve beşinci değer yanlış girişi temsil eder. Tüm temel durumlar Basit Testler bölümünde ele alınmıştır, her araba bir veya geçersiz izomorfik olacaktır.
kurallar
Taraflar her zaman a ve b ile etiketlenmez, ancak her zaman harflerle etiketlenir.
Geçerli giriş, ikisi biri diğeri ikisi olmak üzere 4 harften oluşacaktır. Geçerli giriş için her zaman doğru yüzeyi çıkarmalısınız.
Geçersiz girişi reddetmelisiniz (yüzeyleri temsil eden 4 değerden hiçbirini çıkarmayın). Bir girişi reddederken, 4 yüzeyden ayırt edilebilir olduğu sürece her şeyi yapabilirsiniz
Bu kod golf, bu yüzden amaç kaynak kodunuzdaki bayt sayısını en aza indirmektir.
Testler
Basit Testler
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
Trickier Testleri
ABAB Torus
acAc Klein Bottle
Emme Projective Plane
zxXZ Sphere
aaab Bad input
abca Bad input
abbaa Bad input
ab1a Bad input
abab
ilk paragraftaki örnektir, orada bir açıklama arayabilirsiniz. İşte neden Klein şişesiyle aabb
aynı olduğunu gösteren bir resim abAb
.
abab
bir torus veaabb
bir Klein şişesi?