I am currently thinking about how to store frequently used data. It is designed to be stored in an array and is currently being created as follows.
public static void generateData() {
int index = 0;
for(int a1 = 0; a1 < 52; a1++) {
for(int a2 = a1 + 1; a2 < 52; a2++) {
for(int a3 = a2 + 1; a3 < 52; a3++) {
for(int a4 = a3 + 1; a4 < 52; a4++) {
for(int a5 = a4 + 1; a5 < 52; a5++) {
for(int a6 = a5 + 1; a6 < 52; a6++) {
for(int a7 = a6 + 1; a7 < 52; a7++) {
data[index++] = compute(a1,a2,a3,a4,a5,a6,a7);
}
}
}
}
}
}
}
}
Now my problem is to quickly access the calculated data using parameters a1-a7. The only approach I could think of was to repeat the same as during the iteration, until the parameters become the same as this.
public static int getIndex(int i1, int i2, int i3, int i4, int i5, int i6, int i7) {
int index = 0;
for(int a1 = 0; a1 < 52; a1++) {
for(int a2 = a1 + 1; a2 < 52; a2++) {
for(int a3 = a2 + 1; a3 < 52; a3++) {
for(int a4 = a3 + 1; a4 < 52; a4++) {
for(int a5 = a4 + 1; a5 < 52; a5++) {
for(int a6 = a5 + 1; a6 < 52; a6++) {
for(int a7 = a6 + 1; a7 < 52; a7++) {
if(a1 == i1 && a2 == i2 && a3 == i3 && a4 == i4 && a5 == i5 && a6 == i6 && a7 == i7) {
return index;
} else {
index++;
}
}
}
}
}
}
}
}
throw new IllegalArgumentException();
}
, , . - , .
. Texas hold'em .