Một cách thuận tiện và hữu ích để biểu diễn các bề mặt tôpô là với một đa giác cơ bản . Mỗi bên trên một đa giác khớp với một bên khác và có thể là song song hoặc chống song song. Ví dụ, đây là đa giác cơ bản của hình xuyến :
Để tìm hiểu tại sao đây là một hình xuyến, chúng ta có thể tưởng tượng đa giác của chúng ta là một tờ giấy. Để làm cho bề mặt phù hợp, chúng tôi muốn uốn cong giấy của chúng tôi để các cạnh tương ứng thẳng hàng với mũi tên của chúng đi theo cùng một cách. Đối với ví dụ hình xuyến của chúng ta, chúng ta có thể bắt đầu bằng cách cuộn giấy vào một hình trụ sao cho hai cạnh màu xanh (có nhãn b) được kết nối. Bây giờ chúng tôi lấy ống của chúng tôi và uốn cong nó để hai cạnh màu đỏ (được dán nhãn a) kết nối với nhau. Chúng ta nên có một hình dạng bánh rán, còn được gọi là hình xuyến.
Điều này có thể nhận được một chút phức tạp hơn. Nếu bạn cố gắng làm tương tự với đa giác sau, trong đó một trong các cạnh sẽ đi theo hướng ngược lại:
bạn có thể thấy mình gặp rắc rối Điều này là do đa giác này đại diện cho chai Klein không thể được nhúng trong ba chiều. Dưới đây là sơ đồ từ wikipedia cho thấy cách bạn có thể gấp đa giác này vào một chai Klein:
Như bạn có thể đã đoán nhiệm vụ ở đây là lấy một đa giác cơ bản và xác định bề mặt của nó. Đối với đa giác bốn mặt (các bề mặt duy nhất bạn sẽ được yêu cầu xử lý) có 4 bề mặt khác nhau.
họ đang
Torus
Chai Klein
Quả cầu
Mặt phẳng chiếu
Bây giờ đây không phải là xử lý hình ảnh, vì vậy tôi không mong đợi bạn lấy hình ảnh làm đầu vào thay vào đó chúng tôi sẽ sử dụng một ký hiệu thuận tiện để thể hiện đa giác cơ bản. Bạn có thể nhận thấy trong hai ví dụ ở trên mà tôi đặt tên các cạnh tương ứng có cùng chữ cái (a hoặc b) và tôi đã cho cạnh xoắn một dấu bổ sung để hiển thị xoắn của nó. Nếu chúng ta bắt đầu ở cạnh trên và viết nhãn cho mỗi cạnh khi chúng ta đi theo chiều kim đồng hồ, chúng ta có thể nhận được một ký hiệu đại diện cho mỗi đa giác cơ bản.
Ví dụ, Torus được cung cấp sẽ trở thành abab và Chai Klein sẽ trở thành ab - ab . Đối với thử thách của chúng tôi, chúng tôi sẽ làm cho nó đơn giản hơn nữa, thay vì đánh dấu các cạnh xoắn bằng âm, thay vào đó chúng tôi sẽ làm cho các chữ cái đó được viết hoa.
Bài tập
Cho một chuỗi xác định nếu nó đại diện cho một đa giác cơ bản và đưa ra một giá trị tương ứng với bề mặt thích hợp của nó. Bạn không cần đặt tên chính xác cho các bề mặt, bạn chỉ cần 4 giá trị riêng biệt đầu ra, mỗi giá trị đại diện cho một trong 4 bề mặt với giá trị thứ năm thể hiện đầu vào không chính xác. Tất cả các trường hợp cơ bản được đề cập trong phần Thử nghiệm đơn giản , mọi chiếc xe sẽ được đồng hình hóa với một trong những hoặc không hợp lệ.
Quy tắc
Các mặt sẽ không luôn luôn được gắn nhãn a và b, nhưng chúng sẽ luôn được gắn nhãn bằng các chữ cái.
Đầu vào hợp lệ sẽ bao gồm 4 chữ cái, hai loại một và hai loại khác. Bạn phải luôn xuất ra bề mặt chính xác cho đầu vào hợp lệ.
Bạn nên từ chối (không xuất bất kỳ giá trị nào trong 4 giá trị đại diện cho bề mặt) đầu vào không hợp lệ. Bạn có thể làm bất cứ điều gì khi từ chối một đầu vào, miễn là nó có thể phân biệt được với 4 bề mặt
Đây là môn đánh gôn, vì vậy mục tiêu là giảm thiểu số lượng byte trong mã nguồn của bạn.
Xét nghiệm
Các bài kiểm tra đơn giản
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 Test
ABAB Torus
acAc Klein Bottle
Emme Projective Plane
zxXZ Sphere
aaab Bad input
abca Bad input
abbaa Bad input
ab1a Bad input
abab
là ví dụ trong đoạn đầu tiên, bạn có thể xem đó để giải thích. Dưới đây là một hình ảnh cho thấy tại sao aabb
giống như abAb
một chai Klein.
abab
một hình xuyến vàaabb
một chai Klein?