We prove NP-hardness of a wide class of pushing-block puzzles like
the classic Sokoban, generalizing several previous results
[4, 5, 7, 8, 13, 15].
The puzzles consist of unit square blocks on an integer lattice; all
blocks are movable. The robot may move horizontally and vertically
in order to reach a specified goal position. In the Push-k
puzzle, the robot can push up to k blocks in front of it as long
as there is at least one free square ahead.
Other variations were introduced to make puzzles more tractable, in
which blocks must slide their maximal extent when pushed
(Push-Push), and in which the robot's path must not cross itself
(Push-X). We prove that all of these puzzles are NP-hard.