Jones chce odbyć podróż w obie strony na swoim rowerze. Chce odwiedzić kilka miast w dowolnej kolejności, ale jego trasa nie może przecinać go, ponieważ nie znosi być dwa razy w tym samym miejscu podczas swoich wakacji. Ponieważ naprawdę uwielbia jeździć na rowerze, długość jego trasy jest całkowicie nieistotna, ale nie lubi jeździć po krajobrazie bez celu. Trasa, którą lubi, prowadzi z miasta w linii prostej do innej, bez żadnego objazdu.
Ponieważ Jones jest pasjonatem kodeksu, chce, abyś znalazł program, który planuje dla niego podróż w obie strony, biorąc pod uwagę zbiór miast. Dane wejściowe mają postać A (B|C)
. A
to nazwa miasta B
i C
jego współrzędne. Można założyć, że współrzędne są dodatnie i mniejsze niż 1000. Zbiory danych dla miast są rozdzielone liniami. Oto przykład, jak może wyglądać przykładowe dane wejściowe:
SomeTown (1 | 10) ACity (3 | 4) Gdziekolwiek (7 | 7) Strona główna (5 | 1)
Pan Jones nie jest pedantyczny, po prostu chce mieć przydatny program. W ten sposób możesz sam zdecydować, jak wyglądać produkt wyjściowy, o ile spełnia następujące kryteria:
- Wynikiem jest mapa miast z wytyczoną trasą między nimi. Jeśli coś jest prawidłowe, trasa nie powinna się pokrywać i powinna kończyć się w miejscu, w którym się rozpoczęła
- Współrzędne są jak w zwykłym programowaniu: (1 | 1) znajduje się w rogu północno-zachodnim. Dodaj linijkę do granicy mapy, aby ułatwić jej odczytanie
- Nazwy miast muszą być zapisane na mapie, ale możesz używać skrótów, które wyjaśniono gdzie indziej na mapie
- Mapa może być zarówno obrazem ASCII, jak i obrazem
- Zachowaj czytelność wyjścia
Dane wyjściowe mogą wyglądać następująco:
1234567 1 D. 2 * * 3 * * 4 B * 5 * * 6 * * 7 * C 8 * ** 9 * * 10 A** Odp .: SomeTown B: ACity C: Gdziekolwiek D: Dom
Program z najmniejszą liczbą znaków wygrywa. Nie liczę parametrów do kompilatora / interpretera, jeśli są one potrzebne do kompilacji, ale proszę nie nadużywaj tej reguły. Obowiązują zwykłe zasady gry w golfa.
Oto kolejna sprawa testowa. Twój wynik nie musi odpowiadać mojej, ani nie musisz wybierać tej samej ścieżki co ja. Wyjście jest rysowane ręcznie i pokazuje możliwe wyjście. Wejście:
dom (5 | 7) supermarket (13 | 12) park (15 | 5) nowy plac (9 | 16) dom przyjaciela (20 | 11) stary zamek (14 | 21) riverside (1 | 20) plaża (10 | 1) kino (21 | 18) las (23 | 7) mała wyspa (21 | 1) muzeum golfa kodowego (6 | 25) lotnisko (18 | 25) herbaciarnia (24 | 14) restauracja (24 | 22) wielki most (3 | 12) Budynek SO (25 | 9)
A to jest przykładowy wynik:
1111111111222222 1234567890123456789012345 1 H * * K 2 * * * * 3 * * * * 4 * * ** * 5 * C * 6 * * 7 AJ 8 * * 9 * Q 10 * * 11 * *** E * 12 PB *** * * 13 * * * * 14 * * * N 15 * * * * 16 * D * * 17 * * * * 18 * * I * 19 * * * * 20G * * * 21 * F * * 22 * ** * O 23 * ** * ** 24 * ** * * 25 L ** M ** Dom B: supermarket C: park D: nowy plac E: dom przyjaciela F: stary zamek G: brzeg rzeki H: plaża I: kino J: las K: mała wyspa L: muzeum golfa kodowego M: lotnisko N: herbaciarnia O: restauracja P: świetny most P: Budynek SO
Nie jestem językiem ojczystym języka angielskiego. W razie potrzeby możesz poprawić mój język i gramatykę.
Haskell, 633 znaków
Raczej zbyt długo na golfa, ale tworzy piękną mapę SVG:
Lub, jeśli twoja przeglądarka nie obsługuje SVG, PNG tego obrazu:
viewBox
; także kilka sztuczek golfowych tu i tam.źródło
Python,
516476 bajtów(Uwaga: nie uwzględniłem dwóch pierwszych wierszy w liczbie bajtów, uważam je za „parametry interpretera”. Ale naliczyłem sobie opłatę za długość utf-8 programu w bajtach.)
Na drugim przykładzie tworzę:
Tak, glify Unicode!
źródło
Python, 1074 bajty
Ok, spędziłem zbyt wiele bajtów (i czasu) na znalezieniu rozsądnych ścieżek do pracy.
Robi ładne ścieżki:
i
źródło