bittableanderdemo.java

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

JAVA
69
字号
package positronic.satisfiability.demos;/** * <p>Title: TBS</p> * <p>Description: TBS</p> * <p>Copyright (c) 2005</p> * <p>Company: Positronic Software</p> * @author Kerry Michael Soileau * @version 1.0 */import java.util.ArrayList;import java.util.List;import positronic.satisfiability.bittable.BitTable;import positronic.satisfiability.bittable.BitTableAnder;import positronic.satisfiability.bittable.IBitTable;import positronic.satisfiability.elements.BitFixer;import positronic.satisfiability.elements.BooleanLiteral;import positronic.satisfiability.elements.BooleanVariable;import positronic.satisfiability.elements.Conjunction;import positronic.satisfiability.elements.IBooleanVariable;import positronic.satisfiability.elements.IProblem;import positronic.satisfiability.solutions.PartialSolution;public class BitTableAnderDemo{  public static void main(String[] args) throws Exception  {    IBitTable X=new BitTable("X",new IBooleanVariable[3][4]);    ArrayList pfix=new ArrayList();    for(int row=0;row<X.numberRows();row++)      for(int column=0;column<X.numberColumns();column++)      {        boolean value;        if(Math.random()<.5) value=true;        else value=false;        X.setBooleanVariable(row,column,BooleanVariable.getBooleanVariable(X.getName()+"_"+row+"_"+column));        pfix.add(new BitFixer(X.getBooleanVariable(row,column),value));      }    IBitTable Y=new BitTable("Y",new IBooleanVariable[3][4]);    for(int row=0;row<Y.numberRows();row++)      for(int column=0;column<Y.numberColumns();column++)      {        boolean value;        if(Math.random()<.5) value=true;        else value=false;        Y.setBooleanVariable(row,column,BooleanVariable.getBooleanVariable(Y.getName()+"_"+row+"_"+column));        pfix.add(new BitFixer(Y.getBooleanVariable(row,column),value));      }    IBitTable Z=new BitTable("Z",new IBooleanVariable[3][4]);    for(int row=0;row<X.numberRows();row++)      for(int column=0;column<X.numberColumns();column++)        Z.setBooleanVariable(row,column,BooleanVariable.getBooleanVariable(Z.getName()+"_"+row+"_"+column));    IProblem fix=new Conjunction(pfix);    IProblem bta=new BitTableAnder(X,Y,Z);    IProblem problem=new Conjunction(fix,bta);    System.out.println(problem);    List s=PartialSolution.solveList(problem);		if(s!=null && s.size()>0)    {      BooleanLiteral.interpret(s);    	System.out.println("X= \n"+X);    	System.out.println("Y= \n"+Y);    	System.out.println("Z= \n"+Z);    }    else      System.out.println("No solution.");  }}

⌨️ 快捷键说明

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