Remove redundant variable.
Do away with the last method in the object Movement classes. Remove the object Movement classes altogether.From now on the implementation of a TwistyPuzzle is 100% data, no code at all.Next step: make the implementation a (generated?) (XML?) file.
Major abstraction - automatically compute the 'computeRowFromOffset()' function from CUTS.Still one thing left: it appears like the CUTS of Mega/Kilominxes are not correct.
Abstract the next function, computeRowFromOffset(), out of the individual Movement classes.Still two issues:
1) mysterious 1.5 multiplier in Movement122) in Movement8, moving the offset works only if the rotAxis are face-turning, i.e. they connect the centers of the opposing faces of the octahedron.
Minor
Abstract out some methods from the Movement classes. only two remain now: rowFromOffset and enabledAxis.