Logika ternary yang seimbang
Terner biasanya nama lain untuk basis 3, yang mengatakan, setiap digit adalah 0
, 1
atau 2
, dan setiap tempat bernilai 3 kali lebih banyak sebagai tempat berikutnya.
Terner seimbang adalah modifikasi terner yang menggunakan digit -1
, 0
dan 1
. Ini memiliki keuntungan karena tidak memerlukan tanda. Setiap tempat masih bernilai 3 kali lipat dari tempat berikutnya. Oleh karena itu beberapa bilangan bulat positif pertama adalah [1]
, [1, -1]
, [1, 0]
, [1, 1]
, [1, -1, -1]
sementara beberapa bilangan bulat negatif pertama yang [-1]
, [-1, 1]
, [-1, 0]
, [-1, -1]
, [-1, 1, 1]
.
Anda memiliki tiga input x, y, z
. z
adalah baik -1
, 0
atau 1
, sementara x
dan y
dapat dari -3812798742493
ke 3812798742493
inklusif.
Langkah pertama adalah mengubah x
dan y
dari desimal ke terner seimbang. Ini akan memberi Anda 27 trit (digit TeRnary). Anda kemudian harus menggabungkan trit dari x
dan y
berpasangan menggunakan operasi ternary dan kemudian mengubah hasilnya kembali ke desimal.
Anda dapat memilih nilai z
peta mana dari masing-masing dari tiga operasi ternary ini:
A
: Diberi dua trit, jika salah satu adalah nol, maka hasilnya adalah nol, jika tidak hasilnya adalah -1 jika mereka berbeda atau 1 jika mereka sama.B
: Diberi dua trit, jika salah satu adalah nol, maka hasilnya adalah trit yang lain, jika tidak hasilnya adalah nol jika mereka berbeda atau negasi jika mereka sama.C
: Diberikan dua trit, hasilnya adalah nol jika mereka berbeda atau nilainya jika mereka sama.
Contoh. Misalkan x
ada 29
dan y
ada 15
. Dalam terner yang seimbang, ini menjadi [1, 0, 1, -1]
dan [1, -1, -1, 0]
. (23 zero trit yang tersisa dihilangkan karena singkatnya.) Setelah masing-masing operasi, mereka menjadi A
: [1, 0, -1, 0]
, B
: [-1, -1, 0, -1]
, C
: [1, 0, 0, 0]
. Dikonversi kembali ke desimal hasilnya 24
, -37
dan 27
masing - masing. Coba implementasi referensi berikut untuk lebih banyak contoh:
Implementasi referensi mengikuti langkah-langkah yang diberikan di atas tetapi Anda tentu saja bebas menggunakan algoritma apa pun yang menghasilkan hasil yang sama.
Ini adalah kode-golf , jadi program atau fungsi terpendek yang tidak melanggar celah standar akan menang!
z
harus salah satu -1,0,1
atau dapatkah kita memilih tiga nilai yang konsisten dan berbeda? Saya telah memilih 1,2,3
jawaban saya, dan ada beberapa kebingungan tentang itu.