Dengeli üçlü mantık
Üçlü normalde demek ki tabanın 3, diğer bir adıdır, her rakamdır 0
, 1
ya 2
ve her yerde sonraki yer olduğu kadar 3 kez değer.
Dengeli üçlü rakamlarını kullanmaktadır üçlü bir değişiklik -1
, 0
ve 1
. Bunun bir işarete ihtiyaç duymama avantajı vardır. Her yer hala 3 kat daha fazla yer değer. İlk birkaç pozitif tamsayılar bu nedenle [1]
, [1, -1]
, [1, 0]
, [1, 1]
, [1, -1, -1]
ilk birkaç olumsuz tamsayılar ise [-1]
, [-1, 1]
, [-1, 0]
, [-1, -1]
, [-1, 1, 1]
.
Üç girişiniz var x, y, z
. z
Ya olduğunu -1
, 0
ya 1
da, x
ve y
arasında olabilir -3812798742493
için 3812798742493
kapsayıcı.
İlk adım dönüştürmek olduğunu x
ve y
ondalık dengeli üçlü için. Bu size 27 değer vermelidir (Diş basamakları). Daha sonra üçlü bir işlem kullanarak x
ve y
çiftlerden gelen tritsleri birleştirmeniz ve ardından sonucu ondalığa dönüştürmeniz gerekir.
z
Bu üç üçlü işlemden biriyle hangi harita değerlerini seçebilirsiniz :
A
: İki trit göz önüne alındığında, her ikisi de sıfırsa, sonuç sıfırdır, aksi takdirde sonuç farklıysa -1 veya aynı ise 1 olur.B
: İki trit göz önüne alındığında, her ikisi de sıfırsa, sonuç diğer öğedir, aksi takdirde sonuç farklıysa sıfırdır veya aynı ise olumsuzlama olur.C
: İki trit göz önüne alındığında, sonuç farklıysa sıfır veya aynı ise değeri sıfır olur.
Misal. Varsayalım x
olduğunu 29
ve y
bir 15
. Dengeli üçlüde bunlar [1, 0, 1, -1]
ve olur [1, -1, -1, 0]
. (Kalan 23 sıfır trit kısalık için atlanmıştır.) İlgili işlemlerin her birinden sonra A
: [1, 0, -1, 0]
, B
: [-1, -1, 0, -1]
, C
: olurlar [1, 0, 0, 0]
. Dönüştürülen geri sonuçlarıdır onluya 24
, -37
ve 27
sırasıyla. Daha fazla örnek için aşağıdaki referans uygulamasını deneyin:
Referans uygulaması, yukarıda verilen adımları takip eder, ancak elbette aynı sonuçları üreten herhangi bir algoritmayı kullanmakta serbestsiniz.
Bu kod golf , bu yüzden standart boşlukları ihlal eden en kısa program veya işlev kazanır!
z
olmalı mı -1,0,1
yoksa seçebilir miyiz? Cevabımda 1,2,3
seçtim ve bununla ilgili bir karışıklık var.