We have 3 dice in a square dish. The dish is 8 units wide and tall and each die is 3 units wide and tall. The dice are facing up each with a different number on their top face.
111..222
111..222
111..222
........
........
333.....
333.....
333.....
Then we play a game. At each step we can slide any 1 die in any cardinal direction until it meets either another die or a boundary. We are not allowed to stop sliding it before it hits an obstacle, we must go all the way.
For example from the position above the following are valid next moves:
111222.. 111.....
111222.. 111.....
111222.. 111.....
........ ........
........ ........
333..... 333..222
333..... 333..222
333..... 333..222
but these are not:
111.222. 111.....
111.222. 111.....
111.222. 111.....
........ .....222
........ .....222
333..... 333..222
333..... 333.....
333..... 333.....
The goal of the game is to choose a potential position and see if you can get to it from the starting position.
For example, if our goal is:
........
........
..111222
..111222
..111222
..333...
..333...
..333...
We can do these moves:
111..222 111..... 111..... ........ .....222 ...222.. ........ ........ ........
111..222 111..... 111..... ........ .....222 ...222.. ........ ........ ........
111..222 111..... 111..... 111..... 111..222 111222.. 111222.. 111..222 ..111222
........ ........ ........ 111..... 111..... 111..... 111222.. 111..222 ..111222
........ ........ ........ 111..... 111..... 111..... 111222.. 111..222 ..111222
333..... 333..222 ..333222 ..333222 ..333... ..333... ..333... ..333... ..333...
333..... 333..222 ..333222 ..333222 ..333... ..333... ..333... ..333... ..333...
333..... 333..222 ..333222 ..333222 ..333... ..333... ..333... ..333... ..333...
Not every game is winnable though, for example:
222..111
222..111
222..111
........
........
333.....
333.....
333.....
Task
You will take as input a board, and you should output whether that board can be reached from the above starting position using these moves.
This is code-golf answers will be scored in bytes with fewer bytes being better.
IO
You can take input as an 2D array containing 4 distinct symbols representing the 3 dice and the background. You can also take it as a list of a specified corner (e.g. upper left corner) of each of the dice.
You should give output as 1 of two distinct values with both corresponding to either true and false.