균형 잡힌 삼항 논리
삼항 일반적으로 말을하는 것입니다 기본 3의 또 다른 이름이며, 각 숫자는 0
, 1
또는 2
, 각각의 장소는 다음 장소만큼 3 배 가치가있다.
평형이 원계의 숫자를 사용하여 원의 변형이며 -1
, 0
그리고 1
. 이것은 사인이 필요 없다는 장점이 있습니다. 각 장소는 여전히 다음 장소보다 3 배나 가치가 있습니다. 처음 몇 양의 정수이다 따라서 [1]
, [1, -1]
, [1, 0]
, [1, 1]
, [1, -1, -1]
처음 몇 음수 인 반면 [-1]
, [-1, 1]
, [-1, 0]
, [-1, -1]
, [-1, 1, 1]
.
세 개의 입력이 x, y, z
있습니다. z
중 하나입니다 -1
, 0
또는 1
동시에, x
및 y
에서 할 수 있습니다 -3812798742493
에 3812798742493
포함.
첫 번째 단계는 변환하는 것입니다 x
및 y
소수점에서 균형 잡힌 원에. 이렇게하면 27 개의 속임수 (TeRnary digITS)가 제공됩니다. 그런 다음에서 trits을 결합해야 x
하고 y
삼항 작업을 사용하여 쌍으로하고 소수의 결과 등을 변환합니다.
z
이 세 가지 삼항 연산 중 하나에 각각 매핑 할 값을 선택할 수 있습니다 .
A
: 두 개의 trit이 주어지면 둘 중 하나가 0이면 결과는 0이고, 그렇지 않으면 결과가 -1이고 다른 경우 1입니다.B
: 두 개의 trit이 주어지면 둘 중 하나가 0이면 결과는 다른 trit입니다. 그렇지 않으면 결과가 다르면 0이되고, 같으면 부정이됩니다.C
: 두 개의 trit이 주어지면 결과가 다르면 0이되고 값이 같으면 값이 0입니다.
예. 가정하자가 x
있다 29
하고 y
있습니다 15
. 균형 잡힌 삼항에서는 이것들이 [1, 0, 1, -1]
이고 [1, -1, -1, 0]
. (나머지 23 trits 제로는 간결함을 위해 생략되어있다.)가되어, 각 작업마다 한 후 A
: [1, 0, -1, 0]
, B
: [-1, -1, 0, -1]
, C
: [1, 0, 0, 0]
. 변환 다시는 결과가 진수 24
, -37
및 27
각각. 더 많은 예제를 보려면 다음 참조 구현을 시도하십시오.
참조 구현은 위에 제공된 단계를 따르지만 물론 동일한 결과를 생성하는 알고리즘을 자유롭게 사용할 수 있습니다.
이것은 code-golf 이므로 표준 허점을 위반하지 않는 가장 짧은 프로그램이나 기능이 승리합니다!
z
중 하나가 될 필요가 -1,0,1
또는 우리는 어떤 세 일관되고 고유 한 값을 선택할 수 있습니다? 나는 1,2,3
내 대답에서 선택 했고 그것에 대해 약간의 혼란이 있습니다.