-
Notifications
You must be signed in to change notification settings - Fork 67
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Jinendra Jain
authored
Nov 5, 2020
1 parent
0654586
commit 8494132
Showing
1 changed file
with
159 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,159 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"\n", | ||
"# 2048 Game<br>\n", | ||
"\n", | ||
"2048 is a game and you are expected to implement the move function for this game.<br>\n", | ||
"Arguments passed to the four functions is the matrix which we are using for 2048<br>\n", | ||
"The move function will be returning new matrix after moving the corresponding move.<br>\n", | ||
"Implement All The Four Moves Using These Functions -<br>\n", | ||
"1. move_up<br>\n", | ||
"2. move_down<br>\n", | ||
"3. move_left<br>\n", | ||
"4. move_right" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 1, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"name": "stdout", | ||
"output_type": "stream", | ||
"text": [ | ||
"1 2 4 3 2 4 3 1 4\n", | ||
"[[4, 4, 2, 2], [0, 8, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]\n", | ||
"[[0, 0, 0, 0], [0, 0, 0, 0], [0, 4, 0, 0], [4, 8, 2, 2]]\n", | ||
"[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 4], [0, 4, 8, 4]]\n", | ||
"[[0, 0, 0, 0], [0, 0, 0, 0], [4, 0, 0, 0], [4, 8, 4, 0]]\n", | ||
"[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [8, 8, 4, 0]]\n", | ||
"[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 16, 4]]\n", | ||
"[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [16, 4, 0, 0]]\n", | ||
"[[16, 4, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]\n", | ||
"[[0, 0, 16, 4], [0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]\n" | ||
] | ||
} | ||
], | ||
"source": [ | ||
"import random\n", | ||
"def start_game():\n", | ||
" mat = []\n", | ||
" for i in range(4):\n", | ||
" mat.append([0]*4)\n", | ||
" return mat\n", | ||
"\n", | ||
"def compress(mat):\n", | ||
" new_mat = []\n", | ||
" for i in range(4):\n", | ||
" new_mat.append([0] * 4)\n", | ||
" for i in range(4):\n", | ||
" pos = 0\n", | ||
" for j in range(4):\n", | ||
" if mat[i][j] != 0:\n", | ||
" new_mat[i][pos] = mat[i][j]\n", | ||
" pos = pos + 1\n", | ||
" return new_mat\n", | ||
"\n", | ||
"def merge(mat):\n", | ||
" for i in range(4):\n", | ||
" for j in range(3):\n", | ||
" if mat[i][j] == mat[i][j + 1]:\n", | ||
" mat[i][j] = (mat[i][j]) * 2\n", | ||
" mat[i][j + 1] = 0\n", | ||
" return mat\n", | ||
"\n", | ||
"def reverse(mat):\n", | ||
" new_mat = []\n", | ||
" for i in range(4):\n", | ||
" new_mat.append(mat[i][::-1])\n", | ||
" return new_mat\n", | ||
"\n", | ||
"def transpose(mat):\n", | ||
" new_mat = []\n", | ||
" for i in range(4):\n", | ||
" new_mat.append([])\n", | ||
" for j in range(4):\n", | ||
" new_mat[i].append(mat[j][i])\n", | ||
" return new_mat\n", | ||
"\n", | ||
"def move_up(grid):\n", | ||
" transposed_grid = transpose(grid)\n", | ||
" new_grid = compress(transposed_grid)\n", | ||
" new_grid = merge(new_grid)\n", | ||
" new_grid = compress(new_grid)\n", | ||
" final_grid = transpose(new_grid)\n", | ||
" return final_grid\n", | ||
"\n", | ||
"def move_down(grid):\n", | ||
" transposed_grid = transpose(grid)\n", | ||
" reverse_grid = reverse(transposed_grid)\n", | ||
" new_grid = compress(reverse_grid)\n", | ||
" new_grid = merge(new_grid)\n", | ||
" new_grid = compress(new_grid)\n", | ||
" new_reverse = reverse(new_grid)\n", | ||
" final_grid = transpose(new_reverse)\n", | ||
" return final_grid\n", | ||
"\n", | ||
"def move_right(grid):\n", | ||
" reverse_grid = reverse(grid)\n", | ||
" new_grid = compress(reverse_grid)\n", | ||
" new_grid = merge(new_grid)\n", | ||
" new_grid = compress(new_grid)\n", | ||
" final_grid = reverse(new_grid)\n", | ||
" return final_grid\n", | ||
"\n", | ||
"def move_left(grid):\n", | ||
" new_grid = compress(grid)\n", | ||
" new_grid = merge(new_grid)\n", | ||
" new_grid = compress(new_grid)\n", | ||
" return new_grid\n", | ||
"\n", | ||
"\n", | ||
"mat = start_game()\n", | ||
"mat[1][3] = 2\n", | ||
"mat[2][2] = 2\n", | ||
"mat[3][0] = 4\n", | ||
"mat[3][1] = 8\n", | ||
"mat[2][1] = 4\n", | ||
"\n", | ||
"inputs = [int(ele) for ele in input().split()]\n", | ||
"for ele in inputs:\n", | ||
" if ele == 1:\n", | ||
" mat = move_up(mat)\n", | ||
" elif ele == 2:\n", | ||
" mat = move_down(mat)\n", | ||
" elif ele == 3:\n", | ||
" mat = move_left(mat)\n", | ||
" else:\n", | ||
" mat = move_right(mat)\n", | ||
" print(mat)" | ||
] | ||
} | ||
], | ||
"metadata": { | ||
"kernelspec": { | ||
"display_name": "Python 3", | ||
"language": "python", | ||
"name": "python3" | ||
}, | ||
"language_info": { | ||
"codemirror_mode": { | ||
"name": "ipython", | ||
"version": 3 | ||
}, | ||
"file_extension": ".py", | ||
"mimetype": "text/x-python", | ||
"name": "python", | ||
"nbconvert_exporter": "python", | ||
"pygments_lexer": "ipython3", | ||
"version": "3.8.6" | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 4 | ||
} |