Збалансована потрійна логіка
Трійчастий зазвичай інша назва для підстави 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у своїй відповіді, і в цьому є деяка плутанина.