Wprowadzenie
Zdefiniujmy funkcję trójskładnikową jako funkcję z zestawu trzech elementów S = {0,1,2}
do siebie: wiąże się z każdym elementem S
innego elementu S
. Jednym z przykładów funkcji potrójnej f
jest
f(0) = 0; f(1) = 2; f(2) = 0
Istnieją dokładnie 27 różnych funkcji trójskładnikowych i reprezentujemy je liczbami całkowitymi od 0 do 26: funkcja f
jest zakodowana jako f(0) + 3*f(1) + 9*f(2)
. Powyższa przykładowa funkcja jest zakodowana jako liczba 6.
Możemy zastosować dwie funkcje trójskładnikowych f
i g
kolejno, a jeśli f(g(k)) == g(f(k))
zachodzi dla wszystkich k
IN S
, a następnie funkcje dojeżdżać . Twoim zadaniem jest sprawdzenie, czy tak jest.
Wkład
Twoje dane wejściowe to dwie liczby całkowite z zakresu od 0 do 26. Reprezentują dwie funkcje trójskładnikowe f
i g
. Dane wejściowe muszą być pobierane w formacie dziesiętnym, binarnym lub jednoargumentowym (ciąg znaków 1
s).
Wydajność
Jego wynik jest wartość truthy jeśli f
i g
dojazdy, a wartość falsey czy nie. Nie można zakładać, że dane wejściowe są uporządkowane.
Przykłady
Rozważmy wejścia 5 i 16. Kodują one funkcje trójskładnikowe
f(0) = 2; f(1) = 1; f(2) = 0
g(0) = 1; g(1) = 2; g(2) = 1
Mamy f(g(1)) == f(2) == 0
i g(f(1)) == g(1) == 2
tak f
i g
nie dojeżdża i prawidłowe wyjście jest falsey.
Z drugiej strony wejścia 3 i 10 kodują funkcje trójskładnikowe
f(0) = 0; f(1) = 1; f(2) = 0
g(0) = 1; g(1) = 0; g(2) = 1
i może zostać zweryfikowana, które f(g(k)) == g(f(k))
odnosi się do wszystkich k
in S
. Zatem poprawne wyjście jest zgodne z prawdą.
Oto tabela 27 × 27 wszystkich możliwych danych wejściowych, z +
zaznaczeniem prawdziwego wyniku i -
wyniku falsey:
+ - - + - - + - - + - - + - - + - - + - - + - - + - -
- + - - - - - - - - - - + - - - - - - - - + - - - - -
- - + - - - - - - - - - - - - - - - - - - + - - + - -
+ - - + - - - - - - + - - + - - - - + - - + - - - - -
- - - - + - - - - - - - - + - - - - - - - + - - - - -
- - - - - + - - - - - - - + - - - - - - - + - - - - -
+ - - - - - + - - - - - - - - - - - - - - + - - - - -
- - - - - - - + - - - + - - - - - - - - - + - - - - -
- - - - - - - - + - - - - - - - - - + - - + - - - - -
+ - - - - - - - - + - - - - - - - - - - - + - - - - -
- - - + - - - - - - + - - - - - - - - - - + - - - - -
- - - - - - - + - - - + - - - - - - - - - + - - - - -
+ + - - - - - - - - - - + + - - - - - - - + + - - - -
- - - + + + - - - - - - + + + - - - - - - + + + - - -
- - - - - - - - - - - - - + + - - - - - - + - - - - -
+ - - - - - - - - - - - - - - + - - - - - + - - - - -
- - - - - - - - - - - - - - - - + - - - - + - + - - -
- - - - - - - - - - - - - - - - - + - - - + + - - - -
+ - - + - - - - + - - - - - - - - - + - - + - - - - +
- - - - - - - - - - - - - - - - - - - + - + - - - - +
- - - - - - - - - - - - - - - - - - - - + + - - - - +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
- - - - - - - - - - - - + + - - - + - - - + + - - - +
- - - - - - - - - - - - - + - - + - - - - + - + + - +
+ - + - - - - - - - - - - - - - - - - - - + - + + - +
- - - - - - - - - - - - - - - - - - - - - + - - - + +
- - - - - - - - - - - - - - - - - - + + + + + + + + +
Zasady i punktacja
Możesz napisać pełny program lub funkcję. Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone.
Odpowiedzi:
Galaretka,
171413 bajtówWypróbuj online! lub sprawdź wszystkie przypadki 27 × 27 .
Jak to działa
źródło
MATL ,
1918 bajtówPrawda to tablica ze wszystkimi. Falsy to tablica zawierająca co najmniej jedno zero.
Wypróbuj online! lub zweryfikuj wszystkie przypadki (zajmuje kilka sekund).
źródło
Python 2, 61 bajtów
Biorąc pod uwagę wejście
i
, możemy realizować funkcję reprezentowaną przezn
wykonującn/3**i%3
wyodrębnići
th potrójny cyfręn
. Funkcja sprawdza, czy0,1,2
przy zastosowaniu funkcji w dowolnej kolejności uzyskuje się taki sam wynik . Właściwie, ponieważ robi się pierwszy krok3**
, testy[1,3,9]
zamiast tego.Ponowne użycie kodu wygląda na marnotrawstwo, ale nie widziałem lepszego sposobu. Porównać:
źródło
JavaScript (ES7), 68 bajtów
Niestety konwersja podstawy 3 była zbyt droga:
źródło
Mathematica, 77 bajtów
Indeksowanie oparte na One Mathematica znów uderza!
źródło
{1,1,1}
zmienną i użyć jej.