nissy-classic

Stable branch of nissy
git clone https://git.tronto.net/nissy-classic
Download | Log | Files | Refs | README | LICENSE

commit 2bbd9cd6024e32009ddee908b5328918601ff9f8
parent c03434177dd840e203658205bbe82006e08da028
Author: Sebastiano Tronto <sebastiano.tronto@gmail.com>
Date:   Tue,  7 Dec 2021 21:58:41 +0100

Expanded on previous comment: now it contains an idea of solution

Diffstat:
Msrc/pruning.c | 19+++++++++++++++++++
1 file changed, 19 insertions(+), 0 deletions(-)

diff --git a/src/pruning.c b/src/pruning.c @@ -167,6 +167,25 @@ genptable_branch(PruneData *pd, uint64_t ind, int d, Move *ms) * This is a terribly inefficient way to deal with this. * TODO: make it more efficient. */ + /* + * IDEA (with the example of khuge in mind): + * The problem only happens when two position that are actually + * in the same class are considered different. This can happen + * because only CO is used to determine which transformation + * to apply to get a representative for the class. So if the + * corners are in a self-symmetric position more than one + * transformation to the representative is possible, only one + * (essentially at random) is picked, but this is not necessarily + * the correct one if the edges are not in a self-symmetric + * position. + * SOLUTION: Keep in mind which corner positions are + * self-symmetric (add a field to symdata). Add a function + * to coord that tells if a position has this problem, or + * even the list of transformations that need to be tried. + * The second option is a bit more complicated but more + * efficient and allows for removing the ntrans and trans + * field from struct coordinate. + */ for (i = 0; i < pd->coord->ntrans; i++) { c = i == 0 ? ci : apply_trans(pd->coord->trans[i], ci);