Lógica ternaria equilibrada
Ternario es normalmente otro nombre para la base 3, es decir, cada dígito es 0, 1o 2, y cada lugar vale 3 veces más que el siguiente lugar.
El ternario equilibrado es una modificación del ternario que utiliza dígitos de -1, 0y 1. Esto tiene la ventaja de no necesitar una señal. Cada lugar todavía vale 3 veces más que el siguiente. Los primeros números enteros positivos son, por lo tanto [1], [1, -1], [1, 0], [1, 1], [1, -1, -1]mientras que los primeros son números enteros negativos [-1], [-1, 1], [-1, 0], [-1, -1], [-1, 1, 1].
Tienes tres entradas x, y, z. zes o bien -1, 0, o 1, mientras que xy ypuede ser desde -3812798742493a 3812798742493inclusive.
El primer paso es convertir xy yde decimal a ternario equilibrado. Esto debería darte 27 trits (dígitos digitales). Luego tiene que combinar los trits desde xy yen pares usando una operación ternaria y luego convertir el resultado a decimal.
Puede elegir qué valores de zmapear a una de estas tres operaciones ternarias cada uno:
A: Dado dos trits, si cualquiera es cero, entonces el resultado es cero; de lo contrario, el resultado es -1 si son diferentes o 1 si son iguales.B: Dados dos trits, si uno es cero, entonces el resultado es el otro trit, de lo contrario el resultado es cero si son diferentes o la negación si son iguales.C: Dados dos trits, el resultado es cero si son diferentes o su valor si son iguales.
Ejemplo. Supongamos que xes 29y yes 15. En ternario equilibrado, estos se convierten en [1, 0, 1, -1]y [1, -1, -1, 0]. (Los 23 trits cero restantes se han omitido por brevedad). Después de cada una de las operaciones respectivas se convierten en A: [1, 0, -1, 0], B: [-1, -1, 0, -1], C: [1, 0, 0, 0]. Convertidos a decimales los resultados son 24, -37y 27respectivamente. Pruebe la siguiente implementación de referencia para obtener más ejemplos:
La implementación de referencia sigue los pasos anteriores, pero, por supuesto, puede utilizar cualquier algoritmo que produzca los mismos resultados.
Este es el código de golf , por lo que gana el programa o la función más corta que no viole ninguna laguna estándar.
ztiene que ser uno de -1,0,1los tres valores consistentes o distintos? He seleccionado 1,2,3en mi respuesta, y hay algo de confusión al respecto.