Istnieje 40 sposobów, w jakie ukierunkowana ścieżka hamiltonowska może być ułożona na siatce 3 × 3:
Ta grafika ( dzięki Sp3000! ) Pokazuje tylko 20 nieukierowanych ścieżek. Przemierzaj każdą kolorową linię w obu kierunkach dla 40 kierowanych ścieżek.
Wyzwanie
Używając tylko ASCII do wydruku , napisz siatkę znaków 3 × 3, na przykład:
ABC
DEF
GHI
Gdy każda z 40 kierowanych ścieżek jest odczytywana z tej siatki jako 40 jednowierszowych, 9-znakowych programów, celem jest, aby każdy program wyświetlał unikalną liczbę całkowitą od 1 do 40. Wykonanie tego dla wszystkich 40 ścieżek wydaje się trudne i mało prawdopodobne, więc musisz tylko sprawić, by działał na jak największej liczbie ścieżek.
Zwycięzcą zostanie zgłoszenie, którego 40 programów ścieżek wyprowadzi najbardziej wyraźne liczby od 1 do 40. Tiebreaker przechodzi do wcześniejszego zgłoszenia.
Programy ścieżek, które popełniają błąd lub nie wypisują liczb całkowitych od 1 do 40 lub wypisują liczby całkowite, których nie obejmuje już inny program ścieżek, nie są liczone. Konkretnie:
- Programy z błędami podczas kompilacji, uruchamiania lub wychodzenia nie są liczone. Ostrzeżenia są w porządku.
- Programy, które nie wypisują liczb całkowitych od 1 do 40 lub wyprowadzają coś nieznacznie zniekształconego, takie jak
-35
lub35 36
nie są liczone. - Programy wymagające danych wejściowych od użytkownika, aby wygenerować dane wyjściowe, nie są liczone.
- Programy, które nigdy się nie kończą, nie są liczone.
- Od teraz na programy, które nie są deterministyczne nie są liczone.
- W przeciwnym razie prawidłowe programy, które generują liczbę całkowitą od 1 do 40, którą inny prawidłowy program już wypisał, nie są liczone. (Pierwszy program jest liczony.)
- Tylko programy, które generują liczby całkowite reprezentujące liczby od 1 do 40 (włącznie) są liczone do twojej sumy. Oczekuje się, że liczby będą miały zwykły
1
,2
...39
,40
format, chyba że nie jest to normą dla twojego języka. (Końcowy znak nowej linii w wyjściu jest w porządku). - Liczba numerów wyjściowych programów i ich kolejność nie ma znaczenia. Liczy się tylko liczba różnych liczb całkowitych z prawidłowych programów.
Wszystkie programy ścieżki muszą być uruchamiane w tym samym języku. Jednak „programami” mogą być w rzeczywistości funkcje (bez wymaganych argumentów) lub polecenia REPL , a także pełne programy, które wypisują lub zwracają docelową liczbę całkowitą. Możesz mieszać i dopasowywać funkcje, polecenia REPL i pełne programy.
Twoje 9 drukowalnych znaków ASCII nie musi być rozróżnionych.
Przykład
Jeśli twoja siatka 3 × 3 była
ABC
DEF
GHI
a twoje 40 programów i wyników wyglądało tak
ABCFEDGHI -> 26
ABCFIHEDG -> 90
ABCFIHGDE -> 2
ABEDGHIFC -> syntax error
ADEBCFIHG -> prints 40 but then errors
ADGHEBCFI -> 6
ADGHIFCBE -> 6
ADGHIFEBC -> 6
CBADEFIHG -> runtime error
CBADGHEFI -> 3
CBADGHIFE -> 4
CFEBADGHI -> -32
CFIHEBADG -> 38.0
CFIHGDABE -> "36"
EDABCFIHG -> 33
EFCBADGHI -> no output
EHGDABCFI -> compilation error
EHIFCBADG -> 8
GDABCFEHI -> 22
GHEDABCFI -> 41
IHGDEFCBA -> 0
GDEHIFCBA -> '9'
EDGHIFCBA -> +10
CFIHGDEBA -> 11
GHIFCBEDA -> error
IFCBEHGDA -> error
EBCFIHGDA -> prints 23 but then loops infinitely
CBEFIHGDA -> randomly prints either 24 or 44
GHIFEDABC -> error
IFEHGDABC -> 30
EFIHGDABC -> 39
IHGDABEFC -> 7
GDABEHIFC -> 29
EBADGHIFC -> -1
GHIFCBADE -> 26
IHGDABCFE -> 1
IFCBADGHE -> error
GDABCFIHE -> no output
IHEFCBADG -> no output
IFCBADEHG -> "quack"
Twój wynik wyniósłby 14, ponieważ istnieje 14 różnych liczb całkowitych od 1 do 40 prawidłowych danych wyjściowych, a mianowicie 26 2 6 3 4 33 8 22 11 30 39 7 29 1
.
123654789