1. 12

  2. 2

    Not to discourage the more elaborate solutions, but a comment on the simple solution discussed early on, of just incrementally increasing the size of the integers being searched over:

    Unfortunately, when a program is restarted, we lose its progress. Regions that were already explored are explored again. If we increase int to int9, Sentient finds new solutions but it also finds all the same solutions again. This is wasteful.

    Wasteful in a sense, but not that wasteful, especially if you increment in some reasonable step size, like say 8 bits at a time. For example if you first search in an int8, then increment to int16 and restart the search, you do re-visit the int8 part of the space, but that’s only 0.39% of the int16 search space. If you increase again to int24 and restart, you’ll now have wastefully triple-searched 0.0015% of the search space, and double-searched 0.39% of the search space. That’s… not that much waste. This is essentially the same reason that iterative-deepening search isn’t that wasteful.

    1. 1

      This is very true! I do this a lot today manually and it works pretty well. Often the simple solutions are best.