Here's a puzzle game. I call it Reverse the List of Integers

Rule Clarifications and Constraints

  • Start from a list of positive, distinct integers; goal is to reach its reverse using:
    • Split: replace one integer by two smaller positive integers that sum to it.
    • Combine: replace two adjacent integers by their sum.
  • Additional constraints:
    • No integer may exceed the original maximum.
    • No move may create a duplicate value anywhere in the list.
  • Later clarification: only positive integers (no zero, no negatives) and combining is on adjacent elements only.
  • Some ambiguity noted early (e.g., whether negatives or non-adjacent operations are allowed), but consensus converges on the stricter, positive/adjacent interpretation.

Solvable vs Unsolvable Configurations

  • Some lists are provably unsolvable:
    • Examples: [3,2,1], [2,1], [3,2]; also any list containing all integers in a consecutive range [1..n] (in any order).
    • Intuition: with a full consecutive set, any split or merge either creates a duplicate or exceeds the max.
  • Certain patterns like [n, n+1] are unsolvable for small n, but for larger n variants like [n, n-1] are shown solvable with constructive sequences.
  • More complex classes of unsolvable lists are discussed, including those with “no gaps” or too little “wiggle room” between values.

Example Solutions and Difficulty

  • For the canonical example [7,5,3], multiple minimal 6‑step solutions are found (and confirmed via SAT/SMT / search).
  • Exhaustive search up to certain maxima reveals “hardest” instances:
    • For max value 6: [1,6,3] needs 14 moves.
    • For 7: [5,4,1,2,7] needs 26 moves.
    • Reported worst cases grow quickly with the maximum value (e.g., over 100 moves for higher maxima).

Algorithmic Approaches

  • Modeled as a graph search problem where states are lists and edges are valid moves.
  • Approaches mentioned:
    • Breadth-first search (including bidirectional) to guarantee minimal solutions.
    • Dynamic programming / memoization to avoid recomputing visited states.
    • SAT/SMT encodings and Prolog programs for automated solving and verifying minimality.
    • Heuristic search ideas (A* with length or subsequence-based heuristics).
  • Debate over what “dynamic programming” precisely means versus simple memoization.

Tools, Visualizations, and Meta Discussion

  • Several browser-based games and visualizers were built, some initially with bugs around duplicate detection, later fixed.
  • Alternative physical/visual analogies (e.g., Towers of Hanoi–like pegs, gutters with rods) are proposed but criticized as imperfect.
  • Many note this would appear in coding interviews; reactions are mixed:
    • Some enjoy it as a neat benchmark.
    • Others dislike context-free puzzles for interviews and argue for more realistic, collaborative problem-solving formats.