{
 "metadata": {
  "name": "",
  "signature": "sha256:f5ae274b34f8832ebb766131ce16691aa9f05236c3dacd19d82ce9c6b22fe7d8"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "heading",
     "level": 1,
     "metadata": {},
     "source": [
      "Chapter 11: Structuring Data"
     ]
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Program 11.1, page no. 403"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "\n",
      "\n",
      "class Horse:\n",
      "    age = 0\n",
      "    height = 0\n",
      "    name = \"\"\n",
      "    father = \"\"\n",
      "    mother = \"\"\n",
      "\n",
      "my_horse = Horse()\n",
      "print \"Enter the name of the horse: \",\n",
      "my_horse.name = raw_input()\n",
      " \n",
      "print \"How old is %s? \" % my_horse.name,\n",
      "my_horse.age = int(raw_input())\n",
      " \n",
      "print \"How high is %s ( in hands )? \" %my_horse.name,\n",
      "my_horse.height = int(raw_input())\n",
      " \n",
      "print \"Who is %s's father? \" %my_horse.name,\n",
      "my_horse.father = raw_input()\n",
      " \n",
      "print \"Who is %s's mother? \" %my_horse.name,\n",
      "my_horse.mother = raw_input()\n",
      " \n",
      "print \"%s is %d years old, %d hands high, \" %(my_horse.name, my_horse.age, my_horse.height),\n",
      "print \"and has %s and %s as parents. \" %(my_horse.father, my_horse.mother)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter the name of the horse: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Neddy\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " How old is Neddy? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "12\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " How high is Neddy ( in hands )? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "14\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Who is Neddy's father? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Bertie\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Who is Neddy's mother? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Nellie\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Neddy is 12 years old, 14 hands high,  and has Bertie and Nellie as parents. \n"
       ]
      }
     ],
     "prompt_number": 1
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Program 11.2, page no. 436"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "\n",
      "\n",
      "class Horse:\n",
      "    age = 0\n",
      "    height = 0\n",
      "    name = \"\"\n",
      "    father = \"\"\n",
      "    mother = \"\"\n",
      " \n",
      "my_horses = []\n",
      "test = ''\n",
      "hcount = 0\n",
      "\n",
      "while(True):\n",
      "    print \"Do you want to enter details of a horse (Y or N)? \"\n",
      "    choice = raw_input()\n",
      "    if(choice.lower() == 'n'):\n",
      "        break\n",
      "    my_horse = Horse()\n",
      "    print \"Enter the name of the horse: \",\n",
      "    my_horse.name = raw_input()\n",
      "    print \"How old is %s? \" % my_horse.name,\n",
      "    my_horse.age = int(raw_input())\n",
      "    print \"How high is %s ( in hands )? \" %my_horse.name,\n",
      "    my_horse.height = int(raw_input())\n",
      "    print \"Who is %s's father? \" %my_horse.name,\n",
      "    my_horse.father = raw_input()\n",
      "    print \"Who is %s's mother? \" %my_horse.name,\n",
      "    my_horse.mother = raw_input()\n",
      "    my_horses.append(my_horse)\n",
      "    hcount += 1\n",
      "\n",
      "for i in range(hcount):\n",
      "    print \"%s is %d years old, %d hands high, \" %(my_horses[i].name, my_horses[i].age, my_horses[i].height),\n",
      "    print \"and has %s and %s as parents. \" %(my_horses[i].father, my_horses[i].mother)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Do you want to enter details of a horse (Y or N)? \n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "y\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter the name of the horse: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Neddy\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " How old is Neddy? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "12\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " How high is Neddy ( in hands )? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "14\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Who is Neddy's father? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Bertie\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Who is Neddy's mother? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Nellie\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Do you want to enter details of a horse (Y or N)? \n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "y\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter the name of the horse: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Stallion\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " How old is Stallion? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "10\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " How high is Stallion ( in hands )? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "15\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Who is Stallion's father? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Father Stallion\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Who is Stallion's mother? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Mother Stallion\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Do you want to enter details of a horse (Y or N)? \n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "n\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Neddy is 12 years old, 14 hands high,  and has Bertie and Nellie as parents. \n",
        "Stallion is 10 years old, 15 hands high,  and has Father Stallion and Mother Stallion as parents. \n"
       ]
      }
     ],
     "prompt_number": 4
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Program 11.3, page no. 440"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "\n",
      "\n",
      "class Horse:\n",
      "    age = 0\n",
      "    height = 0\n",
      "    name = \"\"\n",
      "    father = \"\"\n",
      "    mother = \"\"\n",
      " \n",
      "my_horses = []\n",
      "test = ''\n",
      "hcount = 0\n",
      "\n",
      "while(True):\n",
      "    print \"Do you want to enter details of a horse (Y or N)? \"\n",
      "    choice = raw_input()\n",
      "    if(choice.lower() == 'n'):\n",
      "        break\n",
      "    my_horse = Horse()\n",
      "    print \"Enter the name of the horse: \",\n",
      "    my_horse.name = raw_input()\n",
      "    print \"How old is %s? \" % my_horse.name,\n",
      "    my_horse.age = int(raw_input())\n",
      "    print \"How high is %s ( in hands )? \" %my_horse.name,\n",
      "    my_horse.height = int(raw_input())\n",
      "    print \"Who is %s's father? \" %my_horse.name,\n",
      "    my_horse.father = raw_input()\n",
      "    print \"Who is %s's mother? \" %my_horse.name,\n",
      "    my_horse.mother = raw_input()\n",
      "    my_horses.append(my_horse)\n",
      "    hcount += 1\n",
      "\n",
      "ptr_my_horses = my_horses\n",
      "\n",
      "for i in range(hcount):\n",
      "    print \"%s is %d years old, %d hands high, \" %(ptr_my_horses[i].name, ptr_my_horses[i].age, ptr_my_horses[i].height),\n",
      "    print \"and has %s and %s as parents. \" %(ptr_my_horses[i].father, ptr_my_horses[i].mother)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Do you want to enter details of a horse (Y or N)? \n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "y\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter the name of the horse: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Neddy\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " How old is Neddy? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "12\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " How high is Neddy ( in hands )? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "14\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Who is Neddy's father? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Bertie\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Who is Neddy's mother? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Nellie\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Do you want to enter details of a horse (Y or N)? \n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "n\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Neddy is 12 years old, 14 hands high,  and has Bertie and Nellie as parents. \n"
       ]
      }
     ],
     "prompt_number": 5
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Program 11.4, page no. 445"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "\n",
      "\n",
      "class Horse:\n",
      "    age = 0\n",
      "    height = 0\n",
      "    name = \"\"\n",
      "    father = \"\"\n",
      "    mother = \"\"\n",
      "    next = None\n",
      "    prev = None\n",
      "\n",
      "first = None\n",
      "previous = None\n",
      "\n",
      "while(True):\n",
      "    print \"Do you want to enter details of a horse (Y or N)? \",\n",
      "    choice = raw_input()\n",
      "    if(choice.lower() == 'n'):\n",
      "        break\n",
      "    current = Horse()\n",
      "    if(first == None):\n",
      "        first = current\n",
      "    if(previous != None):\n",
      "        previous.next = current\n",
      "    print \"Enter the name of the horse: \",\n",
      "    current.name = raw_input()\n",
      "    print \"How old is %s? \" %current.name,\n",
      "    current.age = int(raw_input())\n",
      "    print \"How high is %s ( in hands )? \" %(current.name),\n",
      "    current.height = int(raw_input())\n",
      "    print \"Who is %s's father? \" %current.name,\n",
      "    current.father = raw_input()\n",
      "    print \"Who is %s's mother? \" %current.name,\n",
      "    current.mother = raw_input()\n",
      "    current.next = None\n",
      "    previous = current\n",
      "\n",
      "current = first\n",
      "while (current != None):\n",
      "    print \"%s is %d years old, %d hands high,\" %(current.name, current.age, current.height),\n",
      "    print \"and has %s and %s as parents.\" %(current.father, current.mother)\n",
      "    previous = current\n",
      "    current = current.next\n",
      "    previous = None\n",
      "    first = None"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Do you want to enter details of a horse (Y or N)? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "y\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the name of the horse: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Neddy\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " How old is Neddy? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "12\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " How high is Neddy ( in hands )? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "14\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Who is Neddy's father? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Brtie\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Who is Neddy's mother? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Nellie\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Do you want to enter details of a horse (Y or N)? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "n\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Neddy is 12 years old, 14 hands high, and has Brtie and Nellie as parents.\n"
       ]
      }
     ],
     "prompt_number": 6
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Program 11.5, page no. 450"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "\n",
      "\n",
      "first = None\n",
      "current = None\n",
      "last = None\n",
      "\n",
      "class Horse:\n",
      "    age = 0\n",
      "    height = 0\n",
      "    name = \"\"\n",
      "    father = \"\"\n",
      "    mother = \"\"\n",
      "    next = None\n",
      "    prev = None\n",
      "\n",
      "\n",
      "while(True):\n",
      "    print \"Do you want to enter details of a horse (Y or N)? \",\n",
      "    choice = raw_input()\n",
      "    if(choice.lower() == 'n'):\n",
      "        break \n",
      "\n",
      "    current = Horse()\n",
      "    if(first == None):\n",
      "        first = current\n",
      "        last = current\n",
      "    else:\n",
      "        last.next = current\n",
      "        current.previous = last\n",
      "        last = current\n",
      "    print \"Enter the name of the horse: \",\n",
      "    current.name = raw_input()\n",
      "    print \"How old is %s? \" %current.name,\n",
      "    current.age = int(raw_input())\n",
      "    print \"How high is %s ( in hands )? \" %(current.name),\n",
      "    current.height = int(raw_input())\n",
      "    print \"Who is %s's father? \" %current.name,\n",
      "    current.father = raw_input()\n",
      "    print \"Who is %s's mother? \" %current.name,\n",
      "    current.mother = raw_input()\n",
      "\n",
      "current = first\n",
      "while(current):\n",
      "    print \"%s is %d years old, %d hands h1igh,\" %(current.name, current.age, current.height),\n",
      "    print \"and has %s and %s as parents.\" %(current.father, current.mother)\n",
      "    current = current.next"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Do you want to enter details of a horse (Y or N)? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "y\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the name of the horse: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "neddy\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " How old is neddy? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "13\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " How high is neddy ( in hands )? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "14\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Who is neddy's father? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "bertie\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Who is neddy's mother? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "nellie\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Do you want to enter details of a horse (Y or N)? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "y\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the name of the horse: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "stallion\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " How old is stallion? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "14\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " How high is stallion ( in hands )? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "18\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Who is stallion's father? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "father stallio\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Who is stallion's mother? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "mother stallion\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Do you want to enter details of a horse (Y or N)? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "n\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " neddy is 13 years old, 14 hands h1igh, and has bertie and nellie as parents.\n",
        "stallion is 14 years old, 18 hands h1igh, and has father stallio and mother stallion as parents.\n"
       ]
      }
     ],
     "prompt_number": 20
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Program 11.6, page no. 456"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "\n",
      "\n",
      "class Date:\n",
      "    day = 0\n",
      "    month = 0\n",
      "    year = 0\n",
      " \n",
      "class Family:\n",
      "    dob = Date()\n",
      "    name = \"\"\n",
      "    father = \"\"\n",
      "    mother = \"\"\n",
      "    next = None\n",
      "    previous = None\n",
      "    \n",
      "def get_person():\n",
      "    temp = Family()\n",
      "    print \"Enter the name of the person: \",\n",
      "    temp.name = raw_input()\n",
      "    print \"Enter %s's date of birth (day month year) \" %temp.name,\n",
      "    temp.dob.day = int(raw_input(\"Day: \"))\n",
      "    temp.dob.month = int(raw_input(\"Month: \"))\n",
      "    temp.dob.year = int(raw_input(\"Year: \"))\n",
      "    print \"Who is %s's father? \" %temp.name\n",
      "    temp.father = raw_input()\n",
      "    print \"Who is %s's mother? \" %temp.name\n",
      "    temp.mother = raw_input()\n",
      "    temp.next = None\n",
      "    temp.previous = None\n",
      "    return temp\n",
      " \n",
      "def show_people(pfirst):\n",
      "    current = pfirst\n",
      "    while(current):\n",
      "        print \"%s was born %d/%d/%d and has %s and %s as parents. \" %(current.name, current.dob.day, current.dob.month, current.dob.year, current.father, current.mother)\n",
      "        current = current.next\n",
      "\n",
      "first = None\n",
      "current = None\n",
      "last = None\n",
      " \n",
      "while(True):\n",
      "    print \"Do you want to enter details of a person (Y or N)? \",\n",
      "    choice = raw_input()\n",
      "    if(choice.lower() == 'n'):\n",
      "        break\n",
      "    current = get_person()\n",
      "    if(first == None):\n",
      "        first = current\n",
      "        current.previous = None\n",
      "        last = current\n",
      "    else:\n",
      "        last.next = current\n",
      "        current.previous = last\n",
      "    last = current\n",
      "show_people(first)\n",
      "first = None\n",
      "last = None"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Do you want to enter details of a person (Y or N)? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "y\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the name of the person: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Ricky\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter Ricky's date of birth (day month year) "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Day: 5\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Month: 6\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Year: 1970\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Who is Ricky's father? \n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Michael\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Who is Ricky's mother? \n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Rachel\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Do you want to enter details of a person (Y or N)? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "y\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the name of the person: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Mitchel\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter Mitchel's date of birth (day month year) "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Day: 5\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Month: 9\n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Year: 1967\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Who is Mitchel's father? \n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Martin\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Who is Mitchel's mother? \n"
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Hingies\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Do you want to enter details of a person (Y or N)? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "n\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Ricky was born 5/9/1967 and has Michael and Rachel as parents. \n",
        "Mitchel was born 5/9/1967 and has Martin and Hingies as parents. \n"
       ]
      }
     ],
     "prompt_number": 22
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Program 11.7, page no. 466"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "\n",
      "\n",
      "class Node:\n",
      "    item = 0.0\n",
      "    count = 0\n",
      "    pLeft = None\n",
      "    pRight = None\n",
      " \n",
      "def create_node(value):\n",
      "    pNode = Node()\n",
      "    pNode.item = value\n",
      "    pNode.count = 1\n",
      "    return pNode\n",
      "\n",
      "def add_node(value, pNode):\n",
      "    if(pNode is None):\n",
      "        return create_node(value)\n",
      "    if(value == pNode.item):\n",
      "        pNode.count += 1\n",
      "        return pNode\n",
      "    if(value < pNode.item):\n",
      "        if(pNode.pLeft is None):\n",
      "            pNode.pLeft = create_node(value);\n",
      "            return pNode.pLeft\n",
      "        else:\n",
      "            return add_node(value, pNode.pLeft)\n",
      "    else:\n",
      "        if(pNode.pRight is None):\n",
      "            pNode. pRight = create_node(value)\n",
      "            return pNode.pRight\n",
      "        else:\n",
      "            return add_node(value, pNode.pRight)\n",
      "\n",
      "\n",
      "def list_nodes(pNode):\n",
      "    if(pNode.pLeft):\n",
      "        list_nodes(pNode.pLeft)\n",
      "    print \"%10d x %10ld\" %(pNode.count, pNode.item)\n",
      "    if(pNode.pRight):\n",
      "        list_nodes(pNode.pRight)\n",
      "\n",
      "\n",
      "pRoot = None\n",
      "answer = 'n'\n",
      "while(True):\n",
      "    print \"Enter the node value: \",\n",
      "    newvalue = float(raw_input())\n",
      "    if(pRoot is None):\n",
      "        pRoot = create_node(newvalue)\n",
      "    else:\n",
      "        add_node(newvalue, pRoot)\n",
      "    print \"Do you want to enter another (y or n)? \",\n",
      "    answer = raw_input()\n",
      "    if answer == \"n\":\n",
      "        break\n",
      "print \"The values in ascending sequence are: \"\n",
      "list_nodes(pRoot)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter the node value: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "56\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Do you want to enter another (y or n)? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "y\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the node value: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "33\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Do you want to enter another (y or n)? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "y\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the node value: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "77\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Do you want to enter another (y or n)? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "y\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the node value: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "-10\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Do you want to enter another (y or n)? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "y\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the node value: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "200\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Do you want to enter another (y or n)? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "y\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the node value: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "-10\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Do you want to enter another (y or n)? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "y\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the node value: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "-5\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Do you want to enter another (y or n)? "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "n\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " The values in ascending sequence are: \n",
        "         2 x        -10\n",
        "         1 x         -5\n",
        "         1 x         33\n",
        "         1 x         56\n",
        "         1 x         77\n",
        "         1 x        200\n"
       ]
      }
     ],
     "prompt_number": 1
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Program 11.8, page no. 470"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "\n",
      "\n",
      "def print_date(date):\n",
      "    if date.format == 0:\n",
      "        print \"The date is %d/%d/%d.\" %(date.date.nDate.day, date.date.nDate.month, date.date.nDate.year)\n",
      "    elif date.format == 1:\n",
      "        print \"The date is %s. \" %date.date.date_str\n",
      "    elif date.format == 2:\n",
      "        print \"The date is %s %s %d. \" %(date.date.day_date.day, date.date.day_date.date, date.date.day_date.year)\n",
      "    else:\n",
      "        print \"Invalid date format.\"\n",
      "\n",
      "class Date_Format:\n",
      "    numeric = 0\n",
      "    text = 1\n",
      "    mixed = 2\n",
      "\n",
      "class MixedDate:\n",
      "    def __init__(self, d=\"\", dt=\"\", yr=0):\n",
      "        self.day = d\n",
      "        self.date = dt\n",
      "        self.year = yr\n",
      "\n",
      "class NumericDate:\n",
      "    def __init__(self, d=0, mnt=0, yr=0):\n",
      "        self.day = d\n",
      "        self.month = mnt\n",
      "        self.year = yr\n",
      "\n",
      "class UDate:\n",
      "    date_str = \"\"\n",
      "    day_date = MixedDate()\n",
      "    nDate = NumericDate()\n",
      "\n",
      "class Date:\n",
      "    format = Date_Format()\n",
      "    date = UDate()\n",
      "\n",
      "form = Date_Format()\n",
      "yesterday = NumericDate(11, 11, 2012)\n",
      "today = MixedDate(\"Monday\", \"12th November\", 2012)\n",
      "tomorrow = UDate()\n",
      "tomorrow.date_str = \"Tues 13th Nov 2012\"\n",
      "\n",
      "udate = tomorrow\n",
      "the_date = Date()\n",
      "the_date.date = udate\n",
      "the_date.format = form.text\n",
      "print_date(the_date)\n",
      "\n",
      "the_date.date.nDate = yesterday\n",
      "the_date.format = form.numeric\n",
      "print_date(the_date)\n",
      " \n",
      "the_date.date.day_date = today\n",
      "the_date.format = form.mixed\n",
      "print_date(the_date)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "The date is Tues 13th Nov 2012. \n",
        "The date is 11/11/2012.\n",
        "The date is Monday 12th November 2012. \n"
       ]
      }
     ],
     "prompt_number": 3
    },
    {
     "cell_type": "heading",
     "level": 2,
     "metadata": {},
     "source": [
      "Program 11.9, page no. 482"
     ]
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "\n",
      "\n",
      "import numpy\n",
      "import sys\n",
      "\n",
      "\n",
      "PAGE_HEIGHT = 41\n",
      "PAGE_WIDTH = 75\n",
      " \n",
      "class Bar:\n",
      "    value = 0\n",
      "    pNext = None\n",
      " \n",
      "def create_bar_list():\n",
      "    pFirst = None\n",
      "    pBar = None\n",
      "    pCurrent = None\n",
      "    pBar = new_bar()\n",
      "    while(pBar != None):\n",
      "        if(pCurrent):\n",
      "            pCurrent.pNext = pBar\n",
      "            pCurrent = pBar\n",
      "        else:\n",
      "            pFirst = pCurrent = pBar\n",
      "            #pCurrent = pBar\n",
      "        pBar = new_bar()\n",
      "    return pFirst\n",
      "    \n",
      "def new_bar():\n",
      "    print \"Enter the value of the Bar, or Enter quit to end: \",\n",
      "    value = raw_input()\n",
      "    if(value == \"quit\"):\n",
      "        return None\n",
      "    pBar = Bar()\n",
      "    if(pBar is None):\n",
      "        print \"Oops! Couldn't allocate memory for a bar.\"\n",
      "        sys.exit()\n",
      "    pBar.value = float(value)\n",
      "    pBar.pNext = None\n",
      "    return pBar\n",
      "\n",
      "def bar_chart(pFirst, page_width, page_height, title):\n",
      "    pLast = pFirst;\n",
      "    max = pFirst.value\n",
      "    min = pFirst.value\n",
      "    vert_step = 0.0\n",
      "    bar_count = 1\n",
      "    bar_width = 0\n",
      "    space = 2\n",
      "    column = None\n",
      "    blank = None\n",
      "    position = 0.0\n",
      "    axis = False\n",
      "    while(pLast.pNext):\n",
      "        bar_count += 1\n",
      "        max = pLast.value if (max < pLast.value) else max\n",
      "        min = pLast.value if (min > pLast.value) else min\n",
      "        pLast = pLast.pNext\n",
      "    if(max < 0.0):\n",
      "        max = 0.0\n",
      "    if(min > 0.0):\n",
      "        min = 0.0\n",
      "    vert_step = (max - min)/page_height\n",
      "    bar_width = page_width/bar_count - space\n",
      "    if(bar_width < 1):\n",
      "        print \"Page width too narrow. \"\n",
      "        sys.exit()\n",
      "    column = chart_string(space, bar_width, '#')\n",
      "    if(not (column)):\n",
      "        print \"Failed to allocate memory in bar_chart() - terminating program.\"\n",
      "        sys.exit()\n",
      "    blank = chart_string(space, bar_width, ' ')\n",
      "    if(not (blank)):\n",
      "        print \"Failed to allocate memory in bar_chart() - terminating program.\"\n",
      "        sys.exit(1)\n",
      "    print \"\\n^ %s \" %title\n",
      "    position = max\n",
      "    for i in range(page_height):\n",
      "        if(position <= 0.0 and not(axis)):\n",
      "            draw_x_axis(bar_count*(bar_width + space))\n",
      "            axis = True\n",
      "        print \"|\",\n",
      "        pLast = pFirst\n",
      "        for bars in range(1, bar_count+1):\n",
      "            print \"%s\" %(column if((position <= pLast.value and position > 0.0) or (position >= pLast.value and position <= 0.0)) else blank),\n",
      "            pLast = pLast.pNext\n",
      "        print \"\"\n",
      "        position -= vert_step\n",
      "    if(not axis):\n",
      "        draw_x_axis(bar_count*(bar_width + space))\n",
      "    else:\n",
      "        print \"v\\n\",\n",
      "\n",
      "\n",
      "def chart_string(space, bar_width, ch):\n",
      "    mystr = []\n",
      "    for i in range(space+bar_width):\n",
      "        mystr.append(\"\")\n",
      "    for i in range(space):\n",
      "        mystr[i] =' '\n",
      "    for j in range(space,space+bar_width):\n",
      "        mystr[j] = ch\n",
      "    return ''.join(mystr)\n",
      "\n",
      "def draw_x_axis(length):\n",
      "    print \"+\",\n",
      "    for x in range(length):\n",
      "        print \"-\",\n",
      "    print \">\"\n",
      "\n",
      "pFirst = None\n",
      "print \"Enter the chart title: \",\n",
      "title = raw_input()\n",
      "pFirst = create_bar_list()\n",
      "p = pFirst\n",
      "while (p):\n",
      "    print p.value\n",
      "    p = p.pNext\n",
      "bar_chart(pFirst, PAGE_WIDTH, PAGE_HEIGHT, title)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Enter the chart title: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Average Temperatures\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the value of the Bar, or Enter quit to end: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "-12\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the value of the Bar, or Enter quit to end: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "-15\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the value of the Bar, or Enter quit to end: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "2\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the value of the Bar, or Enter quit to end: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "5\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the value of the Bar, or Enter quit to end: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "13\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the value of the Bar, or Enter quit to end: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "20\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the value of the Bar, or Enter quit to end: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "26\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the value of the Bar, or Enter quit to end: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "32\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the value of the Bar, or Enter quit to end: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "23\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the value of the Bar, or Enter quit to end: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "17\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the value of the Bar, or Enter quit to end: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "-1\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the value of the Bar, or Enter quit to end: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "-4\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " Enter the value of the Bar, or Enter quit to end: "
       ]
      },
      {
       "name": "stdout",
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "quit\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " -12.0\n",
        "-15.0\n",
        "2.0\n",
        "5.0\n",
        "13.0\n",
        "20.0\n",
        "26.0\n",
        "32.0\n",
        "23.0\n",
        "17.0\n",
        "-1.0\n",
        "-4.0\n",
        "\n",
        "^ Average Temperatures \n",
        "|                                                    ####                             \n",
        "|                                                    ####                             \n",
        "|                                                    ####                             \n",
        "|                                                    ####                             \n",
        "|                                                    ####                             \n",
        "|                                                    ####                             \n",
        "|                                             ####   ####                             \n",
        "|                                             ####   ####                             \n",
        "|                                             ####   ####   ####                      \n",
        "|                                             ####   ####   ####                      \n",
        "|                                             ####   ####   ####                      \n",
        "|                                      ####   ####   ####   ####                      \n",
        "|                                      ####   ####   ####   ####                      \n",
        "|                                      ####   ####   ####   ####                      \n",
        "|                                      ####   ####   ####   ####   ####               \n",
        "|                                      ####   ####   ####   ####   ####               \n",
        "|                                      ####   ####   ####   ####   ####               \n",
        "|                               ####   ####   ####   ####   ####   ####               \n",
        "|                               ####   ####   ####   ####   ####   ####               \n",
        "|                               ####   ####   ####   ####   ####   ####               \n",
        "|                               ####   ####   ####   ####   ####   ####               \n",
        "|                               ####   ####   ####   ####   ####   ####               \n",
        "|                               ####   ####   ####   ####   ####   ####               \n",
        "|                               ####   ####   ####   ####   ####   ####               \n",
        "|                        ####   ####   ####   ####   ####   ####   ####               \n",
        "|                        ####   ####   ####   ####   ####   ####   ####               \n",
        "|                        ####   ####   ####   ####   ####   ####   ####               \n",
        "|                 ####   ####   ####   ####   ####   ####   ####   ####               \n",
        "+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >\n",
        "|   ####   ####                                                           ####   #### \n",
        "|   ####   ####                                                                  #### \n",
        "|   ####   ####                                                                  #### \n",
        "|   ####   ####                                                                  #### \n",
        "|   ####   ####                                                                       \n",
        "|   ####   ####                                                                       \n",
        "|   ####   ####                                                                       \n",
        "|   ####   ####                                                                       \n",
        "|   ####   ####                                                                       \n",
        "|   ####   ####                                                                       \n",
        "|   ####   ####                                                                       \n",
        "|          ####                                                                       \n",
        "|          ####                                                                       \n",
        "v\n"
       ]
      }
     ],
     "prompt_number": 2
    }
   ],
   "metadata": {}
  }
 ]
}