I have been using a four step procedure for solving puzzles. I believe steps one, two and four can be fully automated in software.
I applied the algorithm manually on the last 200 puzzles.
It would be nice to have these available as a button each. This would improve the solving rate and remove the tedious parts of the process.
These ideas appear in the user guides so a lot of people might appreciate the automation.
Step 1 - Fill stacks with alternating A-U U-A pairs
Pseudocode
____Start at base 1 and apply to each base in turn
____IF this base should be part of a pair
______IF an A-U or U-A bond doesn’t already exist here
________IF this is the first base OR the the previous base had an A-U pair
__________Place U-A pair
________ELSE
__________Place A-U pair
Step 2 - Stabilise loops by placing Gs
Pseudocode
____ Start at base 1 and apply to each base in turn
____IF this base should NOT be part of a pair
______IF the previous base should be part of a pair
__________Change base to G
__________IF the segment energy is the same or greater
_______________Undo
Step 3 - Place G-C pairs (and G-U pairs if required) to solve structure and all constraints except the number of G-U pairs
This is the human step
Step 4 - Place G-U pairs
[The algorithm worked 100% for the 200 puzzle test.]
Pre-condition - assumes structure and all constraints except the number of G-U pairs are solved.
Pseudocode
____Start at base 1 and apply to each base in turn (until G-U pairs constraint is satisfied)
______IF the base is an A-U or U-A pair AND NOT the top or bottom of a stack
_________Place G-U pair
_________IF the structure or any other constraint (except G-U pairs) are broken
_____________Undo
____IF that isn’t enough
______Start at base 1 and apply to each base in turn (until G-U pairs constraint is satisfied)
_________IF the base is an A-U or U-A pair AND IS the top or bottom of a stack
____________Place G-U pair
____________IF the structure or any other constraint (except G-U pairs) are broken
_______________Undo
____IF that still isn’t enough
______Start at base 1 and apply to each base in turn (until G-U pairs constraint is satisfied)
__________IF the base is an A-U or U-A pair
_____________Place G-U pair
_____________IF the structure or any other constraint (except G-U pairs) are broken
________________Undo
____IF that still isn’t enough!
______Start at base 1 and apply to each base in turn (until G-U pairs constraint is satisfied)
__________IF the base is an A-U or U-A pair
______________Place U-G pair
______________IF the structure or any other constraint (except G-U pairs) are broken
________________Undo