summaryrefslogtreecommitdiff
path: root/Beginning_C_By_Ivon_Horton/chapter9.ipynb
diff options
context:
space:
mode:
Diffstat (limited to 'Beginning_C_By_Ivon_Horton/chapter9.ipynb')
-rw-r--r--Beginning_C_By_Ivon_Horton/chapter9.ipynb826
1 files changed, 826 insertions, 0 deletions
diff --git a/Beginning_C_By_Ivon_Horton/chapter9.ipynb b/Beginning_C_By_Ivon_Horton/chapter9.ipynb
new file mode 100644
index 00000000..d7adce09
--- /dev/null
+++ b/Beginning_C_By_Ivon_Horton/chapter9.ipynb
@@ -0,0 +1,826 @@
+{
+ "metadata": {
+ "name": ""
+ },
+ "nbformat": 3,
+ "nbformat_minor": 0,
+ "worksheets": [
+ {
+ "cells": [
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Chapter 9: More on Functions"
+ ]
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 9.1, page no. 351"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\"\"\"\n",
+ "Pointing to functions\n",
+ "\"\"\"\n",
+ "\n",
+ "def sum(x, y):\n",
+ " return x + y\n",
+ " \n",
+ "def product(x, y):\n",
+ " return x * y\n",
+ " \n",
+ "def difference(x, y):\n",
+ " return x - y\n",
+ "\n",
+ "a = 10\n",
+ "b = 5\n",
+ "pfun = sum # points to sum() \n",
+ "result = pfun(a, b)\n",
+ "print \"pfun = sum result = \", result\n",
+ "pfun = product # points to product()\n",
+ "result = pfun(a, b)\n",
+ "print \"pfun = product result = \", result\n",
+ "pfun = difference # points to difference()\n",
+ "result = pfun(a, b)\n",
+ "print \"pfun = difference result = \", result"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "pfun = sum result = 15\n",
+ "pfun = product result = 50\n",
+ "pfun = difference result = 5\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 9.2, page no. 353"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\"\"\"\n",
+ "Arrays of Pointers to functions\n",
+ "\"\"\"\n",
+ "\n",
+ "def sum(x, y):\n",
+ " return x + y\n",
+ " \n",
+ "def product(x, y):\n",
+ " return x * y\n",
+ " \n",
+ "def difference(x, y):\n",
+ " return x - y\n",
+ "\n",
+ "a = 10\n",
+ "b = 5\n",
+ "result = 0\n",
+ "pfun = []\n",
+ "pfun.append(sum)\n",
+ "pfun.append(product)\n",
+ "pfun.append(difference)\n",
+ "\n",
+ "for i in range(3):\n",
+ " result = pfun[i](a, b)\n",
+ " print \"result = \", result\n",
+ "\n",
+ "result = pfun[1](pfun[0](a, b), pfun[2](a, b))\n",
+ "print \"The product of the sum and the difference = \", result"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "result = 15\n",
+ "result = 50\n",
+ "result = 5\n",
+ "The product of the sum and the difference = 75\n"
+ ]
+ }
+ ],
+ "prompt_number": 2
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 9.3, page no. 356"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\"\"\"\n",
+ "Passing a Pointer to a function\n",
+ "\"\"\"\n",
+ "\n",
+ "def sum(x, y):\n",
+ " return x + y\n",
+ " \n",
+ "def product(x, y):\n",
+ " return x * y\n",
+ " \n",
+ "def difference(x, y):\n",
+ " return x - y\n",
+ " \n",
+ "def any_function(pfun , x, y):\n",
+ " return pfun(x, y);\n",
+ "\n",
+ "a = 10\n",
+ "b = 5\n",
+ "pf = sum\n",
+ "result = any_function(pf, a, b)\n",
+ "print \"result = \", result\n",
+ "result = any_function(product, a, b)\n",
+ "print \"result = \", result\n",
+ "print \"result = \", any_function(difference, a, b)"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "result = 15\n",
+ "result = 50\n",
+ "result = 5\n"
+ ]
+ }
+ ],
+ "prompt_number": 3
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 9.4, page no. 359"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\"\"\"\n",
+ "Static versus automatic variables\n",
+ "note: there is no static in python. Output will be different from book.\n",
+ "\"\"\"\n",
+ "\n",
+ "def test1():\n",
+ " count = 0\n",
+ " count += 1\n",
+ " print \"test1 count = \", count\n",
+ "\n",
+ "def test2():\n",
+ " count = 0\n",
+ " count += 1\n",
+ " print \"test2 count = \", count\n",
+ "\n",
+ "for i in range(5):\n",
+ " test1()\n",
+ " test2()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "test1 count = 1\n",
+ "test2 count = 1\n",
+ "test1 count = 1\n",
+ "test2 count = 1\n",
+ "test1 count = 1\n",
+ "test2 count = 1\n",
+ "test1 count = 1\n",
+ "test2 count = 1\n",
+ "test1 count = 1\n",
+ "test2 count = 1\n"
+ ]
+ }
+ ],
+ "prompt_number": 4
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 9.5, page no. 361"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\"\"\"\n",
+ "Global variables\n",
+ "note: output will vary from textbook because of static variable\n",
+ "\"\"\"\n",
+ "\n",
+ "count = 0\n",
+ "\n",
+ "def test1():\n",
+ " global count\n",
+ " count += 1\n",
+ " print \"test1 count = \", count\n",
+ "\n",
+ "def test2():\n",
+ " count = 0\n",
+ " count += 1\n",
+ " print \"test2 count = \", count\n",
+ "\n",
+ "for i in range(5):\n",
+ " test1()\n",
+ " test2()"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "test1 count = 1\n",
+ "test2 count = 1\n",
+ "test1 count = 2\n",
+ "test2 count = 1\n",
+ "test1 count = 3\n",
+ "test2 count = 1\n",
+ "test1 count = 4\n",
+ "test2 count = 1\n",
+ "test1 count = 5\n",
+ "test2 count = 1\n"
+ ]
+ }
+ ],
+ "prompt_number": 6
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 9.6, page no. 364"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\"\"\"\n",
+ "Calculating factorials using recursion\n",
+ "\"\"\"\n",
+ "\n",
+ "def factorial(n):\n",
+ " if(n < 2):\n",
+ " return n\n",
+ " return n*factorial(n - 1)\n",
+ " \n",
+ "print \"Enter an integer value: \",\n",
+ "number = int(raw_input())\n",
+ "print \"The factorial of %d is %d \"% (number, factorial(number))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Enter an integer value: "
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "5\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " The factorial of 5 is 120 \n"
+ ]
+ }
+ ],
+ "prompt_number": 7
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 9.7, page no. 368"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\"\"\"\n",
+ "Calculating an average using variable argument lists\n",
+ "note: output will vary from that given in textbook\n",
+ "\"\"\"\n",
+ "\n",
+ "def average(*arg):\n",
+ " sum = arg[0] + arg[1]\n",
+ " count = 2\n",
+ " for i in arg:\n",
+ " count += 1\n",
+ " sum += i\n",
+ " average = sum/count\n",
+ " return average\n",
+ " \n",
+ "v1 = 10.5\n",
+ "v2 = 2.5\n",
+ "num1 = 6\n",
+ "num2 = 5\n",
+ "num3 = 12\n",
+ "num4 = 20\n",
+ "print \"Average = %.2f \" %(average(v1, 3.5, v2, 4.5, 0.0))\n",
+ "print \"Average = %.2f \" %(average(1.0, 2.0, 0.0))\n",
+ "print \"Average = %.2f \" %(average(num2, v2, num1, num4, num3, 0.0))"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Average = 5.00 \n",
+ "Average = 1.20 \n",
+ "Average = 6.62 \n"
+ ]
+ }
+ ],
+ "prompt_number": 8
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 9.8, page no. 370"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\"\"\"\n",
+ "A program to list the command line arguments\n",
+ "\"\"\"\n",
+ "\n",
+ "import sys\n",
+ "\n",
+ "print \"Program name: \", sys.argv[0]\n",
+ "for i in range(1, len(sys.argv)):\n",
+ " print \"Argument %d: %s \"%(i, sys.argv[i])"
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "Program name: -c\n",
+ "Argument 1: -f \n",
+ "Argument 2: /tmp/tmpL28uUI/profile_default/security/kernel-d2752270-d981-4bb2-b2bc-3d505dfa3dd5.json \n",
+ "Argument 3: --IPKernelApp.parent_appname='ipython-notebook' \n",
+ "Argument 4: --profile-dir \n",
+ "Argument 5: /tmp/tmpL28uUI/profile_default \n",
+ "Argument 6: --parent=1 \n"
+ ]
+ }
+ ],
+ "prompt_number": 9
+ },
+ {
+ "cell_type": "heading",
+ "level": 2,
+ "metadata": {},
+ "source": [
+ "Program 9.9, page no. 377"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "collapsed": false,
+ "input": [
+ "\"\"\"\n",
+ "REVERSI An Othello type game\n",
+ "\"\"\"\n",
+ "\n",
+ "SIZE = 6\n",
+ "comp_c = '@'\n",
+ "player_c = '0'\n",
+ "board = [[0, 0, 0, 0, 0, 0],\n",
+ " [0, 0, 0, 0, 0, 0],\n",
+ " [0, 0, 0, 0, 0, 0],\n",
+ " [0, 0, 0, 0, 0, 0],\n",
+ " [0, 0, 0, 0, 0, 0],\n",
+ " [0, 0, 0, 0, 0, 0]]\n",
+ "\n",
+ "moves = [[False, False, False, False, False, False],\n",
+ " [False, False, False, False, False, False],\n",
+ " [False, False, False, False, False, False],\n",
+ " [False, False, False, False, False, False],\n",
+ " [False, False, False, False, False, False],\n",
+ " [False, False, False, False, False, False]]\n",
+ "no_of_moves = 0\n",
+ "invalid_moves = 0\n",
+ "again = 0\n",
+ "next_player = True\n",
+ "\n",
+ "def get_score(board, player):\n",
+ " global comp_c\n",
+ " global player_c\n",
+ " return player_counters(board, player) - player_counters(board, (comp_c if player == player_c else player_c)) \n",
+ " \n",
+ "def player_counters(board,player):\n",
+ " count = 0;\n",
+ " for row in range(SIZE):\n",
+ " for col in range(SIZE):\n",
+ " if(board[row][col] == player):\n",
+ " count += 1\n",
+ " return count;\n",
+ "\n",
+ "def computer_move(board,moves, player):\n",
+ " best_row = 0;\n",
+ " best_col = 0;\n",
+ " new_score = 0;\n",
+ " score = SIZE*SIZE;\n",
+ " temp_board = []\n",
+ " temp_moves = []\n",
+ " for i in range(SIZE):\n",
+ " a = []\n",
+ " b = []\n",
+ " for j in range(SIZE):\n",
+ " a.append(0)\n",
+ " b.append(False)\n",
+ " temp_board.append(a)\n",
+ " temp_moves.append(b) \n",
+ " opponent = comp_c if (player == player_c) else player_c\n",
+ " for row in range(SIZE):\n",
+ " for col in range(SIZE):\n",
+ " if(not moves[row][col]):\n",
+ " continue;\n",
+ " temp_board = board\n",
+ " make_move(temp_board, row, col, player);\n",
+ " valid_moves(temp_board, temp_moves, opponent);\n",
+ " new_score = best_move(temp_board, temp_moves, opponent);\n",
+ " if(new_score < score):\n",
+ " score = new_score;\n",
+ " best_row = row;\n",
+ " best_col = col;\n",
+ " make_move(board, best_row, best_col, player);\n",
+ "\n",
+ " \n",
+ "def best_move(board, moves, player):\n",
+ " new_board = []\n",
+ " for i in range(SIZE):\n",
+ " a = []\n",
+ " for j in range(SIZE):\n",
+ " a.append(0)\n",
+ " new_board.append(a)\n",
+ " score = 0;\n",
+ " new_score = 0;\n",
+ "\n",
+ " for row in range(SIZE):\n",
+ " for col in range(SIZE):\n",
+ " if(not moves[row][col]):\n",
+ " continue;\n",
+ " new_board = board\n",
+ " make_move(new_board, row, col, player);\n",
+ " new_score = get_score(new_board, player);\n",
+ " if(score < new_score):\n",
+ " score = new_score;\n",
+ " return score;\n",
+ "\n",
+ "\n",
+ "def make_move(board,row,col,player):\n",
+ " rowdelta = 0;\n",
+ " coldelta = 0;\n",
+ " x = 0;\n",
+ " y = 0;\n",
+ " if player == player_c:\n",
+ " opponent = comp_c\n",
+ " else:\n",
+ " opponent = player_c \n",
+ " \n",
+ " board[row][col] = player\n",
+ " for rowdelta in range(-1,2):\n",
+ " for coldelta in range(-1,2):\n",
+ " if((row == 0 and rowdelta == -1) or row + rowdelta >= SIZE or(col == 0 and coldelta == -1) or col + coldelta >= SIZE or\n",
+ "(rowdelta == 0 and coldelta == 0)):\n",
+ " continue;\n",
+ "\n",
+ " if(board[row + rowdelta][col + coldelta] == opponent):\n",
+ " x = row + rowdelta;\n",
+ " y = col + coldelta;\n",
+ " \n",
+ " while True:\n",
+ " x += rowdelta;\n",
+ " y += coldelta;\n",
+ " if(x >= SIZE or y >= SIZE or board[x][y] == ' '):\n",
+ " break;\n",
+ " if(board[x][y] == player):\n",
+ " x -= rowdelta\n",
+ " y -= coldelta\n",
+ " while(board[x][y] == opponent):\n",
+ " board[x][y] = player;\n",
+ " x -= rowdelta\n",
+ " y -= coldelta\n",
+ " \n",
+ " break;\n",
+ "\n",
+ "def reset_board(board):\n",
+ " global SIZE\n",
+ " global player_c\n",
+ " global comp_c\n",
+ " for row in range(SIZE):\n",
+ " for col in range(SIZE):\n",
+ " board[row][col] = ' '\n",
+ " \n",
+ " mid = SIZE/2\n",
+ " board[mid][mid] = player_c\n",
+ " board[mid-1][mid-1] = board[mid][mid]\n",
+ " board[mid][mid - 1] = comp_c\n",
+ " board[mid-1][mid] = board[mid][mid - 1]\n",
+ "\n",
+ "def display(board):\n",
+ " col_label = 'a'\n",
+ " print \"\"\n",
+ " for col in range(SIZE):\n",
+ " print \"%c\" %((chr(ord(col_label) + col))),\n",
+ " print \"\"\n",
+ " for row in range(SIZE):\n",
+ " print \" +\",\n",
+ " for col in range(SIZE):\n",
+ " print \"---+\",\n",
+ " print \"\\n%2d|\" %(row + 1)\n",
+ " \n",
+ " for col in range(SIZE):\n",
+ " print \" %c |\" %(board[row][col]),\n",
+ " print \"\"\n",
+ " print \" +\"\n",
+ " for col in range(SIZE):\n",
+ " print \"---+\",\n",
+ " print \"\"\n",
+ "\n",
+ "def valid_moves(board, moves, player):\n",
+ " global SIZE\n",
+ " global player_c\n",
+ " global comp_c\n",
+ " rowdelta = 0\n",
+ " coldelta = 0\n",
+ " x = 0\n",
+ " y = 0\n",
+ " global no_of_moves\n",
+ " opponent = comp_c if (player == player_c) else player_c\n",
+ " for row in range(SIZE):\n",
+ " for col in range(SIZE):\n",
+ " moves[row][col] = False\n",
+ " for row in range(SIZE):\n",
+ " for col in range(SIZE):\n",
+ " if(board[row][col] != ' '):\n",
+ " continue\n",
+ " for rowdelta in range(-1, rowdelta+1):\n",
+ " for coldelta in range(-1, coldelta+1):\n",
+ " if((row == 0 and rowdelta == -1) or row + rowdelta >= SIZE or (col == 0 and coldelta == -1) or col + coldelta >= SIZE or (rowdelta == 0 and coldelta == 0)):\n",
+ " continue\n",
+ " if(board[row + rowdelta][col + coldelta] == opponent):\n",
+ " x = row + rowdelta\n",
+ " y = col + coldelta \n",
+ " while(True):\n",
+ " x += rowdelta\n",
+ " y += coldelta\n",
+ " if(x < 0 or x >= SIZE or y < 0 or y >= SIZE or board[x][y] == ' '):\n",
+ " break\n",
+ " if(board[x][y] == player):\n",
+ " moves[row][col] = True\n",
+ " no_of_moves += 1\n",
+ " break\n",
+ " return no_of_moves\n",
+ "\n",
+ " \n",
+ "print \"REVERSI\"\n",
+ "print \"You can go first on the first game, then we will take turns.\"\n",
+ "print \"You will be white - (%c)\\nI will be black - (%c). \" %(player_c, comp_c)\n",
+ "print \"Select a square for your move by typing a digit for the row and a letter for the column with no spaces between.\"\n",
+ "print \"Good luck! Press Enter to start.\"\n",
+ "raw_input()\n",
+ "while(True):\n",
+ " reset_board(board)\n",
+ " next_player = not(next_player)\n",
+ " no_of_moves = 4\n",
+ " while(True):\n",
+ " display(board)\n",
+ " next_player = not next_player\n",
+ " if(True == next_player):\n",
+ " if(valid_moves(board, moves, player_c)):\n",
+ " while(True):\n",
+ " print \"Please enter your move (row column - no space): \",\n",
+ " x = int(raw_input(\"row: \"))\n",
+ " y = raw_input(\"col: \")\n",
+ " y = ord(chr(ord(y.lower()) - ord('a')))\n",
+ " x -= 1\n",
+ " if(y < 0 or y >= SIZE or x >= SIZE or (not moves[x][y])):\n",
+ " print \"Not a valid move, try again.\\n\"\n",
+ " continue\n",
+ " make_move(board, x, y, player_c)\n",
+ " no_of_moves += 1\n",
+ " break\n",
+ " else:\n",
+ " invalid_moves += 1\n",
+ " if(invalid_moves < 2):\n",
+ " print \"You have to pass, press return\",\n",
+ " again = raw_input()\n",
+ " else:\n",
+ " print \"\\nNeither of us can go, so the game is over. \"\n",
+ " else:\n",
+ " if(valid_moves(board, moves, comp_c)):\n",
+ " invalid_moves = 0\n",
+ " computer_move(board, moves, comp_c)\n",
+ " no_of_moves += 1\n",
+ " else:\n",
+ " invalid_moves += 1\n",
+ " if(invalid_moves < 2):\n",
+ " print \"I have to pass, your go \"\n",
+ " else:\n",
+ " print \"Neither of us can go, so the game is over.\",\n",
+ " display(board)\n",
+ " print \"The final score is: \"\n",
+ " print \"Computer %d User %d \" %(player_counters(board, comp_c), player_counters(board, player_c))\n",
+ "\n",
+ " print \"Do you want to play again (y/n): \", \n",
+ " again = raw_input()\n",
+ " if again == 'y':\n",
+ " continue;\n",
+ " else:\n",
+ " break \n",
+ " if (no_of_moves < SIZE*SIZE and invalid_moves < 2):\n",
+ " continue\n",
+ " else:\n",
+ " break\n",
+ " if again == 'n':\n",
+ " break\n",
+ "print \"\\nGoodbye\\n\""
+ ],
+ "language": "python",
+ "metadata": {},
+ "outputs": [
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "REVERSI\n",
+ "You can go first on the first game, then we will take turns.\n",
+ "You will be white - (0)\n",
+ "I will be black - (@). \n",
+ "Select a square for your move by typing a digit for the row and a letter for the column with no spaces between.\n",
+ "Good luck! Press Enter to start.\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "\n",
+ "a b c d e f \n",
+ " + ---+ ---+ ---+ ---+ ---+ ---+ \n",
+ " 1|\n",
+ " | | | | | | \n",
+ " + ---+ ---+ ---+ ---+ ---+ ---+ \n",
+ " 2|\n",
+ " | | | | | | \n",
+ " + ---+ ---+ ---+ ---+ ---+ ---+ \n",
+ " 3|\n",
+ " | | 0 | @ | | | \n",
+ " + ---+ ---+ ---+ ---+ ---+ ---+ \n",
+ " 4|\n",
+ " | | @ | 0 | | | \n",
+ " + ---+ ---+ ---+ ---+ ---+ ---+ \n",
+ " 5|\n",
+ " | | | | | | \n",
+ " + ---+ ---+ ---+ ---+ ---+ ---+ \n",
+ " 6|\n",
+ " | | | | | | \n",
+ " +\n",
+ "---+ ---+ ---+ ---+ ---+ ---+ \n",
+ "Please enter your move (row column - no space): "
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "row: 3\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "col: e\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " \n",
+ "a b c d e f \n",
+ " + ---+ ---+ ---+ ---+ ---+ ---+ \n",
+ " 1|\n",
+ " | | | | | | \n",
+ " + ---+ ---+ ---+ ---+ ---+ ---+ \n",
+ " 2|\n",
+ " | | | | | | \n",
+ " + ---+ ---+ ---+ ---+ ---+ ---+ \n",
+ " 3|\n",
+ " | | 0 | 0 | 0 | | \n",
+ " + ---+ ---+ ---+ ---+ ---+ ---+ \n",
+ " 4|\n",
+ " | | @ | 0 | | | \n",
+ " + ---+ ---+ ---+ ---+ ---+ ---+ \n",
+ " 5|\n",
+ " | | | | | | \n",
+ " + ---+ ---+ ---+ ---+ ---+ ---+ \n",
+ " 6|\n",
+ " | | | | | | \n",
+ " +\n",
+ "---+ ---+ ---+ ---+ ---+ ---+ \n",
+ "The final score is: \n",
+ "Computer 1 User 4 \n",
+ "Do you want to play again (y/n): "
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ "n\n"
+ ]
+ },
+ {
+ "output_type": "stream",
+ "stream": "stdout",
+ "text": [
+ " \n",
+ "Goodbye\n",
+ "\n"
+ ]
+ }
+ ],
+ "prompt_number": 1
+ }
+ ],
+ "metadata": {}
+ }
+ ]
+} \ No newline at end of file