Mrówka chodzi wzdłuż krawędzi (nie ścian) sześcianu szkieletowego. Każdy napotkany wierzchołek przedstawia widelec, z którego rozgałęziają się dwie nowe krawędzie. Mrówka wybiera, w którą stronę skręcić - left
lub right
. Kierunki te odnoszą się do mrówki, która jest zwrócona do wierzchołka i znajduje się poza sześcianem. Twoim celem jest ustalenie, na podstawie sekwencji left
/ right
wyborów, które wybrał mrówka, czy kończy się w tej samej pozycji, w której się zaczął.
Na przykład, jeśli mrówka skręci w lewo cztery razy ( left left left left
), przejdzie kwadrat o kierunku przeciwnym do ruchu wskazówek zegara i skończy w tym samym miejscu, w którym zaczął. Ale jeśli przejdzie left left left left right
, skończy się w innym miejscu na kostce. Ponadto, jeśli przejdzie left right right right left
, kończy się na krawędzi początkowej, ale jest skierowany w stronę przeciwnego wierzchołka, co nie jest liczone jako ta sama pozycja.
Ścieżka mrówki może powtarzać krawędzie, w tym krawędź, od której zaczyna, ale ważne jest, gdzie kończy się po całej sekwencji.
Napisz nazwaną funkcję, która pobiera sekwencję zwojów mrówki i podaje, czy mrówka powraca do pozycji początkowej po sekwencji. Przypisanie funkcji bez nazwy do zmiennej wystarczy, aby uczynić ją funkcją o nazwie.
(Edycja: jeśli Twój język nie może utworzyć nazwanej funkcji, może zamiast tego zaimplementować funkcję z wejściami i wyjściami poprzez STDIN / drukowanie lub stos. Jeśli nie jest to możliwe, uczyń z niego fragment kodu, w którym dane wejściowe i wyjściowe są zapisywane w zmienne).
Wkład
Sekwencja left
/ right
decyzji długości 0
do 31
włączenia, reprezentowana w wybranym formacie. Może to być ciąg liter R
/ L
, lista cyfr 1
/ -1
lub tablica boolean. Nic tak tandetnego jak to, że są to nazwy metod lub ciągi znaków przydatne w kodzie.
Prześlij przypadki testowe w swoim formacie, jeśli różnią się one od poniższych przypadków testowych.
Wydajność
True
/ False
, 0
/ 1
lub analogi w twoim języku.
Kryteria wygranej
Wygrywa najmniej bajtów. Pamiętaj, że musisz podać nazwaną funkcję. Możesz mieć kod poza funkcją, ale te bajty też się liczą. Twoja funkcja powinna działać poprawnie, jeśli zostanie wywołana wiele razy.
Przypadki testowe
True
przypadki (jedna na linię, druga to pusta lista):
1 1 1 1
-1 -1 -1 -1
1 -1 1 -1 1 -1
1 1 -1 -1 1 1 -1 -1
-1 1 1 -1 -1 1 1 -1
1 1 1 -1 -1 -1 -1 1
1 -1 -1 1 -1 -1
1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1
-1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
False
etui (jeden na linię):
1
1 1
1 1 1
-1 1
1 -1 -1 -1 1
1 -1 -1 1 1
-1 1 -1 1
1 1 1 1 -1
-1 -1 1 -1 1 -1 -1 1
1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1
Oto te same przypadki testowe z L
's R
' i 's.
True
przypadki:
RRRR
LLLL
RLRLRL
RRLLRRLL
LRRLLRRL
RRRLLLLR
RLLRLL
RRRRLLLLRLLRLL
LLLRLLRRLRLRRRRRRRRRRRRRRRRR
False
przypadki:
R
RR
RRR
LR
RLLLR
RLLRR
LRLR
RRRRL
LLRLRLLR
RLRRRRLLLRRLLL
Dodatkowe wyzwanie kredytowe
To samo, ale z dwunastościanem zamiast sześcianu. Zobacz pomysły Hunt the Wumpus .