Heuristic Crypto Problem Solver

Preface but also there's nothing after the preface

A heuristic can be defined as a general rule that can be applied to a problem to solve it. As an example suppose one was trying to solve some multiplication problems. In this realm of problems, a number of heuristics can be made use of (assuming that a calculator is not at hand.) For instance, consider the rule "if one of the numbers to be multiplied is ten, then add a zero to the end of the other number to get the product". This is a heuristic, and is commonly used by those familiar with base 10 multiplication. It can even be extended to apply to other base systems by substituting ten for the number equal to the radix! With it in hand, a number of multiplication problems become much easier for humans to solve.

Crypto problems are problems which consist of a string of numbers, with one of the numbers being designated the goal. In order to solve a crypto problem, one must get from the numbers to the goal using the four basic operations of multiplication, division, addition, and subtraction, with each number being used exactly once. The crypto heuristic problem solver is a program written using prolog that takes these problems and solves them.

Solving crypto problems may seem rather uninteresting, but the intriguing aspect of this program does not have actually have all that much to do with crypto problems per se. Instead, what's interesting about the heuristic problem solver is how it goes about solving these problems, namely by heuristics. The problem solver takes in a problem and one by one examines it through the lense of each heuristic it has access to, checking to see if the condition in the heuristic exists in the problem (if we think to our example, this would be true if one of the numbers in a multiplication was ten). Should this be true, the heuristic problem then uses the heuristic to solve the problem.

This way of solving problems is actually quite similar to how humans solve problems, and it can actually be surprisingly effective. This heuristic problem solver currently contains 8 different rules for solving crypto problems, all of them relatively simple and easy for humans to execute. The specifics of the each heuristic can be found here. Using just these heuristics a surprising 64 out of 100 problems were solved from a random set of problems!