Here is the first part of Pushing Numbers.
You need to make it so that all the numbers from 1 to 8 appear once in every row and column. You can only do that by "pushing" the columns down and the rows left. Each time you "push" a row or a column all the numbers in it move one block in the direction you have pushed it.
| | | | | 6 | | 4 | | 8 | | 6 | | 8 | | 7 | | | | |
| | | | | | | | | | | | | | | | | | | |
| | | | | 1 | | 3 | | 1 | | 2 | | 5 | | 6 | | | | |
| | | | | | | | | | | | | | | | | | | |
| | | | | 7 | | 4 | | 2 | | 8 | | 5 | | 4 | | 2 | | 2 |
| | | | | | | | | | | | | | | | | | | |
| | | | | 7 | | 5 | | 3 | | 7 | | 5 | | 3 | | 1 | | 3 |
| | | | | | | | | | | | | | | | | | | |
| | | | | 3 | | 8 | | 4 | | 7 | | 5 | | 6 | | 2 | | 1 |
| | | | | | | | | | | | | | | | | | | |
| | | | | 6 | | 3 | | 1 | | 6 | | 1 | | 4 | | 7 | | 8 |
| | | | | | | | | | | | | | | | | | | |
| | | | | 2 | | 5 | | 4 | | 3 | | 4 | | 5 | | 2 | | 1 |
| | | | | | | | | | | | | | | | | | | |
| | | | | 7 | | 2 | | 1 | | 3 | | 6 | | 4 | | 8 | | 7 |
| | | | | | | | | | | | | | | | | | | |
| 8 | | 6 | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | |
| 5 | | 8 | | | | | | | | | | | | | | | | |
| | | | | | | | | | | | | | | | | | | |
Can you do it?
(In reply to
re: No Subject by Charlie)
Oops. You are right! I was tired when I wrote that, and it shows. And, your insight about the number of vertical or horizontal moves in a row is correct--for each of those sequences of length n, we can divide the original 24! by n!.
I suspect the result will still be quite large, don't you? Obviously much larger than my original estimate.
I think solving this will take a combination of a good computer program combined with some pruning heuristics to eliminate dead-end paths without searching them. Knowing, for example that it's not easy to get a 4 into the left column, we could immediately stop searching move sequences in which getting a 4 there becomes impossible. Similarly, it's not easy to get those four vertically consecutive 5s into separate columns--the program should elimnate paths where that's no longer possible.