generate a string
I'm trying to generate a string that represents a sum of products expression.
Here are some examples of strings for various degrees:
// degree = 2
if (t >= knot[i] && t <= knot[i+1] && knot[i] != knot[i+1]){
d = a(i,k);
}
elseif (t >= knot[i+1] && t <= knot[i+2] && knot[i+1] != knot[i+2]){
d = b(i,k);
}
// degree = 3
if (t >= knot[i] && t <= knot[i+1] && knot[i] != knot[i+1]){
d = a(i,k)*a(i,k-1);
}
elseif (t >= knot[i+1] && t <= knot[i+2] && knot[i+1] != knot[i+2]){
d = a(i,k)*b(i,k-1) + b(i,k)*a(i+1,k-1);
}
elseif (t >= knot[i+2] && t <= knot[i+3] && knot[i+2] != knot[i+3]){
d = b(i,k)*b(i+1,k-1);
}
// degree = 4
if (t >= knot[i] && t <= knot[i+1] && knot[i] != knot[i+1]){
d = a(i,k)*a(i,k-1)*a(i,k-2);
}
elseif (t >= knot[i+1] && t <= knot[i+2] && knot[i+1] != knot[i+2]){
d = a(i,k)*a(i,k-1)*b(i,k-2) + a(i,k)*b(i,k-1)*a(i+1,k-2) + b(i,k)*a(i+1,k-1)*a(i+1,k-2);
}
elseif (t >= knot[i+2] && t <= knot[i+3] && knot[i+2] != knot[i+3]){
d = a(i,k)*b(i,k-1)*b(i+1,k-2) + b(i,k)*a(i+1,k-1)*b(i+1,k-2) + b(i,k)*b(i+1,k-1)*a(i+2,k-2);
}
elseif (t >= knot[i+3] && t <= knot[i+4] && knot[i+3] != knot[i+4]){
d = b(i,k)*b(i+1,k-1)*b(i+2,k-2);
}
// degree = 5
if (t >= knot[i] && t <= knot[i+1] && knot[i] != knot[i+1]){
d = a(i,k)*a(i,k-1)*a(i,k-2)*a(i,k-3);
}
elseif (t >= knot[i+1] && t <= knot[i+2] && knot[i+1] != knot[i+2]){
d = a(i,k)*a(i,k-1)*a(i,k-2)*b(i,k-3) + a(i,k)*a(i,k-1)*b(i,k-2)*a(i+1,k-3) + a(i,k)*b(i,k-1)*a(i+1,k-2)*a(i+1,k-3) + b(i,k)*a(i+1,k-1)*a(i+1,k-2)*a(i+1,k-3);
}
elseif (t >= knot[i+2] && t <= knot[i+3] && knot[i+2] != knot[i+3]){
d = a(i,k)*a(i,k-1)*b(i,k-2)*b(i+1,k-3) + a(i,k)*b(i,k-1)*a(i+1,k-2)*b(i+1,k-3) + a(i,k)*b(i,k-1)*b(i+1,k-2)*a(i+2,k-3) + b(i,k)*a(i+1,k-1)*a(i+1,k-2)*b(i+1,k-3) + b(i,k)*a(i+1,k-1)*b(i+1,k-2)*a(i+2,k-3) + b(i,k)*b(i+1,k-1)*a(i+2,k-2)*a(i+2,k-3);
}
elseif (t >= knot[i+3] && t <= knot[i+4] && knot[i+3] != knot[i+4]){
d = a(i,k)*b(i,k-1)*b(i+1,k-2)*b(i+2,k-3) + b(i,k)*a(i+1,k-1)*b(i+1,k-2)*b(i+2,k-3) + b(i,k)*b(i+1,k-1)*a(i+2,k-2)*b(i+2,k-3) + b(i,k)*b(i+1,k-1)*b(i+2,k-2)*a(i+3,k-3);
}
elseif (t >= knot[i+4] && t <= knot[i+5] && knot[i+4] != knot[i+5]){
d = b(i,k)*b(i+1,k-1)*b(i+2,k-2)*b(i+3,k-3);
}
I have figured out everything except how the values inside the a() function change.
Here is my current code that generates the strings.
publicclass Test{
publicstaticvoid main(String[] args){
int degree = 5;
for (int j = 0; j < degree; j++){
//int a = i+j;
//int b = i+j+1;
//if (t >= knot[a] && t <= knot[b] && knot[a] != knot[b]) {
int numBits = degree - 1;
int max = 1;
while (numBits-- >= 1)
max *= 2;
System.out.println("");
String s ="";
int x = degree - 1;
for (int k = 0; k < max; k++){
int bits = 0;
for (int m = 0; m < degree - 1; m++){
if (((k >> m) & 0x00000001) != 0)
bits++;
}
if (bits == j){
int bc = 0;
for (int m = 0; m < degree - 1; m++){
if (((k >> m) & 0x00000001) != 0){
s +="b(i+" + (bc++) +",k-" + m +")";
}
else{
s +="a(i+" +"?" +",k-" + m +")";
}
}
s +=" + ";
}
}
System.out.println(s);
//break;
//}
}
}
}

