Problem 2265. 2048 Next Move
Given a board in the game 2048 (see the game here: 2048) and a direction ('up','down','left', or 'right'), move the game forward one turn.
Move and merge blocks as required by the game's rules, but for simplicity do not insert a new 2.
Example 1
board = [ ... 0 0 0 2 0 0 4 4 0 0 0 16 0 0 0 16] dir = 'up' newBoard = [ ... 0 0 4 2 0 0 0 4 0 0 0 32 0 0 0 0 ]
Example 2
board = [ ... 0 2 128 4 0 16 4 32 0 8 0 0 0 0 2 0 ] dir = 'right' newBoard = [ ... 0 2 128 4 0 16 4 32 0 0 0 8 0 0 0 2 ]
Example 3. Resolving Ambiguity
If we think of the directions as defining the pull of gravity, then we resolve ambiguous cases by first merging the two "lowest" blocks. See below.
board = [ ... 0 4 4 4 4 4 4 0 2 2 2 2 0 0 0 0 ] dir = 'left' newBoard = [ ... 8 4 0 0 8 4 0 0 4 4 0 0 0 0 0 0 ]
Inspired by a suggestion from Nick Howe.
Solution Stats
Problem Comments
-
12 Comments
Anyone else ever get to the 4096 tile in the game? :-)
Nick Howe says he's done it, and now he's working on 8192.
Tell him to take a screenshot if he gets it!
http://cs.smith.edu/~nhowe/export/8192.png
what should happen if in a row is [0 4 4 4] and the next move is 'left'? and if the next move is 'right'?
these cases does not appear in the problem, but it can be interesting to test... ;-)
Good point! That complicates things nicely. I added a new example and corresponding test case that reflects my understanding of the 2048 rules.
I think it would also help to explicitly state that a block cannot be merged twice in the same move.
There is no assertion in test 4.
Thanks Jan! Fixed it. That test has been firing blanks for more than a year.
You are welcome. I wouldn't probably notice it if I had not sent an incorrect submission.
6 players like this wonderful problem. But at the same time 6 players like a problem like Problem 43033. Create a constant offset.
This is very confusing ...
I would love to find a way to get people "liking" problems more often. Liking makes the author feel good about a job well done, but more importantly it points people to good problems. Sometimes we try to motivate people to like problems. This happened with the October triathlon contest (when the problem you reference was created). But it can have an unintended outcome of encouraging people to like problems that aren't that great. The results are very uneven. Bottom line: if you like a problem, please "like" it!
Solution Comments
Show commentsProblem Recent Solvers89
Suggested Problems
-
226 Solvers
-
We love vectorized solutions. Problem 1 : remove the row average.
823 Solvers
-
8516 Solvers
-
357 Solvers
-
Sum of odd numbers in a matrix
574 Solvers
More from this Author50
Problem Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!