=============================================================================== TODO LIST =============================================================================== - put algorithm into its own thread - add ability to write solutions to a file on the fly and/or an interrupt handler to console version - add read/write ability in Thorleif's htm format for special piece sets - create better randomization =============================================================================== KNOWN ISSUES =============================================================================== - blocks from different pieces may overlap/intersect when exploding a solved figure (this can not be trivially solved, see 4x4x4.solved.interlocking.pzl but requires to solve another type of puzzle) - probably a memory leak in the gfx version ?!? valgrind also shows memory leaks in the non gfx version - there is no way to stop a running algorithm both in the gui and pure version, except of killing the program, also gui does not redraw while an algorithm is running ------------------------------------------------------------------------------- Version 1.6 ------------------------------------------------------------------------------- - changed anchor point for exploding functionality, look nicer now - messed around some with colors and lights, cube borders are not drawn anymore - added filtering for rotational symmetries - rewrote parts of the algorithm to make symmetry filtering possible, core is now recursive - rotation functionality has been splitted from the piece class and templated so it is usable for floating point vectors ------------------------------------------------------------------------------- Version 1.5.1 ------------------------------------------------------------------------------- - command line options have been added to the console version for some algorithm control - pieces not in solution are now grey in piece window, to do this cycling through solutions has been changed - added gui elements so new algorithm parameters are available for user - added two parameters to algorithm for creating multiple solutions and randomization - new class for holding/reading/writing multiple solutions added, file format changed, using this class now ------------------------------------------------------------------------------- Version 1.5 ------------------------------------------------------------------------------- - had a look at opengl projection code and zooming, figure exploding now uses center of piece as scale point - added button to window for pieces since it has no controls whatsoever on windows ... added a dragcorner too since the space is wasted anyway - added possibility to display pieces in gui - added a statusbar/replaced old status info - rewrote interface of GFX classes, changed mouse handling - pulled all ogl code from mainwin class, created a new intermediate GFX class to prepare a GFX class for pieces - added centering both to problem class and gui, this is now performed automatically - changed some function headers and data types within classes - added a class to store solutions, finally split solve class completely from problem class - added a function coverCheck as new break criteria, based on what can be covered with remaining placeable pieces - connecktCheck is now entirely based on solving knapsack relaxations for all possible right hand sides - added a class to solve the knapsack like problem a'x = b , a from N^n, b from N such that x from {0,1}^n .. this is more efficient now and the solve class is a bit cleaner - some slight changes to the algorithm, increasing speed a bit ( extra array for bitvectors, change of inuse array, removal of one stack, conversion of the other stack to a native array,turned loop in connectCheck() ) - removed list sorting on solve class since this is pointless in the stress case (find all solutions/prove unsolvable) - added two missing singlepieces files - renamed tile -> piece which should now be correct english ;) - changed colors, now they don't look as nice as before but one can seperate pieces more easily since blue isn't as dominant as before - changed the argument type in many functions from const [...] *const to const [...] &, also changed some methods from call by value to call by reference - removed all "triple int" functions, now only the vector versions exist ------------------------------------------------------------------------------- Version 1.2 ------------------------------------------------------------------------------- - now sorting lists/pieces in solve class, this speeds up the algorithm a lot - streamlined connecktCheck method some ------------------------------------------------------------------------------- Version 1.1 ------------------------------------------------------------------------------- - solve now works on bit vectors (unsigned long long) and not on the old SomaSet class anymore, this is not as efficient as i thought - pulled solve code from problem object to a new solution object - replaced gluPickMatrix call with own code, now no glu stuff is used anymore - removed another memory leak in the basic problem class, valgrind shows some more but as far as i can tell they are not cause by my code - beautified the problem and solution gfx classes a lot, also the cubearray class got some polishing - program crashes when solving the somatic.pzl with one-block pieces =/ this has been fixed (there were not enought savety 0 blocks to prevent array overflows) - changed editing style from Stephans two-click mode to one-click mode =D - removed all "using namespace std;" directives, replaced them with std:: where appropriate - removed Stephans cube class, together with triangle_mesh and tr_msh classes, cube data is now created as static data within the cube class and immediatly put into display lists - introduced a new naming scheme for classnames, adopted filenames as well - cleanup of the basix gfx class and the problem and solution gfx class, the rotation core is shared correctly now, found a small memory leak while doing this (the one mentioned above ?) - splitted somatic.cpp into 5 files, seperating the main window and the help window class - moved .h to .hpp files, introduced a consistent naming scheme - cleaned up the vector math class, moved remaining methods into vector template and point class - removed whitespace skip methods, they can not be used with the vector template anyways - major cleanup of the points object code, removed all the get/set stuff - added a small benchmark program ------------------------------------------------------------------------------- Version 1.0 ------------------------------------------------------------------------------- - initial release