Zrównoważona logika trójskładnikowa
Trójargumentowy jest zwykle inna nazwa podstawy 3, to znaczy, każda cyfra jest 0
, 1
lub 2
, a każde miejsce jest warte 3 razy tyle, ile następnej kolejności.
Zrównoważone trójskładnikowe jest modyfikacją trójskładnikowego wykorzystującą cyfry -1
, 0
i 1
. Ma to tę zaletę, że nie wymaga znaku. Każde miejsce jest nadal warte 3 razy więcej niż następne. Pierwszych kilka całkowite dodatnie są zatem [1]
, [1, -1]
, [1, 0]
, [1, 1]
, [1, -1, -1]
podczas gdy pierwsze kilka negatywnych całkowitymi są [-1]
, [-1, 1]
, [-1, 0]
, [-1, -1]
, [-1, 1, 1]
.
Masz trzy wejścia x, y, z
. z
jest albo -1
, 0
albo 1
, podczas gdy x
i y
może być od -3812798742493
do 3812798742493
włącznie.
Pierwszym krokiem jest przekształcenie x
i y
od dziesiętnej na system trójkowy zrównoważony. To powinno dać ci 27 tritów (TeRnary digITS). Następnie trzeba połączyć z trits x
i y
parami przy użyciu potrójny operację, a następnie przekonwertować wynik do tyłu po przecinku.
Możesz wybrać, które wartości z
mapy dla jednej z tych trzech operacji trójskładnikowych każda:
A
: Biorąc pod uwagę dwie tryty, jeśli jeden z nich jest równy zero, to wynik wynosi zero, w przeciwnym razie wynik wynosi -1, jeśli są różne lub 1, jeśli są takie same.B
: Biorąc pod uwagę dwie trity, jeśli jedna z nich jest równa zero, to wynikiem jest druga trit, w przeciwnym razie wynik wynosi zero, jeśli są różne, lub negacja, jeśli są takie same.C
: Biorąc pod uwagę dwie tryty, wynik wynosi zero, jeśli są różne, lub ich wartość, jeśli są takie same.
Przykład. Załóżmy, że x
jest 29
i y
jest 15
. W zrównoważonej trójce stają się [1, 0, 1, -1]
i [1, -1, -1, 0]
. (Pozostałe 23 tryty zerowe zostały pominięte ze względu na zwięzłość.) Po każdej z odpowiednich operacji stają się one A
: [1, 0, -1, 0]
, B
: [-1, -1, 0, -1]
, C
: [1, 0, 0, 0]
. Przekształcany z powrotem na dziesiętne wyniki są 24
, -37
i 27
odpowiednio. Wypróbuj następującą implementację referencyjną, aby uzyskać więcej przykładów:
Implementacja referencyjna postępuje zgodnie z krokami podanymi powyżej, ale oczywiście możesz swobodnie korzystać z dowolnego algorytmu, który daje takie same wyniki.
To jest golf golfowy , więc wygrywa najkrótszy program lub funkcja, która nie narusza żadnych standardowych luk!
z
musi to być jedna z nich, -1,0,1
czy możemy wybrać dowolne trzy spójne i odrębne wartości? Wybrałem 1,2,3
w swojej odpowiedzi i jest w tym trochę zamieszania.