Wprowadzenie
Prawie wszyscy znają problem Traveling Salesman Problem (TSP). Zadanie polega na N
znalezieniu, na podstawie listy miast, minimalnego cyklu hamiltonowskiego , czyli najkrótszej ścieżki, która odwiedza każde miasto i zatacza koło. Nie o to chodzi w tym wyzwaniu. Wyzwanie polega na wdrożeniu rozwiązania Chucka Norrisa w TSP:
Chuck Norris rozwiązał problem Podróżującego Sprzedawcy na
O(1)
czas: rozbić sprzedawcę na N części; kopnij każdy kawałek do innego miasta.
Wyzwanie
Aby rozwiązać TSP w ten sposób, potrzebujemy wystarczająco trwałego sprzedawcy, który nie będzie unikał frywolności, takich jak rozczłonkowanie; wiele miast do odwiedzenia; zestaw produktów do sprzedaży; konkretna metoda rozczłonkowania; oraz obliczenie punktacji.
Specyfikacja
- Miasta
N
to liczba odwiedzin, które odwiedzi nasz sprzedawca
- Sprzedawca
- Główny program lub funkcja
- Napisane w języku
X
- O długości mod
N
równej0
- Produkty
- Amputacja
- Krojenie sprzedawcy na
N
ciągłe kawałki o równej długości - Każdy utwór powinien być prawidłową funkcją lub programem w języku
X
- Krojenie sprzedawcy na
- Wynik
- Po wykonaniu Sprzedawca powinien wysyłać,
Chuck Norris
a pokrojone kawałki powinny dawać odrębny produkt - Dopuszczalna jest tylko dodatkowa spacja
- Po wykonaniu Sprzedawca powinien wysyłać,
- Punktacja
- Długość
L
sprzedawcy w bajtach podzielona przez liczbę miastN
, do kwadratu. Score = L/(N*N)
- Najmniejszy wynik wygrywa
- Podczas publikowania wyniku dziesiętnego należy podać 3 znaczące liczby
- Długość
Przykłady
- Ten sprzedawca odwiedza 3 miasta,
N=3
a jego długość to 9L=9
. Tak więc wynik tej odpowiedzi byłby następującyS = 9 / (3 * 3) = 9/9 = 1
.- Należy pamiętać, że sprzedawca i każdy pokrojony kawałek (których jest 3), wszystkie powinny być poprawnymi programami lub funkcjami w tym samym języku.
Program -> Output
------- ------
aaaBBBccc -> Chuck Norris
aaa -> Helium
BBB -> Iridium
ccc -> Tennessine
N=4
iL=20
takS=20/16=1.25
Program -> Output
------- ------
aaaaaBBBBBcccccDDDDD -> Chuck Norris
aaaaa -> Hydrogen
BBBBB -> Cadmium
ccccc -> Mercury
DDDDD -> Iron
code-challenge
source-layout
Nieliniowe Owoce
źródło
źródło
ElementData
dozwolone są wbudowane elementy takie jak Mathematica ? (Wątpię, czy to dużo zaoszczędzi, ale nie wiem.)Odpowiedzi:
CJam, L = 1482, N = 114, wynik 0,114
Wypróbuj online!
Każdy program ma 13 bajtów. Tutaj są one podzielone na poszczególne linie:
Brakujące elementy to Darmstadtium, Praseodymium, Protactinium i Rutherfordium, które mają 12 lub 13 znaków, co oznacza, że nie mogę wydrukować ich po 13 znaków.
Chodzi o to, że kilka pierwszych programów, które drukują elementy o krótkich nazwach, używają obcych znaków do budowania łańcucha
Chuck Norri
w zmiennejL
, co nie wpływa na dane wyjściowe, gdy jest używane samodzielnie. Ostateczny program sprawdza następnie, czy coś jest już na stosie, i używa go do wybierania międzyL
(pluss
) aXenon
.Kilka dodatkowych bajtów jest zapisywanych przy użyciu znaku, który właśnie dodaliśmy,
L
jako części nazwy elementu, szczególnie dlaC
arbon,N
ickel, Copper
i Silver
.źródło
Python, L = 2596, N = 118, wynik = 0,186
Długość każdego plasterka wynosi 22 , co czyni go dość długim.
Oto sprzedawca po krojeniu i krojeniu w kostkę:
Aktualizacja
źródło
lambda:"Actinium";print""
Actinium? Czy może to dotyczy konkretnie Pythona 3?Actinium
.print ""
Nie coś pożytecznego zrobić po sprzedawcę zostało rozczłonkowane.