Logica ternaria bilanciata
Ternario è normalmente un altro nome per la base 3, vale a dire, ogni cifra è 0, 1o 2, ed ogni posto vale 3 volte tanto quanto il prossimo luogo.
Ternario bilanciato è una modifica del ternario che utilizza cifre -1, 0e 1. Questo ha il vantaggio di non aver bisogno di un segno. Ogni posto vale comunque 3 volte di più di quello successivo. I primi numeri interi positivi sono quindi [1], [1, -1], [1, 0], [1, 1], [1, -1, -1]mentre i primi interi negativi sono [-1], [-1, 1], [-1, 0], [-1, -1], [-1, 1, 1].
Hai tre ingressi x, y, z. zè o -1, 0o 1, mentre xe ypuò essere da -3812798742493a 3812798742493inclusiva.
Il primo passo è quello di convertire xe yda decimale a ternario bilanciato. Questo dovrebbe darti 27 trits (cifre TeRnary). È quindi necessario combinare i trit da xe yin coppia utilizzando un'operazione ternaria e quindi riconvertire il risultato in decimale.
Puoi scegliere quali valori di zmappare per una di queste tre operazioni ternarie ciascuna:
A: Dati due trit, se uno è zero, il risultato è zero, altrimenti il risultato è -1 se sono diversi o 1 se sono uguali.B: Dati due trit, se uno è zero, allora il risultato è l'altro trit, altrimenti il risultato è zero se sono diversi o la negazione se sono uguali.C: Dati due trit, il risultato è zero se sono diversi o il loro valore se sono uguali.
Esempio. Supponiamo che xsia 29ed yè 15. In ternario equilibrato, questi diventano [1, 0, 1, -1]e [1, -1, -1, 0]. (I restanti 23 zero trits sono stati omessi per brevità.) Dopo ciascuna delle rispettive operazioni diventano A: [1, 0, -1, 0], B: [-1, -1, 0, -1], C: [1, 0, 0, 0]. Torna convertito in decimale i risultati sono 24, -37e 27, rispettivamente. Prova la seguente implementazione di riferimento per altri esempi:
L'implementazione di riferimento segue i passaggi sopra indicati, ma sei ovviamente libero di utilizzare qualsiasi algoritmo che produca gli stessi risultati.
Questo è code-golf , quindi vince il programma o la funzione più breve che non viola nessuna scappatoia standard!
zdobbiamo essere una delle -1,0,1o possiamo scegliere qualsiasi tre valori costanti ed evidenti? Ho selezionato 1,2,3nella mia risposta, e c'è un po 'di confusione al riguardo.