naturalnumbermapper.java
来自「Java版的SAT求解器」· Java 代码 · 共 72 行
JAVA
72 行
package positronic.satisfiability.naturalnumber;import positronic.satisfiability.elements.IBooleanVariable;import positronic.satisfiability.elements.IProblem;import positronic.satisfiability.elements.Mapper;import positronic.satisfiability.elements.Problem;import positronic.satisfiability.exceptions.NaturalNumberMapperException;/** * <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 */public class NaturalNumberMapper extends Problem implements IProblem{ private static final long serialVersionUID = 1L; private INaturalNumber domainVariable; private INaturalNumber rangeVariable; public NaturalNumberMapper(INaturalNumber domainVariable, long[] domainData, INaturalNumber rangeVariable, long[] rangeData) throws Exception { if(domainData==null || rangeData==null) throw new NaturalNumberMapperException("A null long[] was passed to a constructor."); if(domainVariable==null || rangeVariable==null) throw new NaturalNumberMapperException("A null INaturalNumber was passed to a constructor."); if(domainData.length==0 || rangeData.length==0) throw new NaturalNumberMapperException("An array of length zero was passed to a constructor."); if(domainData.length != rangeData.length) throw new NaturalNumberMapperException("Arrays of unequal length were passed to a constructor."); this.domainVariable=domainVariable; this.rangeVariable=rangeVariable; IProblem[] px=new Problem[domainData.length]; IProblem[] py=new Problem[rangeData.length]; for(int i=0;i<domainData.length;i++) { px[i]=new NaturalNumberFixer(this.domainVariable,(long)domainData[i]); py[i]=new NaturalNumberFixer(this.rangeVariable,(long)rangeData[i]); } IProblem pcomb=new Mapper(px,py); this.setClauses(pcomb.getClauses()); } public NaturalNumberMapper(long[] x, long[] y, INaturalNumber X, INaturalNumber Y, IBooleanVariable[] b) throws Exception { if(x==null || y==null) throw new NaturalNumberMapperException("A null long[] was passed to a constructor."); if(X==null || Y==null) throw new NaturalNumberMapperException("A null INaturalNumber was passed to a constructor."); if(b==null) throw new NaturalNumberMapperException("A null IBooleanVariable[] was passed to a constructor."); if(x.length==0 || y.length==0) throw new NaturalNumberMapperException("An array of length zero was passed to a constructor."); if(x.length != y.length) throw new NaturalNumberMapperException("Arrays of unequal length were passed to a constructor."); this.domainVariable=X; this.rangeVariable=Y; IProblem[] px=new Problem[x.length]; IProblem[] py=new Problem[y.length]; for(int i=0;i<x.length;i++) { px[i]=new NaturalNumberFixer(this.domainVariable,(long)x[i]); py[i]=new NaturalNumberFixer(this.rangeVariable,(long)y[i]); } IProblem pcomb=new Mapper(px,py,b); this.setClauses(pcomb.getClauses()); } public INaturalNumber getDomainVariable() { return domainVariable; } public INaturalNumber getRangeVariable() { return rangeVariable; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?