diff options
Diffstat (limited to 'src/pruning.c')
| -rw-r--r-- | src/pruning.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/pruning.c b/src/pruning.c index b000eb7..5073d69 100644 --- a/src/pruning.c +++ b/src/pruning.c | |||
| @@ -167,6 +167,25 @@ genptable_branch(PruneData *pd, uint64_t ind, int d, Move *ms) | |||
| 167 | * This is a terribly inefficient way to deal with this. | 167 | * This is a terribly inefficient way to deal with this. |
| 168 | * TODO: make it more efficient. | 168 | * TODO: make it more efficient. |
| 169 | */ | 169 | */ |
| 170 | /* | ||
| 171 | * IDEA (with the example of khuge in mind): | ||
| 172 | * The problem only happens when two position that are actually | ||
| 173 | * in the same class are considered different. This can happen | ||
| 174 | * because only CO is used to determine which transformation | ||
| 175 | * to apply to get a representative for the class. So if the | ||
| 176 | * corners are in a self-symmetric position more than one | ||
| 177 | * transformation to the representative is possible, only one | ||
| 178 | * (essentially at random) is picked, but this is not necessarily | ||
| 179 | * the correct one if the edges are not in a self-symmetric | ||
| 180 | * position. | ||
| 181 | * SOLUTION: Keep in mind which corner positions are | ||
| 182 | * self-symmetric (add a field to symdata). Add a function | ||
| 183 | * to coord that tells if a position has this problem, or | ||
| 184 | * even the list of transformations that need to be tried. | ||
| 185 | * The second option is a bit more complicated but more | ||
| 186 | * efficient and allows for removing the ntrans and trans | ||
| 187 | * field from struct coordinate. | ||
| 188 | */ | ||
| 170 | for (i = 0; i < pd->coord->ntrans; i++) { | 189 | for (i = 0; i < pd->coord->ntrans; i++) { |
| 171 | c = i == 0 ? ci : | 190 | c = i == 0 ? ci : |
| 172 | apply_trans(pd->coord->trans[i], ci); | 191 | apply_trans(pd->coord->trans[i], ci); |
