Dengeli üçlü mantık
Üçlü normalde demek ki tabanın 3, diğer bir adıdır, her rakamdır 0, 1ya 2ve her yerde sonraki yer olduğu kadar 3 kez değer.
Dengeli üçlü rakamlarını kullanmaktadır üçlü bir değişiklik -1, 0ve 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. zYa olduğunu -1, 0ya 1da, xve yarasında olabilir -3812798742493için 3812798742493kapsayıcı.
İlk adım dönüştürmek olduğunu xve yondalık dengeli üçlü için. Bu size 27 değer vermelidir (Diş basamakları). Daha sonra üçlü bir işlem kullanarak xve yçiftlerden gelen tritsleri birleştirmeniz ve ardından sonucu ondalığa dönüştürmeniz gerekir.
zBu üç üç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 xolduğunu 29ve ybir 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, -37ve 27sı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!
zolmalı mı -1,0,1yoksa seçebilir miyiz? Cevabımda 1,2,3seçtim ve bununla ilgili bir karışıklık var.