20 import static ca.uqac.lif.cep.Connector.BOTTOM;
21 import static ca.uqac.lif.cep.Connector.connect;
22 import static ca.uqac.lif.cep.Connector.INPUT;
23 import static ca.uqac.lif.cep.Connector.OUTPUT;
24 import static ca.uqac.lif.cep.Connector.TOP;
27 import java.io.FileInputStream;
28 import java.io.IOException;
30 import ca.uqac.lif.cep.GroupProcessor;
31 import ca.uqac.lif.cep.Processor;
32 import ca.uqac.lif.cep.functions.ApplyFunction;
33 import ca.uqac.lif.cep.functions.Constant;
34 import ca.uqac.lif.cep.functions.Cumulate;
35 import ca.uqac.lif.cep.functions.CumulativeFunction;
36 import ca.uqac.lif.cep.functions.FunctionTree;
37 import ca.uqac.lif.cep.functions.IdentityFunction;
38 import ca.uqac.lif.cep.functions.StreamVariable;
39 import ca.uqac.lif.cep.functions.TurnInto;
40 import ca.uqac.lif.cep.io.Print.Println;
41 import ca.uqac.lif.cep.io.ReadLines;
42 import ca.uqac.lif.cep.tmf.Filter;
43 import ca.uqac.lif.cep.tmf.Fork;
44 import ca.uqac.lif.cep.tmf.KeepLast;
45 import ca.uqac.lif.cep.tmf.Pump;
46 import ca.uqac.lif.cep.tmf.Slice;
47 import ca.uqac.lif.cep.util.Numbers;
48 import ca.uqac.lif.cep.util.Strings;
89 public static void main(String[] args)
throws IOException
95 String filename =
"millionbase-2.22.pgn";
98 Pump pump = (Pump) connect(
new ReadLines(
99 new FileInputStream(
new File(filename))),
new Pump());
102 Processor fork = connect(pump,
new Fork());
103 Processor filter = connect(fork, TOP,
new Filter(), TOP);
104 Processor result = connect(fork, BOTTOM,
105 new ApplyFunction(
new FunctionTree(Strings.startsWith, StreamVariable.X,
new Constant(
"[Result"))), INPUT);
106 connect(result, OUTPUT, filter, BOTTOM);
109 Processor slice = connect(filter,
new Slice(
110 new IdentityFunction(1),
new GroupProcessor(1, 1) {
112 TurnInto one =
new TurnInto(1);
113 Processor sum = connect(one,
114 new Cumulate(
new CumulativeFunction<Number>(Numbers.addition)));
115 addProcessors(one, sum).associateInput(one).associateOutput(sum);
120 connect(slice,
new KeepLast(),
new Println());
123 long start = System.currentTimeMillis();
125 long stop = System.currentTimeMillis();
126 System.out.println(
"Total time: " + (stop - start) +
" ms");
Process a database of chess games to calculate the number of white wins vs.