30 lines
1.2 KiB
Text
30 lines
1.2 KiB
Text
var statements; // list of 13 Bools, statements[0] is garbage to make 1 based
|
|
fcn s0 { False } // dummy for padding
|
|
fcn s1 { True }
|
|
fcn s2 { statements[-6,*].filter().len()==3 }
|
|
fcn s3 { [2..12,2].apply(statements.get).filter().len()==2 }
|
|
fcn s4 { if(statements[5]) statements[6]==statements[7]==True else True }
|
|
fcn s5 { statements[2,3].filter().len()==0 }
|
|
fcn s6 { [1..12,2].apply(statements.get).filter().len()==4 }
|
|
fcn s7 { statements[2]!=statements[3] }
|
|
fcn s8 { if(statements[7]) statements[5]==statements[6]==True else True }
|
|
fcn s9 { statements[1,6].filter().len()==3 }
|
|
fcn s10{ statements[11]==statements[12]==True }
|
|
fcn s11{ statements[7,3].filter().len()==1 }
|
|
fcn s12{ statements[1,11].filter().len()==4 }
|
|
|
|
filters:=T(s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12);
|
|
foreach n in ((2).pow(12)){ // 4k
|
|
// 5-->"0000000000101"-->("0","0"..."1")-->(F,F,...T)
|
|
statements="%013.2B".fmt(n).split("").apply('==("1"));
|
|
r:=filters.run(True); // and return list of results
|
|
if(r==statements) print("<<<<<<<<<<<<<<<<Solution");
|
|
else{
|
|
diff:=r.zipWith('!=,statements);
|
|
if(diff.sum(0)==1) print("Diff @",diff.filter1n());
|
|
}
|
|
}
|
|
fcn print(msg){
|
|
(12).pump(List,'wrap(n){ statements[n] and n or Void.Skip })
|
|
.concat(",").println(" : ",vm.pasteArgs());
|
|
}
|