Perfomance optimsed heuristic variant of Iterative Deepening A* on the example of a sliding puzzle; OOP & functional