Logika ternary yang seimbang
Terner biasanya nama lain untuk basis 3, yang mengatakan, setiap digit adalah 0, 1atau 2, dan setiap tempat bernilai 3 kali lebih banyak sebagai tempat berikutnya.
Terner seimbang adalah modifikasi terner yang menggunakan digit -1, 0dan 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. zadalah baik -1, 0atau 1, sementara xdan ydapat dari -3812798742493ke 3812798742493inklusif.
Langkah pertama adalah mengubah xdan ydari desimal ke terner seimbang. Ini akan memberi Anda 27 trit (digit TeRnary). Anda kemudian harus menggabungkan trit dari xdan yberpasangan menggunakan operasi ternary dan kemudian mengubah hasilnya kembali ke desimal.
Anda dapat memilih nilai zpeta 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 xada 29dan yada 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, -37dan 27masing - 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!
zharus salah satu -1,0,1atau dapatkah kita memilih tiga nilai yang konsisten dan berbeda? Saya telah memilih 1,2,3jawaban saya, dan ada beberapa kebingungan tentang itu.