 
  Data Structure Data Structure
 Networking Networking
 RDBMS RDBMS
 Operating System Operating System
 Java Java
 MS Excel MS Excel
 iOS iOS
 HTML HTML
 CSS CSS
 Android Android
 Python Python
 C Programming C Programming
 C++ C++
 C# C#
 MongoDB MongoDB
 MySQL MySQL
 Javascript Javascript
 PHP PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Program to find next board position after sliding the given direction once in Python
Suppose we have a 2048 game board representing the initial board and a string direction representing the swipe direction, we have to find the next board state. As we know in the 2048 game, we are given a 4 x 4 board of numbers (some of them are empty, represented in here with 0) which we can swipe in any of the 4 directions ("U", "D", "L", or "R"). When we swipe, all the numbers move in that direction as far as possible and identical adjacent numbers are added up exactly once.
So, if the input is like

direction = "L", then the output will be

To solve this, we will follow these steps:
-  if direction is same as "R", then - board := rotate board anti clockwise two times 
 
-  otherwise when direction is same as "U", then - board := rotate board anti clockwise once 
 
-  otherwise when direction is same as "D", then - board := rotate board anti clockwise three times 
 
-  for i in range 0 to 3, do - row := a list of all non-zero elements at board[i] 
-  for j in range 0 to 2, do -  if j + 1 < size of row and row[j] is same as row[j + 1], then - row[j] := row[j] * 2 
- remove row[j + 1] 
 
 
-  
-  while size of row < 4, do - insert 0 at the end of row 
 
- board[i] := row 
 
-  if direction is same as "R", then - board := rotate board anti clockwise two times 
 
-  otherwise when direction is same as "U", then - board := rotate board anti clockwise three times 
 
-  otherwise when direction is same as "D", then - board := rotate board anti clockwise once 
 
- return board 
Let us see the following implementation to get better understanding
Example
class Solution: def solve(self, board, direction): if direction == "R": board = rot_anti_clock_dir(rot_anti_clock_dir(board)) elif direction == "U": board = rot_anti_clock_dir(board) elif direction == "D": board = rot_anti_clock_dir(rot_anti_clock_dir(rot_anti_clock_dir(board))) for i in range(4): row = [x for x in board[i] if x] for j in range(3): if j + 1 < len(row) and row[j] == row[j + 1]: row[j] *= 2 del row[j + 1] while len(row) < 4: row += [0] board[i] = row if direction == "R": board = rot_anti_clock_dir(rot_anti_clock_dir(board)) elif direction == "U": board = rot_anti_clock_dir(rot_anti_clock_dir(rot_anti_clock_dir(board))) elif direction == "D": board = rot_anti_clock_dir(board) return board def rot_anti_clock_dir(x): x = [[x[i][j] for i in range(4)] for j in range(4)] return x[::-1] ob = Solution() matrix = [ [2, 0, 0, 2], [2, 2, 2, 2], [0, 4, 2, 2], [2, 2, 2, 0]] print(ob.solve(matrix, "L"))
Input
matrix = [ [2, 0, 0, 2], [2, 2, 2, 2], [0, 4, 2, 2], [2, 2, 2, 0]]
Output
[ [4, 0, 0, 0], [4, 4, 0, 0], [4, 4, 0, 0], [4, 2, 0, 0]]
