      "        hanoi(num_disks, src, dest, buff)\n",
      "        assert_equal(dest.pop(), 5)\n",
      "\n",
      "        print('Test: 2 or more disks')\n",
      "        for i in range(num_disks, -1, -1):\n",
      "            src.push(i)\n",
      "        hanoi(num_disks, src, dest, buff)\n",
      "        for i in range(0, num_disks):\n",
      "            assert_equal(dest.pop(), i)\n",
      "\n",
      "        print('Success: test_hanoi')\n",
      "\n",
      "\n",
      "def main():\n",
 
</s> remove     "        for i in range(num_disks, -1, -1):\n",
    "            src.push(i)\n",
    "        hanoi(num_disks, src, dest, buff)\n",
    "        for i in range(0, num_disks):\n",
    "            assert_equal(dest.pop(), i)\n",
 </s> add     "        for disk_index in range(num_disks, -1, -1):\n",
    "            src.push(disk_index)\n",
    "        hanoi.move_disks(num_disks, src, dest, buff)\n",
    "        for disk_index in range(0, num_disks):\n",
    "            assert_equal(dest.pop(), disk_index)\n", </s> remove     "        hanoi(num_disks, src, dest, buff)\n",
 </s> add     "        hanoi.move_disks(num_disks, src, dest, buff)\n", </s> remove     "        hanoi(num_disks, src, dest, buff)\n",
 </s> add     "        hanoi.move_disks(num_disks, src, dest, buff)\n", </s> remove         for i in range(num_disks, -1, -1):
            src.push(i)
        hanoi(num_disks, src, dest, buff)
        for i in range(0, num_disks):
            assert_equal(dest.pop(), i)
 </s> add         for disk_index in range(num_disks, -1, -1):
            src.push(disk_index)
        hanoi.move_disks(num_disks, src, dest, buff)
        for disk_index in range(0, num_disks):
            assert_equal(dest.pop(), disk_index) </s> remove         hanoi(num_disks, src, dest, buff)
 </s> add         hanoi.move_disks(num_disks, src, dest, buff)
    "        for disk_index in range(num_disks, -1, -1):\n",
    "            src.push(disk_index)\n",
    "        hanoi.move_disks(num_disks, src, dest, buff)\n",
    "        for disk_index in range(0, num_disks):\n",
    "            assert_equal(dest.pop(), disk_index)\n",
      "        hanoi(num_disks, src, dest, buff)\n",
      "        assert_equal(dest.pop(), 5)\n",
      "\n",
      "        print('Test: 2 or more disks')\n",
    "        for disk_index in range(num_disks, -1, -1):\n",
    "            src.push(disk_index)\n",
    "        hanoi.move_disks(num_disks, src, dest, buff)\n",
    "        for disk_index in range(0, num_disks):\n",
    "            assert_equal(dest.pop(), disk_index)\n",
    "        for disk_index in range(num_disks, -1, -1):\n",
    "            src.push(disk_index)\n",
    "        hanoi.move_disks(num_disks, src, dest, buff)\n",
    "        for disk_index in range(0, num_disks):\n",
    "            assert_equal(dest.pop(), disk_index)\n",
    "        for disk_index in range(num_disks, -1, -1):\n",
    "            src.push(disk_index)\n",
    "        hanoi.move_disks(num_disks, src, dest, buff)\n",
    "        for disk_index in range(0, num_disks):\n",
    "            assert_equal(dest.pop(), disk_index)\n",
    "        for disk_index in range(num_disks, -1, -1):\n",
    "            src.push(disk_index)\n",
    "        hanoi.move_disks(num_disks, src, dest, buff)\n",
    "        for disk_index in range(0, num_disks):\n",
    "            assert_equal(dest.pop(), disk_index)\n",
    "        for disk_index in range(num_disks, -1, -1):\n",
    "            src.push(disk_index)\n",
    "        hanoi.move_disks(num_disks, src, dest, buff)\n",
    "        for disk_index in range(0, num_disks):\n",
    "            assert_equal(dest.pop(), disk_index)\n",
      "\n",
      "        print('Success: test_hanoi')\n",
      "\n",
      "\n",
      "def main():\n",
keep keep keep keep replace replace replace replace replace keep keep keep keep keep
 Update hanoi challenge (#121)

Update constraints and test cases.  Move implementation to a class.  Update tests. 
recursion_dynamic/hanoi/hanoi_challenge.ipynb