Збалансована потрійна логіка
Трійчастий зазвичай інша назва для підстави 3, тобто сказати, кожна цифра 0
, 1
або 2
, і кожне місце варто в 3 рази більше, ніж на наступному місці.
Збалансовані потрійний є модифікацією потрійного , яка використовує цифри -1
, 0
і 1
. Це має перевагу в тому, що знак не потребує. Кожне місце все одно коштує в 3 рази більше, ніж наступне. Перші кілька позитивних цілих чисел, отже [1]
, [1, -1]
, [1, 0]
, [1, 1]
, в [1, -1, -1]
той час як перші негативні цілі числа [-1]
, [-1, 1]
, [-1, 0]
, [-1, -1]
, [-1, 1, 1]
.
У вас є три входи x, y, z
. z
або -1
, 0
або 1
, в той час як x
і y
може бути від -3812798742493
до 3812798742493
включно.
Перший крок - перетворення x
і y
з десяткової в збалансовану трійку. Це повинно дати вам 27 трит (TeRnary digITS). Тоді вам доведеться поєднувати трити з x
та y
в парах, використовуючи потрійну операцію, а потім перетворити результат назад у десятковий.
Ви можете вибрати, які значення z
відображати для однієї з цих трьох потрійних операцій кожна:
A
: Дано два трити, якщо будь-який дорівнює нулю, то результат дорівнює нулю, інакше результат -1, якщо вони різні, або 1, якщо вони однакові.B
: Дано два трити, якщо будь-який дорівнює нулю, то результат - інший трит, інакше результат дорівнює нулю, якщо вони різні, або заперечення, якщо вони однакові.C
: Враховуючи два трити, результат дорівнює нулю, якщо вони різні, або їх значення, якщо вони однакові.
Приклад. Припустимо, x
є 29
і y
є 15
. У збалансованому потрійному, вони стають [1, 0, 1, -1]
і [1, -1, -1, 0]
. (Решта 23 нульових трититів були опущені для стислості.) Після кожної з відповідних операцій вони стають A
: [1, 0, -1, 0]
, B
: [-1, -1, 0, -1]
, C
: [1, 0, 0, 0]
. Старовинні назад в десяткових результатах 24
, -37
і 27
відповідно. Спробуйте наступну посилання на реалізацію для додаткових прикладів:
Реалізація посилань дотримується наведених вище кроків, але ви, звичайно, вільні використовувати будь-який алгоритм, який дає ті самі результати.
Це код-гольф , тому перемагає найкоротша програма або функція, яка не порушує жодних стандартних лазів!
z
має бути одне -1,0,1
або ми можемо вибрати будь-які три послідовні та чіткі значення? Я вибрав 1,2,3
у своїй відповіді, і в цьому є деяка плутанина.