首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从不平衡转变为平衡三元?

如何从不平衡转变为平衡三元?
EN

Stack Overflow用户
提问于 2014-10-19 23:37:02
回答 4查看 4.3K关注 0票数 6

我的目标是将一个十进制数转换为平衡三元数。转换从十进制到不平衡三元只需要除以3和保持残差的跟踪。一旦我有了这个数字的不平衡三元表示法,我似乎就找不出如何“平衡”它。

例如:十进制15在不平衡三元中为120,在平衡三元中为+-0。从120到+-0怎么走?我不知道如何处理不平衡三元表示法中的2s。

谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-10-20 03:59:34

注意,三元中的2是+-在平衡三元中,或在小数点2=3- 1中。因此,如果您从一个填充了0、1s和2s的数组开始,只需用a-1替换每2一个,然后在其左边的数字中添加1。(确保在数字的开头有一个额外的0,至少如果它以2开头。)根据您的替换方式,您可能还需要用0替换3s,并像往常一样向左边添加1。然后重复这个过程,直到没有更多的2s (或3s)。

票数 6
EN

Stack Overflow用户

发布于 2015-05-28 16:01:03

查看它的一种方法是,如果得到一个余数2x的剩余商,它就相当于得到-1的余数和x+1的剩余商数。

然后,将其转换为三元基,只需一次额外的检查。

代码语言:javascript
运行
复制
String output="";
while (n>0) {
   rem = n%3;
   n = n/3;
   if (rem == 2) {
       rem = -1;
       n++;
   }
   output = (rem==0?'0':(rem==1)?'+':'-') + output;
}

正在运行的程序可以找到这里

票数 3
EN

Stack Overflow用户

发布于 2019-10-04 18:08:51

因为我在网上错过了这个,我自己在巴黎/大奖赛的计时器-

代码语言:javascript
运行
复制
{balanced_ternary(x,maxdigits=20,chars=["y","0","1"])=my(res,st,dez,dig);
      dez=floor(log(abs(2*x))/log(3)); 
      res=x/3^dez;
      st=""; 
      for(k=0,maxdigits,
               if(k==dez+1,st=Str(st,"."));
               dig = if(res>1/2 
                       ,res--;chars[2+1]
                       ,if(res<-1/2
                              ,res++;chars[2-1]
                              ,chars[2+0]
                 )); 
               st=Str(st,dig);res*=3
           );
       return(st);}

然后

代码语言:javascript
运行
复制
balancedternary (1)    \\ %1002 = "1.00000000000000000000"
balancedternary (-1)   \\ %1003 = "y.00000000000000000000"
balancedternary (1.2)  \\ %1004 = "1.1yy11yy11yy11yy11yy1"
balancedternary (-1.2) \\ %1005 = "y.y11yy11yy11yy11yy11y"

balancedternary (27-3) \\ %1006 = "10y0.00000000000000000"
balancedternary (400)  \\ %1007 = "1yy0y11.00000000000000"
balancedternary (sqrt(3))   \\ %1008 = "1y.y1yy10y0000yy1100y0"
balancedternary (sqrt(3)/3) \\ %1009 = "1.yy1yy10y0000yy1100y0"

只是q&d,不是所有的“特殊情况”检查/编码。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26456597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档