package com.cnn;
import java.io.*;
import java.util.*;
public class test {
//"1011011111101011"-47083--
//"1111100111100100"-63972---
//"1101111111110100"-57332--
//"1011011011011110"-46814----
//"1010001010111111"-41663--
//"1000111011111011"-36603--
//"0011111011110111"-16119--
static String str = "1011011011011110";
private int op=46814;
private List<String> list;
private File f;
private List<SubStr> SubClass = new ArrayList<SubStr>();
public test() throws FileNotFoundException{
addFiletoList();
}
public void addFiletoList() throws FileNotFoundException{
f = new File("CNN.txt");
Scanner s = new Scanner(f,"GBK");
list = new ArrayList<String>();
while(s.hasNext()){
String str = s.nextLine();
list.add(str);
}
s.close();
}
/**
* 打印所有线性可分函数
*/
/*
public void pri(){
for(int i=0; i<list.size(); i++){
System.out.println(list.get(i));
}
}
*/
/**
* 返回字符串str中所有0的索引。
* @param s
* @return
*/
public List<Integer> count(){
int index = 0;
List<Integer> l = new ArrayList<Integer>();
while(str.indexOf('0', index)!=-1){
index = str.indexOf('0', index);
l.add(index);
index++;
}
return l;
}
/**
* 返回字符串str中必须为'1'的位索引值
* @return
*/
public List<Integer> countAnd(){
int index = 0;
List<Integer> l = new ArrayList<Integer>();
while(str.indexOf('1', index)!=-1){
index = str.indexOf('1', index);
l.add(index);
index++;
}
return l;
}
/**
* 指定字符串中必须为0的位,实例化SubStr类,添加到SubClass中。
* 并排序。
* @param index
* @return
*/
public List<SubStr> subList(List<Integer> index){
for(int i=0; i<list.size(); i++){
boolean flag = true;
for(int j=0; j<index.size(); j++){
if(list.get(i).charAt(index.get(j))!='0'){
flag = false;
break;
}
}
if(flag){
int count=0;
for(int i1=0; i1<list.get(i).length(); i1++){
if (list.get(i).charAt(i1)=='1'){
count++;
}
}
SubStr subs = new SubStr(list.get(i),count);
SubClass.add(subs);
}
}
ComparatorUser comparator=new ComparatorUser();
Collections.sort(SubClass, comparator);
System.out.println("********");
for (int h=0; h<SubClass.size(); h++){
System.out.println(SubClass.get(h).getStr());
}
return SubClass;
}
public List<SubStr> subListAnd(List<Integer> index){
for(int i=0; i<list.size(); i++){
boolean