naturalnumbermultiplier.java

来自「Java版的SAT求解器」· Java 代码 · 共 58 行

JAVA
58
字号
package positronic.satisfiability.naturalnumber;/** * <p>Title: NaturalNumberMultiplier</p> * <p>Description: TBS</p> * <p>Copyright (c) 2005</p> * <p>Company: Positronic Software</p> * @author Kerry Michael Soileau * @version 1.0 */import positronic.satisfiability.elements.*;public class NaturalNumberMultiplier extends Problem implements IProblem{  private static final long serialVersionUID = 1L;    public NaturalNumberMultiplier(INaturalNumber X, INaturalNumber Y, INaturalNumber Z) throws Exception  {    if(INaturalNumber.LENGTH==1)    {      NaturalNumberBitMultiply p=new NaturalNumberBitMultiply(X.getBooleanVariable(0),Y,Z);      this.setClauses(p.getClauses());    }    if(INaturalNumber.LENGTH>=2)    {      //P      INaturalNumber[] P=new INaturalNumber[INaturalNumber.LENGTH];      for(int i=0;i<INaturalNumber.LENGTH;i++)        P[i]=new NaturalNumber("P["+i+"]");      NaturalNumberBitMultiply[] qbs=new NaturalNumberBitMultiply[INaturalNumber.LENGTH];      for(int i=0;i<INaturalNumber.LENGTH;i++)        qbs[i]=new NaturalNumberBitMultiply(X.getBooleanVariable(i),Y,P[i]);      //D      INaturalNumber[] D=new INaturalNumber[INaturalNumber.LENGTH-1];      for(int i=0;i<INaturalNumber.LENGTH-1;i++)        D[i]=new NaturalNumber("D["+i+"]");      NaturalNumberDoubler[] tdblr=new NaturalNumberDoubler[INaturalNumber.LENGTH-1];      INaturalNumber[] S=new INaturalNumber[INaturalNumber.LENGTH-2];      for(int i=0;i<INaturalNumber.LENGTH-2;i++)        S[i]=new NaturalNumber("S["+i+"]");      for(int i=0;i<INaturalNumber.LENGTH-2;i++)        tdblr[i]=new NaturalNumberDoubler(S[i],D[i]);      tdblr[INaturalNumber.LENGTH-2]=new NaturalNumberDoubler(P[INaturalNumber.LENGTH-1],D[INaturalNumber.LENGTH-2]);      //S      NaturalNumberAdder[] waddr=new NaturalNumberAdder[INaturalNumber.LENGTH-2];      for(int i=0;i<INaturalNumber.LENGTH-2;i++)        waddr[i]=new NaturalNumberAdder(P[i+1],D[i+1],S[i]);      NaturalNumberAdder zaddr=new NaturalNumberAdder(P[0],D[0],Z);      IProblem qbsc=new Conjunction(qbs);      IProblem tdblrc=new Conjunction(tdblr);      IProblem waddrc=new Conjunction(waddr);      IProblem p=new Conjunction(new IProblem[]{qbsc,tdblrc,waddrc,zaddr});      this.setClauses(p.getClauses());    }  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?