Zrównoważona logika trójskładnikowa
Trójargumentowy jest zwykle inna nazwa podstawy 3, to znaczy, każda cyfra jest 0, 1lub 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, 0i 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. zjest albo -1, 0albo 1, podczas gdy xi ymoże być od -3812798742493do 3812798742493włącznie.
Pierwszym krokiem jest przekształcenie xi yod 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 xi yparami przy użyciu potrójny operację, a następnie przekonwertować wynik do tyłu po przecinku.
Możesz wybrać, które wartości zmapy 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 xjest 29i yjest 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, -37i 27odpowiednio. 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!
zmusi to być jedna z nich, -1,0,1czy możemy wybrać dowolne trzy spójne i odrębne wartości? Wybrałem 1,2,3w swojej odpowiedzi i jest w tym trochę zamieszania.