naturalnumberincrementer.java

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

JAVA
64
字号
package positronic.satisfiability.naturalnumber;import positronic.satisfiability.elements.*;public class NaturalNumberIncrementer extends Problem implements IProblem{	private static final long serialVersionUID = 1L;    public NaturalNumberIncrementer(INaturalNumber X, INaturalNumber Y, INaturalNumber C) throws Exception  {  	IBooleanVariable bx=X.getBooleanVariable(0);  	IBooleanVariable by=Y.getBooleanVariable(0);  	IBooleanVariable bc=C.getBooleanVariable(0);  	  	this.setClauses(new IClause[]  	{  			Clause.newClause().or(bx).or(by).or(bc),  			Clause.newClause().or(bx).or(by).orNot(bc),  			Clause.newClause().or(bx).orNot(by).orNot(bc),  			Clause.newClause().orNot(bx).or(by).or(bc),  			Clause.newClause().orNot(bx).orNot(by).or(bc),  			Clause.newClause().orNot(bx).orNot(by).orNot(bc)  	});  	IProblem[] tba=new TwoBitAdder[NaturalNumber.LENGTH-1];  	for(int i=0;i<tba.length;i++)  		tba[i]=new TwoBitAdder(  			C.getBooleanVariable(i),  			X.getBooleanVariable(i+1),  			Y.getBooleanVariable(i+1),  			C.getBooleanVariable(i+1));  	IProblem p=new Conjunction(this,new Conjunction(tba));  	    this.setClauses(p.getClauses());  }    public NaturalNumberIncrementer(INaturalNumber X, INaturalNumber Y) throws Exception  {  	INaturalNumber C=new NaturalNumber();  	  	IBooleanVariable bx=X.getBooleanVariable(0);  	IBooleanVariable by=Y.getBooleanVariable(0);  	IBooleanVariable bc=C.getBooleanVariable(0);  	  	this.setClauses(new IClause[]  	{  			Clause.newClause().or(bx).or(by).or(bc),  			Clause.newClause().or(bx).or(by).orNot(bc),  			Clause.newClause().or(bx).orNot(by).orNot(bc),  			Clause.newClause().orNot(bx).or(by).or(bc),  			Clause.newClause().orNot(bx).orNot(by).or(bc),  			Clause.newClause().orNot(bx).orNot(by).orNot(bc)  	});  	IProblem[] tba=new TwoBitAdder[NaturalNumber.LENGTH-1];  	for(int i=0;i<tba.length;i++)  		tba[i]=new TwoBitAdder(  			C.getBooleanVariable(i),  			X.getBooleanVariable(i+1),  			Y.getBooleanVariable(i+1),  			C.getBooleanVariable(i+1));  	IProblem p=new Conjunction(this,new Conjunction(tba));  	    this.setClauses(p.getClauses());  }}

⌨️ 快捷键说明

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