The "
analyze *" command analyzes and prints statistics for some number of random-state scrambles with the current loaded method (ZZ, Petrus, Roux, or custom). It is extremely useful for calculating and comparing stepwise-optimal movecount statistics for any method. Below is an example of the analyze command for the built-in ZZ method.
I typed "analyze 10000" so it ran the solution algorithm for 10,000 random-state scrambles in around 9.5 seconds (pretty good XD).
It then printed the minimum and maximum movecounts across all ZZ-solutions it found. It looks like our method is bounded by ~ [26, 48] htm.
Then it prints detailed breakdowns for each substep. The mean EOLine length for all the 10,000 solves was 6.125 which is very close to the
global mean. The best EOLine was only 2 moves, and the worst EOLine was 8 moves!
The "TOTAL" row at the bottom is the some of the column above. For the "MEAN" column, this is just the mean stepwise-optimal movecount for the method. For the "BEST" column, this represents the luckiest solve you will ever get in your entire life (2-move EOLine, 4-move left block, 2-move right block, and ZBLL skip). For the "WORST" column, this is basically the solve you do right before you smash your new Valk against the wall.
Try it out for yourself on other methods! It's super fast!
This is quite a complicated feature - please let me know if you have any questions/problems or recommendations for details/statistics that I should include!
*NOTE If you are analyzing a custom method, you may get an error about "insufficient depth." This is because your stepwise prune/search depth are not deep enough for some states that are being tested. Just increase your numbers a bit. You may also want to adjust your prune/search depths based off the outputs from the analysis (if the max depth ("WORST") of a step is 12 moves over 10,000 solves, then maybe you don't need searchdepth and prunedepth for that step to both be 10 moves

), which will save time in the pruning/searching stages.