Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
Jinendra Jain authored Nov 5, 2020
1 parent 0654586 commit 8494132
Showing 1 changed file with 159 additions and 0 deletions.
159 changes: 159 additions & 0 deletions 2048 Game.ipynb
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
}

0 comments on commit 8494132

Please sign in to comment.