Wprowadzenie
W większości czcionek wszystkich wielkich liter alfabetu oprócz BDOmają pojedyncze linie około dotyka niektóre z czterech narożnikach prostokąta bohatera okalającym: ACEFGHIJKLMNPQRSTUVWXYZ.
Na przykład dwie nogi A„dotyku” w lewym dolnym i prawym dolnym rogu znaku. Podobnie Cdotyka górnego i dolnego prawego rogu (jest nieco zakrzywiony, ale wystarczająco blisko). Ldotyka tylko jego lewego górnego i prawego dolnego rogu pojedynczymi liniami. Lewy dolny róg Lto wierzchołek, a nie koniec pojedynczej linii.
Oto tabela, które postacie dotykają, które rogi są zgodne z czcionką Stack Exchange, którą widzę (i mam nadzieję, że ty). 1jest dla górnego lewego, 2jest dla górnego prawego, 3dolnego lewego, 4dolnego prawego.
A: 3 4
C: 2 4
E: 2 4
F: 2 3
G: 2
H: 1 2 3 4
I: 1 2 3 4
J: 1 3
K: 1 2 3 4
L: 1 4
M: 3 4
N: 2 3
P: 3
Q: 4
R: 3 4
S: 2 3
T: 1 2
U: 1 2
V: 1 2
W: 1 2
X: 1 2 3 4
Y: 1 2
Z: 1 4
Ustawiać
Udawaj, że te dotykające narożników linie rozciągają się w kierunku rogu, który dotykają, aby układy tych znaków na siatce mogły zostać „połączone”.
Na przykład wszystkie znaki w
A
C X
są połączone, ponieważ dolny lewy Ai prawy górny rogu Cpołączenia oraz dolny prawy Ai lewy górny rogu Xpołączenia.
Jednak,
CAX
nie ma połączeń, ponieważ połączenia występują tylko po przekątnej od jednego znaku do drugiego .
Wyzwanie
Napisz najkrótszy możliwy program (w bajtach), który wypisuje wszystkie znaki ACEFGHIJKLMNPQRSTUVWXYZw jednym dużym, w pełni połączonym drzewie, zgodnie z powyższymi regułami. Każda postać musi pojawić się dokładnie raz.Użyj spacji dla pustej przestrzeni.
Przykład
Do wszystkiego w tym 23-literowym drzewie można dotrzeć z dowolnego innego miejsca za pomocą ukośnych połączeń zdefiniowanych powyżej:
Q
A J R
C U S Y
I M N
E H X
F L T
G Z K P
V W
Notatki
- Możesz na stałe zakodować swoje rozwiązanie.
- Twój wynik powinien zawierać tylko
ACEFGHIJKLMNPQRSTUVWXYZspacje i znaki nowej linii.BDOnie będzie używany. - Wiodące / końcowe spacje są w porządku, o ile wszystkie połączenia są odpowiednio ustawione.
- Siatka wyjściowa nie powinna być większa niż 30 na 30 znaków (włączając znaki nowej linii i spacje).
- Uwzględniane są tylko połączenia narożne. Dno
Ynie łączy się z niczym. Musisz użyć połączeń narożnych z powyższej tabeli. - Nie wszystkie łączne rogi muszą się z czymś połączyć. Narożniki, które można podłączyć i których nie można połączyć, mogą się ze sobą łączyć.
- Wyjście na standardowe wyjście. Brak danych wejściowych.
- Dołączenie wykresu połączeń wykonanego ukośnikami, tak jak zrobił to Peter Taylor , jest pomocnym akcentem, ale nie jest wymagany.
Aktualizacja:
githubhagocyte wykonał funkcję sprawdzania poprawności drzewa alfabetu na Github .