Jest to sieć do 26 węzłów (nazwanych A
do Z
lub a
do z
jak na swoje życzenie). Każda para węzłów może być połączona lub rozłączona. Węzeł może być podłączony maksymalnie do 4 innych węzłów. Twoim zadaniem jest narysowanie sieci na schemacie 2D. Dane wejściowe zostaną podane w taki sposób, aby to zadanie było możliwe (zobacz więcej ograniczeń w sekcji wyników).
Format
Wkład
- Par liter (
A
doZ
luba
produktuz
, jak na swoje życzenie). Nie są sortowane w żadnej kolejności. - Opcjonalnie - liczba par
Wydajność
- Rysunek ASCII, który pokazuje rzeczywiste połączenia między węzłami. Węzły są nadawane przez
a
doz
lubA
doZ
. Użyj-
do połączeń poziomych i|
pionowych. Łącza mogą mieć dowolną (niezerową) długość, ale powinny być prostymi poziomymi / pionowymi liniami , które się nie wyginają . Można dodawać spacje, pod warunkiem że nie zniekształcają obrazu.
Nie możesz używać wbudowanych, które pomagają w układzie wykresu. Inne wbudowane wykresy mogą być dozwolone (chociaż rozwiązania bez wbudowanych rozwiązań byłyby bardziej docenione). Najkrótszy kod wygrywa.
Przykładowe dane
Wkład
A B
B F
B L
F K
L K
K R
K S
R P
S J
S P
J A
T V
V N
Wydajność
A - B - F T - V
| | | |
| L - K - R N
| | |
J ----- S - P
Wkład
H C
G H
A B
B F
B C
F G
C D
D A
Wydajność
A - B ----- F
| | |
D - C - H - G
code-golf
ascii-art
graph-theory
ghosts_in_the_code
źródło
źródło
H A
a tej krawędzi nie ma w podanym wyniku. Edycja: problem zidentyfikowany i naprawiony.Odpowiedzi:
CJam, 142
Nie prosiłeś o optymalne, deterministyczne lub szybkie rozwiązanie, więc proszę:
Wypróbuj online
To generuje losowe współrzędne dla każdej litery i sprawdza, czy układ jest akceptowalny (litery na krawędzi w linii i bez przecięć), dopóki tak nie jest. Robi się przytłaczająco wolno, gdy dodajesz więcej krawędzi.
Dwie
D
litery w kodzie określają maksymalne współrzędne xiy; WybrałemD
(= 13), ponieważ uważam, że powinno wystarczyć we wszystkich przypadkach, nie krępuj się udowodnić, że się mylę. Ale możesz zmienić je na inne wartości, aby przyspieszyć program, np. Drugi przykład powinien zakończyć się w ciągu minuty lub dwóch, jeśli zamiast tego użyjesz 3 i 4.źródło
C, 813 bajtów
Pobiera dane wejściowe jako argumenty wiersza poleceń, np .:
Nigdzie nie konkuruje z odpowiedzią aditsu według wielkości, ale jest o wiele bardziej wydajny!
To brutalnie wymusi wszystkie możliwe rozwiązania, ale szybko rozpozna porażkę. W dwóch przypadkach testowych kończy się niemal natychmiast i wydaje się, że zajmuje to tylko kilka sekund przy bardziej niezręcznych danych wejściowych. Nie ma również ograniczeń co do akceptowanych nazw węzłów (chociaż nie można nazwać jednej spacji
|
lub-
) i nie ma ograniczenia liczby węzłów (o ile wszystkie nazwy mieszczą się w bajcie, więc praktyczny limit wynosi 252 węzłów, i na długo zwolni, zanim dojdzie do tylu).Istnieje wiele możliwości przyspieszenia tego; gra w golfa utraciła wiele wyjść zwarciowych i są części, które można wyprowadzić z hot-loopów. Również niektóre obserwacje symetrii mogą drastycznie zmniejszyć, między innymi, położenie pierwszych 2 węzłów.
Awaria:
źródło