private List<List<String>> multiply(List<List<String>> a, List<List<String>> b) {
List<List<String>> c = new ArrayList<>();
for (int i = 0; i < a.size(); i++) {
List<String> l1 = a.get(i);
List<String> l3 = new ArrayList<>();
for (int j = 0; j < b.get(i).size(); j++) {
StringBuilder s = new StringBuilder();
for (int k = 0; k < l1.size(); k++) {
List<String> l2 = b.get(k);
s.append("(").append(l1.get(k)).append(")*(").append(l2.get(j)).append(")+");
}
s = new StringBuilder(StringUtils.left(s.toString(), s.length() - 1));
l3.add(s.toString());
}
c.add(l3);
}
return c;
}
private void printMat(String c, List<List<String>> m) {
System.out.println(c + ":");
for (List<String> list : m) {
System.out.print("( ");
for (String string : list) {
System.out.print(string + " ");
}
System.out.println(")");
}
}
private void printAndSolveMat(String name, List<List<String>> m) {
System.out.println(name + ":");
for (List<String> list : m) {
System.out.print("( ");
for (String string : list) {
System.out.print(string + " ");
}
System.out.println(")");
}
System.out.println(name + ":");
for (List<String> list : m) {
System.out.print("( ");
for (String string : list) {
Node o = Compiler.compile(string);
System.out.print(o.simplify().beautify() + " ");
}
System.out.println(")");
}
System.out.println(name + ":");
for (List<String> list : m) {
System.out.print("( ");
for (String string : list) {
Node o = Compiler.compile(string);
System.out.print(o.simplify().beautify().val() + " ");
}
System.out.println(")");
}
}