New patches: [unrevert anonymous**20050818145045] < > { hunk ./src/lib/disassembler_0.cpp 232 * to distinguish "good" and "bad" moves the function returns true, if less maxPieces * have to be moved, this value should not be larger than halve of the pieces in the puzzle */ -bool disassembler_0_c::checkmovement(void) { +bool disassembler_0_c::checkmovement(int maxPieces) { for (int i = 0; i < next_pn; i++) check[i] = movement[i] != 0; hunk ./src/lib/disassembler_0.cpp 259 if (movement[i] - matrix[nd][j + piecenumber * i] > movement[j]) { if (movement[j] == 0) { moved_pieces++; - if (moved_pieces > (next_pn / 2)) + if (moved_pieces > maxPieces) return false; } movement[j] = movement[i] - matrix[nd][j + piecenumber * i]; hunk ./src/lib/disassembler_0.cpp 284 if (movement[i] - matrix[nd][i + piecenumber * j] > movement[j]) { if (movement[j] == 0) { moved_pieces++; - if (moved_pieces > (next_pn / 2)) + if (moved_pieces > maxPieces) return false; } movement[j] = movement[i] - matrix[nd][i + piecenumber * j]; hunk ./src/lib/disassembler_0.cpp 350 * our selected piece as far as we want, if this results in more than halve of the * pieces beeing moved we don't do this because this would be stupid */ - if (checkmovement()) { + if (checkmovement(next_pn/2)) { node4_c * n = new node4_c(next_pn); hunk ./src/lib/disassembler_0.h 69 * the functions returns the next possible state or 0 if no other state was found */ node4_c * find(node4_c * searchnode); - bool checkmovement(void); + bool checkmovement(unsigned int maxPieces); unsigned short disassembler_0_c::subProbGroup(node4_c * st, voxel_type * pn, bool cond, int piecenumber); } Context: [remove the inverse array again, its not needed Andreas Röver **20050818144226] [comment the movement cache class Andreas Röver **20050818143659] [some comment updates and cleanup Andreas Röver **20050818143609] [optimize the 2nd part of bills algorithm Andreas Röver **20050818143240 as the again value only counts for each direction we do now each direction alone one after another and not together ] [remove some unused functions from disassembly node Andreas Röver **20050818143207] [handle more than one piece at the leafs of the disassm trees Andreas Röver **20050818143006 with the new group feature the ends of the disassm trees can now contain more than one piece, so we need to use a loop at the tree end and place all the pieces ] [remove unused variable assembly from object disaasmtomoves Andreas Röver **20050818142806 this variable is not needed any longer because the positions of the pieces are absolute ] [rename disassembler_4 to disassembler_0 Andreas Röver **20050817200635] [remove all the old disassemblers Andreas Röver **20050817195548] [improve disassembler_4 so that it now uses a global movement calculation cache Andreas Röver **20050817194617 spee should now be on par with puzzlesolver3d even for easy living ] [create a placement class that represents the position of a piece Andreas Röver **20050814101719] [redesign disassembler interface so that we can reuse the same object multiple times Andreas Röver **20050814075221 this makes is possible to use the movement cache more than once by just keeping the object and the appended movement cache. This will make is possible (once the movement cache can cope with transformations to reuse the cache from older assemblies ] [document the new edit modes and piece groups Andreas Röver **20050813173839] [improve editing possibilities Andreas Röver **20050813140652 editing now always fills rectangles instead of single cubes a new button alows to toggle between editing all layers and only the current one ] [avoid segfault on quit Andreas Röver **20050813121410] [don't make inside holy for inported puzzles Andreas Röver **20050813120549] [bugfix for pressing cancel in inport window Andreas Röver **20050813120438] [preparation for release 0.1.7 Andreas Röver **20050811195127] [remove warnings (signed unsigned comparisons) Andreas Röver **20050811194501] [include an inverse transformation array and replace the number of transformations with a constant Andreas Röver **20050811191753] [add transformation to the node. This might enable us later on to rotate pieces Andreas Röver **20050811172617] [add an import function for puzzle solver files Andreas Röver **20050811162423] [move the node definition into the disassembler files so that each disassembler can have its own Andreas Röver **20050809161108 this starts to get necessary because we will need to have a different node for the 4th disassembler because it may get rotations included and so it needs a 4th field specifying the rotation ] [fix for voxel drawing besides variable voxels Andreas Röver **20050809152022] [problems may not yet have a result when they are saved Andreas Röver **20050808194823] [burr grower can select the problem to work with Andreas Röver **20050808190330] [implement piece groups Andreas Röver **20050808185859 This allows you to put piece into groups that don't need to be taken apart to solve the disassembly of the puzzle. This is required for example for puzzles like "cube in cage" where the cage consists of 3 movable pieces that can not be taken apart. The gui currently alows you to increase the group number. Group number 0 is special, it means that the piece doesn't belong to any group at all and must be single in the disassembled puzzle ] [add a function to calculate the inverse transformation Andreas Röver **20050805103018] [get the burr Grower working again Andreas Röver **20050804074725] [problems are NOT editable, when solved Andreas Röver **20050804074653] [add paragraph about the errors in the text Andreas Röver **20050804074636] [TAG 0.1.6 Andreas Röver **20050713180849] Patch bundle hash: ba63342cf4c3744d15523c6d5aa59580ad1b6237