{ "metadata": { "name": "", "signature": "sha256:796179cdb4347de4d86a7db09f3e024ef710983a025f30cfe2a424e9a755bc6b" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "code", "collapsed": false, "input": [ "members = ['Freddie', 'Brian', 'Roger', 'John']\n", "tour_lineup = members\n", "tour_lineup[0] = 'Paul'\n", "print(tour_lineup)\n", "print(members)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['Paul', 'Brian', 'Roger', 'John']\n", "['Paul', 'Brian', 'Roger', 'John']\n" ] } ], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "members[1:2]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 2, "text": [ "['Brian']" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "members = ['Freddie', 'Brian', 'Roger', 'John']\n", "tour_lineup = members\n", "tour_lineup == members" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ "True" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "tour_lineup = members[:]\n", "tour_lineup == members" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 4, "text": [ "True" ] } ], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "tour_lineup is members" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 5, "text": [ "False" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "[(a, b, int((a**2 + b**2)**0.5)) \n", " for a in range(1, 20) \n", " for b in range(a, 20) \n", " if int((a**2 + b**2)**0.5) == (a**2 + b**2)**0.5]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "[(3, 4, 5), (5, 12, 13), (6, 8, 10), (8, 15, 17), (9, 12, 15), (12, 16, 20)]" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "GRID_STRING = \"\"\"08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08\n", "49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00\n", "81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65\n", "52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91\n", "22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80\n", "24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50\n", "32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70\n", "67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21\n", "24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72\n", "21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95\n", "78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92\n", "16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57\n", "86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58\n", "19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40\n", "04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66\n", "88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69\n", "04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36\n", "20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16\n", "20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54\n", "01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48\"\"\"\n", "ROWS = COLUMNS = 20" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "grid_nums = [int(n) for n in GRID_STRING.split()]\n", "grid_nums" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ "[8,\n", " 2,\n", " 22,\n", " 97,\n", " 38,\n", " 15,\n", " 0,\n", " 40,\n", " 0,\n", " 75,\n", " 4,\n", " 5,\n", " 7,\n", " 78,\n", " 52,\n", " 12,\n", " 50,\n", " 77,\n", " 91,\n", " 8,\n", " 49,\n", " 49,\n", " 99,\n", " 40,\n", " 17,\n", " 81,\n", " 18,\n", " 57,\n", " 60,\n", " 87,\n", " 17,\n", " 40,\n", " 98,\n", " 43,\n", " 69,\n", " 48,\n", " 4,\n", " 56,\n", " 62,\n", " 0,\n", " 81,\n", " 49,\n", " 31,\n", " 73,\n", " 55,\n", " 79,\n", " 14,\n", " 29,\n", " 93,\n", " 71,\n", " 40,\n", " 67,\n", " 53,\n", " 88,\n", " 30,\n", " 3,\n", " 49,\n", " 13,\n", " 36,\n", " 65,\n", " 52,\n", " 70,\n", " 95,\n", " 23,\n", " 4,\n", " 60,\n", " 11,\n", " 42,\n", " 69,\n", " 24,\n", " 68,\n", " 56,\n", " 1,\n", " 32,\n", " 56,\n", " 71,\n", " 37,\n", " 2,\n", " 36,\n", " 91,\n", " 22,\n", " 31,\n", " 16,\n", " 71,\n", " 51,\n", " 67,\n", " 63,\n", " 89,\n", " 41,\n", " 92,\n", " 36,\n", " 54,\n", " 22,\n", " 40,\n", " 40,\n", " 28,\n", " 66,\n", " 33,\n", " 13,\n", " 80,\n", " 24,\n", " 47,\n", " 32,\n", " 60,\n", " 99,\n", " 3,\n", " 45,\n", " 2,\n", " 44,\n", " 75,\n", " 33,\n", " 53,\n", " 78,\n", " 36,\n", " 84,\n", " 20,\n", " 35,\n", " 17,\n", " 12,\n", " 50,\n", " 32,\n", " 98,\n", " 81,\n", " 28,\n", " 64,\n", " 23,\n", " 67,\n", " 10,\n", " 26,\n", " 38,\n", " 40,\n", " 67,\n", " 59,\n", " 54,\n", " 70,\n", " 66,\n", " 18,\n", " 38,\n", " 64,\n", " 70,\n", " 67,\n", " 26,\n", " 20,\n", " 68,\n", " 2,\n", " 62,\n", " 12,\n", " 20,\n", " 95,\n", " 63,\n", " 94,\n", " 39,\n", " 63,\n", " 8,\n", " 40,\n", " 91,\n", " 66,\n", " 49,\n", " 94,\n", " 21,\n", " 24,\n", " 55,\n", " 58,\n", " 5,\n", " 66,\n", " 73,\n", " 99,\n", " 26,\n", " 97,\n", " 17,\n", " 78,\n", " 78,\n", " 96,\n", " 83,\n", " 14,\n", " 88,\n", " 34,\n", " 89,\n", " 63,\n", " 72,\n", " 21,\n", " 36,\n", " 23,\n", " 9,\n", " 75,\n", " 0,\n", " 76,\n", " 44,\n", " 20,\n", " 45,\n", " 35,\n", " 14,\n", " 0,\n", " 61,\n", " 33,\n", " 97,\n", " 34,\n", " 31,\n", " 33,\n", " 95,\n", " 78,\n", " 17,\n", " 53,\n", " 28,\n", " 22,\n", " 75,\n", " 31,\n", " 67,\n", " 15,\n", " 94,\n", " 3,\n", " 80,\n", " 4,\n", " 62,\n", " 16,\n", " 14,\n", " 9,\n", " 53,\n", " 56,\n", " 92,\n", " 16,\n", " 39,\n", " 5,\n", " 42,\n", " 96,\n", " 35,\n", " 31,\n", " 47,\n", " 55,\n", " 58,\n", " 88,\n", " 24,\n", " 0,\n", " 17,\n", " 54,\n", " 24,\n", " 36,\n", " 29,\n", " 85,\n", " 57,\n", " 86,\n", " 56,\n", " 0,\n", " 48,\n", " 35,\n", " 71,\n", " 89,\n", " 7,\n", " 5,\n", " 44,\n", " 44,\n", " 37,\n", " 44,\n", " 60,\n", " 21,\n", " 58,\n", " 51,\n", " 54,\n", " 17,\n", " 58,\n", " 19,\n", " 80,\n", " 81,\n", " 68,\n", " 5,\n", " 94,\n", " 47,\n", " 69,\n", " 28,\n", " 73,\n", " 92,\n", " 13,\n", " 86,\n", " 52,\n", " 17,\n", " 77,\n", " 4,\n", " 89,\n", " 55,\n", " 40,\n", " 4,\n", " 52,\n", " 8,\n", " 83,\n", " 97,\n", " 35,\n", " 99,\n", " 16,\n", " 7,\n", " 97,\n", " 57,\n", " 32,\n", " 16,\n", " 26,\n", " 26,\n", " 79,\n", " 33,\n", " 27,\n", " 98,\n", " 66,\n", " 88,\n", " 36,\n", " 68,\n", " 87,\n", " 57,\n", " 62,\n", " 20,\n", " 72,\n", " 3,\n", " 46,\n", " 33,\n", " 67,\n", " 46,\n", " 55,\n", " 12,\n", " 32,\n", " 63,\n", " 93,\n", " 53,\n", " 69,\n", " 4,\n", " 42,\n", " 16,\n", " 73,\n", " 38,\n", " 25,\n", " 39,\n", " 11,\n", " 24,\n", " 94,\n", " 72,\n", " 18,\n", " 8,\n", " 46,\n", " 29,\n", " 32,\n", " 40,\n", " 62,\n", " 76,\n", " 36,\n", " 20,\n", " 69,\n", " 36,\n", " 41,\n", " 72,\n", " 30,\n", " 23,\n", " 88,\n", " 34,\n", " 62,\n", " 99,\n", " 69,\n", " 82,\n", " 67,\n", " 59,\n", " 85,\n", " 74,\n", " 4,\n", " 36,\n", " 16,\n", " 20,\n", " 73,\n", " 35,\n", " 29,\n", " 78,\n", " 31,\n", " 90,\n", " 1,\n", " 74,\n", " 31,\n", " 49,\n", " 71,\n", " 48,\n", " 86,\n", " 81,\n", " 16,\n", " 23,\n", " 57,\n", " 5,\n", " 54,\n", " 1,\n", " 70,\n", " 54,\n", " 71,\n", " 83,\n", " 51,\n", " 54,\n", " 69,\n", " 16,\n", " 92,\n", " 33,\n", " 48,\n", " 61,\n", " 43,\n", " 52,\n", " 1,\n", " 89,\n", " 19,\n", " 67,\n", " 48]" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "g1 = []\n", "for rowstart in range(0, ROWS * COLUMNS, COLUMNS):\n", " g1.append(grid_nums[rowstart:rowstart+COLUMNS])\n", "g1" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "[[8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8],\n", " [49,\n", " 49,\n", " 99,\n", " 40,\n", " 17,\n", " 81,\n", " 18,\n", " 57,\n", " 60,\n", " 87,\n", " 17,\n", " 40,\n", " 98,\n", " 43,\n", " 69,\n", " 48,\n", " 4,\n", " 56,\n", " 62,\n", " 0],\n", " [81,\n", " 49,\n", " 31,\n", " 73,\n", " 55,\n", " 79,\n", " 14,\n", " 29,\n", " 93,\n", " 71,\n", " 40,\n", " 67,\n", " 53,\n", " 88,\n", " 30,\n", " 3,\n", " 49,\n", " 13,\n", " 36,\n", " 65],\n", " [52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 1, 32, 56, 71, 37, 2, 36, 91],\n", " [22,\n", " 31,\n", " 16,\n", " 71,\n", " 51,\n", " 67,\n", " 63,\n", " 89,\n", " 41,\n", " 92,\n", " 36,\n", " 54,\n", " 22,\n", " 40,\n", " 40,\n", " 28,\n", " 66,\n", " 33,\n", " 13,\n", " 80],\n", " [24,\n", " 47,\n", " 32,\n", " 60,\n", " 99,\n", " 3,\n", " 45,\n", " 2,\n", " 44,\n", " 75,\n", " 33,\n", " 53,\n", " 78,\n", " 36,\n", " 84,\n", " 20,\n", " 35,\n", " 17,\n", " 12,\n", " 50],\n", " [32,\n", " 98,\n", " 81,\n", " 28,\n", " 64,\n", " 23,\n", " 67,\n", " 10,\n", " 26,\n", " 38,\n", " 40,\n", " 67,\n", " 59,\n", " 54,\n", " 70,\n", " 66,\n", " 18,\n", " 38,\n", " 64,\n", " 70],\n", " [67,\n", " 26,\n", " 20,\n", " 68,\n", " 2,\n", " 62,\n", " 12,\n", " 20,\n", " 95,\n", " 63,\n", " 94,\n", " 39,\n", " 63,\n", " 8,\n", " 40,\n", " 91,\n", " 66,\n", " 49,\n", " 94,\n", " 21],\n", " [24,\n", " 55,\n", " 58,\n", " 5,\n", " 66,\n", " 73,\n", " 99,\n", " 26,\n", " 97,\n", " 17,\n", " 78,\n", " 78,\n", " 96,\n", " 83,\n", " 14,\n", " 88,\n", " 34,\n", " 89,\n", " 63,\n", " 72],\n", " [21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 0, 61, 33, 97, 34, 31, 33, 95],\n", " [78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 4, 62, 16, 14, 9, 53, 56, 92],\n", " [16,\n", " 39,\n", " 5,\n", " 42,\n", " 96,\n", " 35,\n", " 31,\n", " 47,\n", " 55,\n", " 58,\n", " 88,\n", " 24,\n", " 0,\n", " 17,\n", " 54,\n", " 24,\n", " 36,\n", " 29,\n", " 85,\n", " 57],\n", " [86, 56, 0, 48, 35, 71, 89, 7, 5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58],\n", " [19,\n", " 80,\n", " 81,\n", " 68,\n", " 5,\n", " 94,\n", " 47,\n", " 69,\n", " 28,\n", " 73,\n", " 92,\n", " 13,\n", " 86,\n", " 52,\n", " 17,\n", " 77,\n", " 4,\n", " 89,\n", " 55,\n", " 40],\n", " [4, 52, 8, 83, 97, 35, 99, 16, 7, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66],\n", " [88,\n", " 36,\n", " 68,\n", " 87,\n", " 57,\n", " 62,\n", " 20,\n", " 72,\n", " 3,\n", " 46,\n", " 33,\n", " 67,\n", " 46,\n", " 55,\n", " 12,\n", " 32,\n", " 63,\n", " 93,\n", " 53,\n", " 69],\n", " [4,\n", " 42,\n", " 16,\n", " 73,\n", " 38,\n", " 25,\n", " 39,\n", " 11,\n", " 24,\n", " 94,\n", " 72,\n", " 18,\n", " 8,\n", " 46,\n", " 29,\n", " 32,\n", " 40,\n", " 62,\n", " 76,\n", " 36],\n", " [20,\n", " 69,\n", " 36,\n", " 41,\n", " 72,\n", " 30,\n", " 23,\n", " 88,\n", " 34,\n", " 62,\n", " 99,\n", " 69,\n", " 82,\n", " 67,\n", " 59,\n", " 85,\n", " 74,\n", " 4,\n", " 36,\n", " 16],\n", " [20,\n", " 73,\n", " 35,\n", " 29,\n", " 78,\n", " 31,\n", " 90,\n", " 1,\n", " 74,\n", " 31,\n", " 49,\n", " 71,\n", " 48,\n", " 86,\n", " 81,\n", " 16,\n", " 23,\n", " 57,\n", " 5,\n", " 54],\n", " [1,\n", " 70,\n", " 54,\n", " 71,\n", " 83,\n", " 51,\n", " 54,\n", " 69,\n", " 16,\n", " 92,\n", " 33,\n", " 48,\n", " 61,\n", " 43,\n", " 52,\n", " 1,\n", " 89,\n", " 19,\n", " 67,\n", " 48]]" ] } ], "prompt_number": 9 }, { "cell_type": "code", "collapsed": false, "input": [ "g2 = {}\n", "for x in range(COLUMNS):\n", " for y in range(ROWS):\n", " g2[(x, y)] = grid_nums[x + y * COLUMNS]\n", "g2" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 10, "text": [ "{(7, 3): 42,\n", " (6, 9): 76,\n", " (17, 11): 29,\n", " (19, 19): 48,\n", " (16, 6): 18,\n", " (7, 12): 7,\n", " (19, 4): 80,\n", " (18, 4): 13,\n", " (18, 19): 67,\n", " (8, 5): 44,\n", " (10, 8): 78,\n", " (9, 0): 75,\n", " (11, 5): 53,\n", " (10, 7): 94,\n", " (14, 18): 81,\n", " (12, 6): 59,\n", " (10, 18): 49,\n", " (0, 17): 20,\n", " (15, 11): 24,\n", " (14, 1): 69,\n", " (13, 7): 8,\n", " (12, 17): 82,\n", " (0, 4): 22,\n", " (15, 4): 28,\n", " (1, 1): 49,\n", " (4, 10): 22,\n", " (3, 2): 73,\n", " (2, 6): 81,\n", " (5, 11): 35,\n", " (4, 5): 99,\n", " (6, 0): 0,\n", " (4, 16): 38,\n", " (7, 5): 2,\n", " (19, 13): 40,\n", " (7, 0): 40,\n", " (16, 19): 89,\n", " (17, 7): 49,\n", " (18, 10): 56,\n", " (17, 18): 57,\n", " (16, 8): 34,\n", " (8, 12): 5,\n", " (9, 9): 45,\n", " (10, 14): 57,\n", " (8, 18): 74,\n", " (11, 15): 67,\n", " (9, 19): 92,\n", " (15, 16): 32,\n", " (14, 8): 14,\n", " (13, 0): 78,\n", " (12, 8): 96,\n", " (11, 16): 18,\n", " (15, 13): 77,\n", " (13, 13): 52,\n", " (2, 18): 35,\n", " (0, 14): 4,\n", " (3, 11): 42,\n", " (2, 1): 99,\n", " (1, 15): 36,\n", " (4, 12): 35,\n", " (2, 12): 0,\n", " (5, 1): 81,\n", " (3, 17): 41,\n", " (16, 7): 66,\n", " (6, 14): 99,\n", " (19, 18): 54,\n", " (17, 6): 38,\n", " (7, 15): 72,\n", " (19, 7): 21,\n", " (18, 5): 12,\n", " (7, 1): 57,\n", " (18, 16): 76,\n", " (8, 6): 26,\n", " (10, 9): 35,\n", " (9, 7): 63,\n", " (11, 4): 54,\n", " (10, 4): 36,\n", " (14, 19): 52,\n", " (12, 7): 63,\n", " (11, 9): 14,\n", " (10, 19): 33,\n", " (0, 18): 20,\n", " (15, 10): 14,\n", " (14, 6): 70,\n", " (13, 6): 54,\n", " (12, 18): 48,\n", " (1, 19): 70,\n", " (0, 5): 24,\n", " (15, 7): 91,\n", " (13, 19): 43,\n", " (1, 0): 2,\n", " (0, 8): 24,\n", " (4, 11): 96,\n", " (3, 5): 60,\n", " (2, 7): 20,\n", " (5, 10): 75,\n", " (4, 6): 64,\n", " (6, 1): 18,\n", " (5, 7): 62,\n", " (4, 17): 72,\n", " (16, 1): 4,\n", " (19, 12): 58,\n", " (17, 12): 54,\n", " (7, 17): 88,\n", " (19, 1): 0,\n", " (18, 11): 85,\n", " (7, 6): 10,\n", " (8, 13): 28,\n", " (9, 8): 17,\n", " (8, 0): 0,\n", " (10, 15): 33,\n", " (8, 19): 16,\n", " (11, 14): 32,\n", " (9, 18): 31,\n", " (15, 19): 1,\n", " (14, 9): 33,\n", " (12, 9): 0,\n", " (11, 19): 48,\n", " (15, 12): 58,\n", " (13, 12): 60,\n", " (2, 19): 54,\n", " (0, 15): 88,\n", " (3, 10): 28,\n", " (1, 14): 52,\n", " (4, 13): 5,\n", " (2, 13): 81,\n", " (5, 0): 15,\n", " (3, 16): 73,\n", " (6, 15): 20,\n", " (16, 9): 34,\n", " (16, 10): 9,\n", " (7, 14): 16,\n", " (6, 18): 90,\n", " (19, 6): 70,\n", " (18, 2): 36,\n", " (17, 10): 53,\n", " (18, 17): 36,\n", " (16, 2): 49,\n", " (8, 7): 95,\n", " (9, 6): 38,\n", " (11, 7): 39,\n", " (10, 5): 33,\n", " (14, 16): 29,\n", " (12, 0): 7,\n", " (11, 8): 78,\n", " (10, 16): 72,\n", " (0, 19): 1,\n", " (14, 7): 40,\n", " (13, 5): 36,\n", " (12, 19): 61,\n", " (1, 18): 73,\n", " (0, 6): 32,\n", " (15, 6): 66,\n", " (13, 18): 86,\n", " (1, 7): 26,\n", " (0, 9): 21,\n", " (3, 4): 71,\n", " (2, 4): 16,\n", " (5, 9): 0,\n", " (4, 7): 2,\n", " (6, 6): 67,\n", " (5, 6): 23,\n", " (4, 18): 78,\n", " (7, 7): 20,\n", " (5, 19): 51,\n", " (19, 15): 69,\n", " (17, 3): 2,\n", " (7, 16): 11,\n", " (19, 0): 8,\n", " (18, 8): 63,\n", " (17, 16): 62,\n", " (7, 4): 89,\n", " (9, 15): 46,\n", " (8, 1): 60,\n", " (10, 12): 44,\n", " (11, 1): 40,\n", " (9, 17): 62,\n", " (15, 18): 16,\n", " (14, 14): 26,\n", " (12, 10): 4,\n", " (11, 18): 71,\n", " (15, 15): 32,\n", " (13, 11): 17,\n", " (2, 16): 16,\n", " (0, 0): 8,\n", " (8, 14): 7,\n", " (1, 13): 80,\n", " (4, 14): 97,\n", " (2, 10): 53,\n", " (5, 15): 62,\n", " (3, 19): 71,\n", " (6, 12): 89,\n", " (17, 4): 33,\n", " (16, 12): 51,\n", " (6, 19): 54,\n", " (19, 9): 95,\n", " (18, 3): 36,\n", " (17, 9): 31,\n", " (18, 14): 98,\n", " (17, 17): 4,\n", " (16, 0): 50,\n", " (16, 15): 63,\n", " (9, 5): 75,\n", " (11, 6): 67,\n", " (10, 2): 40,\n", " (14, 17): 59,\n", " (12, 1): 98,\n", " (11, 11): 24,\n", " (10, 17): 99,\n", " (14, 4): 40,\n", " (13, 4): 40,\n", " (12, 12): 44,\n", " (1, 17): 69,\n", " (0, 7): 67,\n", " (15, 1): 48,\n", " (13, 17): 67,\n", " (1, 6): 98,\n", " (0, 10): 78,\n", " (17, 13): 89,\n", " (3, 7): 68,\n", " (2, 5): 32,\n", " (1, 11): 39,\n", " (5, 8): 73,\n", " (4, 0): 38,\n", " (6, 7): 12,\n", " (5, 5): 3,\n", " (4, 19): 83,\n", " (16, 3): 37,\n", " (6, 10): 31,\n", " (5, 18): 31,\n", " (19, 14): 66,\n", " (17, 2): 13,\n", " (7, 19): 69,\n", " (19, 3): 91,\n", " (18, 9): 33,\n", " (8, 15): 3,\n", " (9, 14): 97,\n", " (8, 2): 93,\n", " (10, 13): 92,\n", " (9, 3): 24,\n", " (11, 0): 5,\n", " (9, 16): 94,\n", " (14, 15): 12,\n", " (12, 11): 0,\n", " (15, 14): 79,\n", " (14, 2): 30,\n", " (13, 10): 62,\n", " (2, 17): 36,\n", " (0, 1): 49,\n", " (3, 12): 48,\n", " (1, 12): 56,\n", " (4, 15): 57,\n", " (3, 1): 40,\n", " (2, 11): 5,\n", " (5, 14): 35,\n", " (3, 18): 29,\n", " (6, 13): 47,\n", " (7, 8): 26,\n", " (6, 16): 39,\n", " (19, 8): 72,\n", " (18, 0): 91,\n", " (17, 8): 89,\n", " (16, 16): 40,\n", " (18, 15): 53,\n", " (8, 9): 20,\n", " (9, 4): 92,\n", " (7, 11): 47,\n", " (10, 3): 68,\n", " (12, 2): 53,\n", " (11, 10): 80,\n", " (14, 5): 84,\n", " (13, 3): 32,\n", " (12, 13): 86,\n", " (1, 16): 42,\n", " (3, 13): 68,\n", " (15, 0): 12,\n", " (13, 16): 46,\n", " (1, 5): 47,\n", " (0, 11): 16,\n", " (3, 6): 28,\n", " (2, 2): 31,\n", " (1, 10): 17,\n", " (4, 1): 17,\n", " (6, 4): 63,\n", " (5, 4): 67,\n", " (16, 4): 66,\n", " (6, 11): 31,\n", " (5, 17): 30,\n", " (19, 17): 16,\n", " (17, 1): 56,\n", " (7, 18): 1,\n", " (19, 2): 65,\n", " (18, 6): 64,\n", " (9, 13): 73,\n", " (8, 3): 69,\n", " (10, 10): 3,\n", " (9, 2): 71,\n", " (16, 13): 4,\n", " (11, 3): 56,\n", " (14, 12): 21,\n", " (12, 4): 22,\n", " (15, 9): 97,\n", " (14, 3): 56,\n", " (13, 9): 61,\n", " (0, 2): 81,\n", " (3, 15): 87,\n", " (1, 3): 70,\n", " (4, 8): 66,\n", " (3, 0): 97,\n", " (2, 8): 58,\n", " (5, 13): 94,\n", " (6, 2): 14,\n", " (16, 14): 33,\n", " (6, 17): 23,\n", " (19, 11): 57,\n", " (18, 1): 62,\n", " (17, 15): 93,\n", " (16, 17): 74,\n", " (18, 12): 17,\n", " (8, 10): 15,\n", " (9, 11): 58,\n", " (10, 0): 4,\n", " (8, 16): 24,\n", " (12, 3): 1,\n", " (11, 13): 13,\n", " (14, 10): 16,\n", " (13, 2): 88,\n", " (12, 14): 16,\n", " (15, 3): 71,\n", " (13, 15): 55,\n", " (1, 4): 31,\n", " (0, 12): 86,\n", " (3, 9): 9,\n", " (2, 3): 95,\n", " (1, 9): 36,\n", " (4, 2): 55,\n", " (2, 14): 8,\n", " (6, 5): 45,\n", " (5, 3): 60,\n", " (16, 5): 35,\n", " (6, 8): 99,\n", " (5, 16): 25,\n", " (19, 16): 36,\n", " (17, 0): 77,\n", " (7, 13): 69,\n", " (19, 5): 50,\n", " (18, 7): 94,\n", " (7, 9): 44,\n", " (18, 18): 5,\n", " (9, 12): 44,\n", " (8, 4): 41,\n", " (10, 11): 88,\n", " (9, 1): 87,\n", " (17, 5): 17,\n", " (11, 2): 67,\n", " (10, 6): 40,\n", " (16, 11): 36,\n", " (14, 13): 17,\n", " (12, 5): 78,\n", " (0, 16): 4,\n", " (15, 8): 88,\n", " (14, 0): 52,\n", " (13, 8): 83,\n", " (12, 16): 8,\n", " (0, 3): 52,\n", " (15, 5): 20,\n", " (3, 14): 83,\n", " (1, 2): 49,\n", " (4, 9): 75,\n", " (3, 3): 23,\n", " (2, 9): 23,\n", " (5, 12): 71,\n", " (4, 4): 51,\n", " (6, 3): 11,\n", " (8, 8): 97,\n", " (7, 2): 29,\n", " (7, 10): 67,\n", " (19, 10): 92,\n", " (17, 14): 27,\n", " (16, 18): 23,\n", " (18, 13): 55,\n", " (17, 19): 19,\n", " (8, 11): 55,\n", " (9, 10): 94,\n", " (10, 1): 17,\n", " (8, 17): 34,\n", " (11, 12): 37,\n", " (15, 17): 85,\n", " (14, 11): 54,\n", " (13, 1): 43,\n", " (12, 15): 46,\n", " (11, 17): 69,\n", " (15, 2): 3,\n", " (13, 14): 26,\n", " (0, 13): 19,\n", " (3, 8): 5,\n", " (2, 0): 22,\n", " (1, 8): 55,\n", " (4, 3): 4,\n", " (2, 15): 68,\n", " (5, 2): 79}" ] } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "g2[(2, 2)]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ "31" ] } ], "prompt_number": 11 }, { "cell_type": "code", "collapsed": false, "input": [ "g3 = [grid_nums[row * COLUMNS:(row+1) * COLUMNS] for row in range(ROWS)]\n", "g3" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 12, "text": [ "[[8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8],\n", " [49,\n", " 49,\n", " 99,\n", " 40,\n", " 17,\n", " 81,\n", " 18,\n", " 57,\n", " 60,\n", " 87,\n", " 17,\n", " 40,\n", " 98,\n", " 43,\n", " 69,\n", " 48,\n", " 4,\n", " 56,\n", " 62,\n", " 0],\n", " [81,\n", " 49,\n", " 31,\n", " 73,\n", " 55,\n", " 79,\n", " 14,\n", " 29,\n", " 93,\n", " 71,\n", " 40,\n", " 67,\n", " 53,\n", " 88,\n", " 30,\n", " 3,\n", " 49,\n", " 13,\n", " 36,\n", " 65],\n", " [52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 1, 32, 56, 71, 37, 2, 36, 91],\n", " [22,\n", " 31,\n", " 16,\n", " 71,\n", " 51,\n", " 67,\n", " 63,\n", " 89,\n", " 41,\n", " 92,\n", " 36,\n", " 54,\n", " 22,\n", " 40,\n", " 40,\n", " 28,\n", " 66,\n", " 33,\n", " 13,\n", " 80],\n", " [24,\n", " 47,\n", " 32,\n", " 60,\n", " 99,\n", " 3,\n", " 45,\n", " 2,\n", " 44,\n", " 75,\n", " 33,\n", " 53,\n", " 78,\n", " 36,\n", " 84,\n", " 20,\n", " 35,\n", " 17,\n", " 12,\n", " 50],\n", " [32,\n", " 98,\n", " 81,\n", " 28,\n", " 64,\n", " 23,\n", " 67,\n", " 10,\n", " 26,\n", " 38,\n", " 40,\n", " 67,\n", " 59,\n", " 54,\n", " 70,\n", " 66,\n", " 18,\n", " 38,\n", " 64,\n", " 70],\n", " [67,\n", " 26,\n", " 20,\n", " 68,\n", " 2,\n", " 62,\n", " 12,\n", " 20,\n", " 95,\n", " 63,\n", " 94,\n", " 39,\n", " 63,\n", " 8,\n", " 40,\n", " 91,\n", " 66,\n", " 49,\n", " 94,\n", " 21],\n", " [24,\n", " 55,\n", " 58,\n", " 5,\n", " 66,\n", " 73,\n", " 99,\n", " 26,\n", " 97,\n", " 17,\n", " 78,\n", " 78,\n", " 96,\n", " 83,\n", " 14,\n", " 88,\n", " 34,\n", " 89,\n", " 63,\n", " 72],\n", " [21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 0, 61, 33, 97, 34, 31, 33, 95],\n", " [78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 4, 62, 16, 14, 9, 53, 56, 92],\n", " [16,\n", " 39,\n", " 5,\n", " 42,\n", " 96,\n", " 35,\n", " 31,\n", " 47,\n", " 55,\n", " 58,\n", " 88,\n", " 24,\n", " 0,\n", " 17,\n", " 54,\n", " 24,\n", " 36,\n", " 29,\n", " 85,\n", " 57],\n", " [86, 56, 0, 48, 35, 71, 89, 7, 5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58],\n", " [19,\n", " 80,\n", " 81,\n", " 68,\n", " 5,\n", " 94,\n", " 47,\n", " 69,\n", " 28,\n", " 73,\n", " 92,\n", " 13,\n", " 86,\n", " 52,\n", " 17,\n", " 77,\n", " 4,\n", " 89,\n", " 55,\n", " 40],\n", " [4, 52, 8, 83, 97, 35, 99, 16, 7, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66],\n", " [88,\n", " 36,\n", " 68,\n", " 87,\n", " 57,\n", " 62,\n", " 20,\n", " 72,\n", " 3,\n", " 46,\n", " 33,\n", " 67,\n", " 46,\n", " 55,\n", " 12,\n", " 32,\n", " 63,\n", " 93,\n", " 53,\n", " 69],\n", " [4,\n", " 42,\n", " 16,\n", " 73,\n", " 38,\n", " 25,\n", " 39,\n", " 11,\n", " 24,\n", " 94,\n", " 72,\n", " 18,\n", " 8,\n", " 46,\n", " 29,\n", " 32,\n", " 40,\n", " 62,\n", " 76,\n", " 36],\n", " [20,\n", " 69,\n", " 36,\n", " 41,\n", " 72,\n", " 30,\n", " 23,\n", " 88,\n", " 34,\n", " 62,\n", " 99,\n", " 69,\n", " 82,\n", " 67,\n", " 59,\n", " 85,\n", " 74,\n", " 4,\n", " 36,\n", " 16],\n", " [20,\n", " 73,\n", " 35,\n", " 29,\n", " 78,\n", " 31,\n", " 90,\n", " 1,\n", " 74,\n", " 31,\n", " 49,\n", " 71,\n", " 48,\n", " 86,\n", " 81,\n", " 16,\n", " 23,\n", " 57,\n", " 5,\n", " 54],\n", " [1,\n", " 70,\n", " 54,\n", " 71,\n", " 83,\n", " 51,\n", " 54,\n", " 69,\n", " 16,\n", " 92,\n", " 33,\n", " 48,\n", " 61,\n", " 43,\n", " 52,\n", " 1,\n", " 89,\n", " 19,\n", " 67,\n", " 48]]" ] } ], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "g4 = {(x, y): grid_nums[x + y * COLUMNS] \n", " for x in range(COLUMNS) \n", " for y in range(ROWS)}\n", "g4" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 13, "text": [ "{(7, 3): 42,\n", " (6, 9): 76,\n", " (17, 11): 29,\n", " (19, 19): 48,\n", " (16, 6): 18,\n", " (7, 12): 7,\n", " (19, 4): 80,\n", " (18, 4): 13,\n", " (18, 19): 67,\n", " (8, 5): 44,\n", " (10, 8): 78,\n", " (9, 0): 75,\n", " (11, 5): 53,\n", " (10, 7): 94,\n", " (14, 18): 81,\n", " (12, 6): 59,\n", " (10, 18): 49,\n", " (0, 17): 20,\n", " (15, 11): 24,\n", " (14, 1): 69,\n", " (13, 7): 8,\n", " (12, 17): 82,\n", " (0, 4): 22,\n", " (15, 4): 28,\n", " (1, 1): 49,\n", " (4, 10): 22,\n", " (3, 2): 73,\n", " (2, 6): 81,\n", " (5, 11): 35,\n", " (4, 5): 99,\n", " (6, 0): 0,\n", " (4, 16): 38,\n", " (7, 5): 2,\n", " (19, 13): 40,\n", " (7, 0): 40,\n", " (16, 19): 89,\n", " (17, 7): 49,\n", " (18, 10): 56,\n", " (17, 18): 57,\n", " (16, 8): 34,\n", " (8, 12): 5,\n", " (9, 9): 45,\n", " (10, 14): 57,\n", " (8, 18): 74,\n", " (11, 15): 67,\n", " (9, 19): 92,\n", " (15, 16): 32,\n", " (14, 8): 14,\n", " (13, 0): 78,\n", " (12, 8): 96,\n", " (11, 16): 18,\n", " (15, 13): 77,\n", " (13, 13): 52,\n", " (2, 18): 35,\n", " (0, 14): 4,\n", " (3, 11): 42,\n", " (2, 1): 99,\n", " (1, 15): 36,\n", " (4, 12): 35,\n", " (2, 12): 0,\n", " (5, 1): 81,\n", " (3, 17): 41,\n", " (16, 7): 66,\n", " (6, 14): 99,\n", " (19, 18): 54,\n", " (17, 6): 38,\n", " (7, 15): 72,\n", " (19, 7): 21,\n", " (18, 5): 12,\n", " (7, 1): 57,\n", " (18, 16): 76,\n", " (8, 6): 26,\n", " (10, 9): 35,\n", " (9, 7): 63,\n", " (11, 4): 54,\n", " (10, 4): 36,\n", " (14, 19): 52,\n", " (12, 7): 63,\n", " (11, 9): 14,\n", " (10, 19): 33,\n", " (0, 18): 20,\n", " (15, 10): 14,\n", " (14, 6): 70,\n", " (13, 6): 54,\n", " (12, 18): 48,\n", " (1, 19): 70,\n", " (0, 5): 24,\n", " (15, 7): 91,\n", " (13, 19): 43,\n", " (1, 0): 2,\n", " (0, 8): 24,\n", " (4, 11): 96,\n", " (3, 5): 60,\n", " (2, 7): 20,\n", " (5, 10): 75,\n", " (4, 6): 64,\n", " (6, 1): 18,\n", " (5, 7): 62,\n", " (4, 17): 72,\n", " (16, 1): 4,\n", " (19, 12): 58,\n", " (17, 12): 54,\n", " (7, 17): 88,\n", " (19, 1): 0,\n", " (18, 11): 85,\n", " (7, 6): 10,\n", " (8, 13): 28,\n", " (9, 8): 17,\n", " (8, 0): 0,\n", " (10, 15): 33,\n", " (8, 19): 16,\n", " (11, 14): 32,\n", " (9, 18): 31,\n", " (15, 19): 1,\n", " (14, 9): 33,\n", " (12, 9): 0,\n", " (11, 19): 48,\n", " (15, 12): 58,\n", " (13, 12): 60,\n", " (2, 19): 54,\n", " (0, 15): 88,\n", " (3, 10): 28,\n", " (1, 14): 52,\n", " (4, 13): 5,\n", " (2, 13): 81,\n", " (5, 0): 15,\n", " (3, 16): 73,\n", " (6, 15): 20,\n", " (16, 9): 34,\n", " (16, 10): 9,\n", " (7, 14): 16,\n", " (6, 18): 90,\n", " (19, 6): 70,\n", " (18, 2): 36,\n", " (17, 10): 53,\n", " (18, 17): 36,\n", " (16, 2): 49,\n", " (8, 7): 95,\n", " (9, 6): 38,\n", " (11, 7): 39,\n", " (10, 5): 33,\n", " (14, 16): 29,\n", " (12, 0): 7,\n", " (11, 8): 78,\n", " (10, 16): 72,\n", " (0, 19): 1,\n", " (14, 7): 40,\n", " (13, 5): 36,\n", " (12, 19): 61,\n", " (1, 18): 73,\n", " (0, 6): 32,\n", " (15, 6): 66,\n", " (13, 18): 86,\n", " (1, 7): 26,\n", " (0, 9): 21,\n", " (3, 4): 71,\n", " (2, 4): 16,\n", " (5, 9): 0,\n", " (4, 7): 2,\n", " (6, 6): 67,\n", " (5, 6): 23,\n", " (4, 18): 78,\n", " (7, 7): 20,\n", " (5, 19): 51,\n", " (19, 15): 69,\n", " (17, 3): 2,\n", " (7, 16): 11,\n", " (19, 0): 8,\n", " (18, 8): 63,\n", " (17, 16): 62,\n", " (7, 4): 89,\n", " (9, 15): 46,\n", " (8, 1): 60,\n", " (10, 12): 44,\n", " (11, 1): 40,\n", " (9, 17): 62,\n", " (15, 18): 16,\n", " (14, 14): 26,\n", " (12, 10): 4,\n", " (11, 18): 71,\n", " (15, 15): 32,\n", " (13, 11): 17,\n", " (2, 16): 16,\n", " (0, 0): 8,\n", " (8, 14): 7,\n", " (1, 13): 80,\n", " (4, 14): 97,\n", " (2, 10): 53,\n", " (5, 15): 62,\n", " (3, 19): 71,\n", " (6, 12): 89,\n", " (17, 4): 33,\n", " (16, 12): 51,\n", " (6, 19): 54,\n", " (19, 9): 95,\n", " (18, 3): 36,\n", " (17, 9): 31,\n", " (18, 14): 98,\n", " (17, 17): 4,\n", " (16, 0): 50,\n", " (16, 15): 63,\n", " (9, 5): 75,\n", " (11, 6): 67,\n", " (10, 2): 40,\n", " (14, 17): 59,\n", " (12, 1): 98,\n", " (11, 11): 24,\n", " (10, 17): 99,\n", " (14, 4): 40,\n", " (13, 4): 40,\n", " (12, 12): 44,\n", " (1, 17): 69,\n", " (0, 7): 67,\n", " (15, 1): 48,\n", " (13, 17): 67,\n", " (1, 6): 98,\n", " (0, 10): 78,\n", " (17, 13): 89,\n", " (3, 7): 68,\n", " (2, 5): 32,\n", " (1, 11): 39,\n", " (5, 8): 73,\n", " (4, 0): 38,\n", " (6, 7): 12,\n", " (5, 5): 3,\n", " (4, 19): 83,\n", " (16, 3): 37,\n", " (6, 10): 31,\n", " (5, 18): 31,\n", " (19, 14): 66,\n", " (17, 2): 13,\n", " (7, 19): 69,\n", " (19, 3): 91,\n", " (18, 9): 33,\n", " (8, 15): 3,\n", " (9, 14): 97,\n", " (8, 2): 93,\n", " (10, 13): 92,\n", " (9, 3): 24,\n", " (11, 0): 5,\n", " (9, 16): 94,\n", " (14, 15): 12,\n", " (12, 11): 0,\n", " (15, 14): 79,\n", " (14, 2): 30,\n", " (13, 10): 62,\n", " (2, 17): 36,\n", " (0, 1): 49,\n", " (3, 12): 48,\n", " (1, 12): 56,\n", " (4, 15): 57,\n", " (3, 1): 40,\n", " (2, 11): 5,\n", " (5, 14): 35,\n", " (3, 18): 29,\n", " (6, 13): 47,\n", " (7, 8): 26,\n", " (6, 16): 39,\n", " (19, 8): 72,\n", " (18, 0): 91,\n", " (17, 8): 89,\n", " (16, 16): 40,\n", " (18, 15): 53,\n", " (8, 9): 20,\n", " (9, 4): 92,\n", " (7, 11): 47,\n", " (10, 3): 68,\n", " (12, 2): 53,\n", " (11, 10): 80,\n", " (14, 5): 84,\n", " (13, 3): 32,\n", " (12, 13): 86,\n", " (1, 16): 42,\n", " (3, 13): 68,\n", " (15, 0): 12,\n", " (13, 16): 46,\n", " (1, 5): 47,\n", " (0, 11): 16,\n", " (3, 6): 28,\n", " (2, 2): 31,\n", " (1, 10): 17,\n", " (4, 1): 17,\n", " (6, 4): 63,\n", " (5, 4): 67,\n", " (16, 4): 66,\n", " (6, 11): 31,\n", " (5, 17): 30,\n", " (19, 17): 16,\n", " (17, 1): 56,\n", " (7, 18): 1,\n", " (19, 2): 65,\n", " (18, 6): 64,\n", " (9, 13): 73,\n", " (8, 3): 69,\n", " (10, 10): 3,\n", " (9, 2): 71,\n", " (16, 13): 4,\n", " (11, 3): 56,\n", " (14, 12): 21,\n", " (12, 4): 22,\n", " (15, 9): 97,\n", " (14, 3): 56,\n", " (13, 9): 61,\n", " (0, 2): 81,\n", " (3, 15): 87,\n", " (1, 3): 70,\n", " (4, 8): 66,\n", " (3, 0): 97,\n", " (2, 8): 58,\n", " (5, 13): 94,\n", " (6, 2): 14,\n", " (16, 14): 33,\n", " (6, 17): 23,\n", " (19, 11): 57,\n", " (18, 1): 62,\n", " (17, 15): 93,\n", " (16, 17): 74,\n", " (18, 12): 17,\n", " (8, 10): 15,\n", " (9, 11): 58,\n", " (10, 0): 4,\n", " (8, 16): 24,\n", " (12, 3): 1,\n", " (11, 13): 13,\n", " (14, 10): 16,\n", " (13, 2): 88,\n", " (12, 14): 16,\n", " (15, 3): 71,\n", " (13, 15): 55,\n", " (1, 4): 31,\n", " (0, 12): 86,\n", " (3, 9): 9,\n", " (2, 3): 95,\n", " (1, 9): 36,\n", " (4, 2): 55,\n", " (2, 14): 8,\n", " (6, 5): 45,\n", " (5, 3): 60,\n", " (16, 5): 35,\n", " (6, 8): 99,\n", " (5, 16): 25,\n", " (19, 16): 36,\n", " (17, 0): 77,\n", " (7, 13): 69,\n", " (19, 5): 50,\n", " (18, 7): 94,\n", " (7, 9): 44,\n", " (18, 18): 5,\n", " (9, 12): 44,\n", " (8, 4): 41,\n", " (10, 11): 88,\n", " (9, 1): 87,\n", " (17, 5): 17,\n", " (11, 2): 67,\n", " (10, 6): 40,\n", " (16, 11): 36,\n", " (14, 13): 17,\n", " (12, 5): 78,\n", " (0, 16): 4,\n", " (15, 8): 88,\n", " (14, 0): 52,\n", " (13, 8): 83,\n", " (12, 16): 8,\n", " (0, 3): 52,\n", " (15, 5): 20,\n", " (3, 14): 83,\n", " (1, 2): 49,\n", " (4, 9): 75,\n", " (3, 3): 23,\n", " (2, 9): 23,\n", " (5, 12): 71,\n", " (4, 4): 51,\n", " (6, 3): 11,\n", " (8, 8): 97,\n", " (7, 2): 29,\n", " (7, 10): 67,\n", " (19, 10): 92,\n", " (17, 14): 27,\n", " (16, 18): 23,\n", " (18, 13): 55,\n", " (17, 19): 19,\n", " (8, 11): 55,\n", " (9, 10): 94,\n", " (10, 1): 17,\n", " (8, 17): 34,\n", " (11, 12): 37,\n", " (15, 17): 85,\n", " (14, 11): 54,\n", " (13, 1): 43,\n", " (12, 15): 46,\n", " (11, 17): 69,\n", " (15, 2): 3,\n", " (13, 14): 26,\n", " (0, 13): 19,\n", " (3, 8): 5,\n", " (2, 0): 22,\n", " (1, 8): 55,\n", " (4, 3): 4,\n", " (2, 15): 68,\n", " (5, 2): 79}" ] } ], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "g4s = {(x, y): int(GRID_STRING[(x + y * COLUMNS) * 3:(x + y * COLUMNS) * 3 + 2]) \n", " for x in range(COLUMNS) \n", " for y in range(ROWS)}\n", "g4s" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 14, "text": [ "{(7, 3): 42,\n", " (6, 9): 76,\n", " (17, 11): 29,\n", " (19, 19): 48,\n", " (16, 6): 18,\n", " (7, 12): 7,\n", " (19, 4): 80,\n", " (18, 4): 13,\n", " (18, 19): 67,\n", " (8, 5): 44,\n", " (10, 8): 78,\n", " (9, 0): 75,\n", " (11, 5): 53,\n", " (10, 7): 94,\n", " (14, 18): 81,\n", " (12, 6): 59,\n", " (10, 18): 49,\n", " (0, 17): 20,\n", " (15, 11): 24,\n", " (14, 1): 69,\n", " (13, 7): 8,\n", " (12, 17): 82,\n", " (0, 4): 22,\n", " (15, 4): 28,\n", " (1, 1): 49,\n", " (4, 10): 22,\n", " (3, 2): 73,\n", " (2, 6): 81,\n", " (5, 11): 35,\n", " (4, 5): 99,\n", " (6, 0): 0,\n", " (4, 16): 38,\n", " (7, 5): 2,\n", " (19, 13): 40,\n", " (7, 0): 40,\n", " (16, 19): 89,\n", " (17, 7): 49,\n", " (18, 10): 56,\n", " (17, 18): 57,\n", " (16, 8): 34,\n", " (8, 12): 5,\n", " (9, 9): 45,\n", " (10, 14): 57,\n", " (8, 18): 74,\n", " (11, 15): 67,\n", " (9, 19): 92,\n", " (15, 16): 32,\n", " (14, 8): 14,\n", " (13, 0): 78,\n", " (12, 8): 96,\n", " (11, 16): 18,\n", " (15, 13): 77,\n", " (13, 13): 52,\n", " (2, 18): 35,\n", " (0, 14): 4,\n", " (3, 11): 42,\n", " (2, 1): 99,\n", " (1, 15): 36,\n", " (4, 12): 35,\n", " (2, 12): 0,\n", " (5, 1): 81,\n", " (3, 17): 41,\n", " (16, 7): 66,\n", " (6, 14): 99,\n", " (19, 18): 54,\n", " (17, 6): 38,\n", " (7, 15): 72,\n", " (19, 7): 21,\n", " (18, 5): 12,\n", " (7, 1): 57,\n", " (18, 16): 76,\n", " (8, 6): 26,\n", " (10, 9): 35,\n", " (9, 7): 63,\n", " (11, 4): 54,\n", " (10, 4): 36,\n", " (14, 19): 52,\n", " (12, 7): 63,\n", " (11, 9): 14,\n", " (10, 19): 33,\n", " (0, 18): 20,\n", " (15, 10): 14,\n", " (14, 6): 70,\n", " (13, 6): 54,\n", " (12, 18): 48,\n", " (1, 19): 70,\n", " (0, 5): 24,\n", " (15, 7): 91,\n", " (13, 19): 43,\n", " (1, 0): 2,\n", " (0, 8): 24,\n", " (4, 11): 96,\n", " (3, 5): 60,\n", " (2, 7): 20,\n", " (5, 10): 75,\n", " (4, 6): 64,\n", " (6, 1): 18,\n", " (5, 7): 62,\n", " (4, 17): 72,\n", " (16, 1): 4,\n", " (19, 12): 58,\n", " (17, 12): 54,\n", " (7, 17): 88,\n", " (19, 1): 0,\n", " (18, 11): 85,\n", " (7, 6): 10,\n", " (8, 13): 28,\n", " (9, 8): 17,\n", " (8, 0): 0,\n", " (10, 15): 33,\n", " (8, 19): 16,\n", " (11, 14): 32,\n", " (9, 18): 31,\n", " (15, 19): 1,\n", " (14, 9): 33,\n", " (12, 9): 0,\n", " (11, 19): 48,\n", " (15, 12): 58,\n", " (13, 12): 60,\n", " (2, 19): 54,\n", " (0, 15): 88,\n", " (3, 10): 28,\n", " (1, 14): 52,\n", " (4, 13): 5,\n", " (2, 13): 81,\n", " (5, 0): 15,\n", " (3, 16): 73,\n", " (6, 15): 20,\n", " (16, 9): 34,\n", " (16, 10): 9,\n", " (7, 14): 16,\n", " (6, 18): 90,\n", " (19, 6): 70,\n", " (18, 2): 36,\n", " (17, 10): 53,\n", " (18, 17): 36,\n", " (16, 2): 49,\n", " (8, 7): 95,\n", " (9, 6): 38,\n", " (11, 7): 39,\n", " (10, 5): 33,\n", " (14, 16): 29,\n", " (12, 0): 7,\n", " (11, 8): 78,\n", " (10, 16): 72,\n", " (0, 19): 1,\n", " (14, 7): 40,\n", " (13, 5): 36,\n", " (12, 19): 61,\n", " (1, 18): 73,\n", " (0, 6): 32,\n", " (15, 6): 66,\n", " (13, 18): 86,\n", " (1, 7): 26,\n", " (0, 9): 21,\n", " (3, 4): 71,\n", " (2, 4): 16,\n", " (5, 9): 0,\n", " (4, 7): 2,\n", " (6, 6): 67,\n", " (5, 6): 23,\n", " (4, 18): 78,\n", " (7, 7): 20,\n", " (5, 19): 51,\n", " (19, 15): 69,\n", " (17, 3): 2,\n", " (7, 16): 11,\n", " (19, 0): 8,\n", " (18, 8): 63,\n", " (17, 16): 62,\n", " (7, 4): 89,\n", " (9, 15): 46,\n", " (8, 1): 60,\n", " (10, 12): 44,\n", " (11, 1): 40,\n", " (9, 17): 62,\n", " (15, 18): 16,\n", " (14, 14): 26,\n", " (12, 10): 4,\n", " (11, 18): 71,\n", " (15, 15): 32,\n", " (13, 11): 17,\n", " (2, 16): 16,\n", " (0, 0): 8,\n", " (8, 14): 7,\n", " (1, 13): 80,\n", " (4, 14): 97,\n", " (2, 10): 53,\n", " (5, 15): 62,\n", " (3, 19): 71,\n", " (6, 12): 89,\n", " (17, 4): 33,\n", " (16, 12): 51,\n", " (6, 19): 54,\n", " (19, 9): 95,\n", " (18, 3): 36,\n", " (17, 9): 31,\n", " (18, 14): 98,\n", " (17, 17): 4,\n", " (16, 0): 50,\n", " (16, 15): 63,\n", " (9, 5): 75,\n", " (11, 6): 67,\n", " (10, 2): 40,\n", " (14, 17): 59,\n", " (12, 1): 98,\n", " (11, 11): 24,\n", " (10, 17): 99,\n", " (14, 4): 40,\n", " (13, 4): 40,\n", " (12, 12): 44,\n", " (1, 17): 69,\n", " (0, 7): 67,\n", " (15, 1): 48,\n", " (13, 17): 67,\n", " (1, 6): 98,\n", " (0, 10): 78,\n", " (17, 13): 89,\n", " (3, 7): 68,\n", " (2, 5): 32,\n", " (1, 11): 39,\n", " (5, 8): 73,\n", " (4, 0): 38,\n", " (6, 7): 12,\n", " (5, 5): 3,\n", " (4, 19): 83,\n", " (16, 3): 37,\n", " (6, 10): 31,\n", " (5, 18): 31,\n", " (19, 14): 66,\n", " (17, 2): 13,\n", " (7, 19): 69,\n", " (19, 3): 91,\n", " (18, 9): 33,\n", " (8, 15): 3,\n", " (9, 14): 97,\n", " (8, 2): 93,\n", " (10, 13): 92,\n", " (9, 3): 24,\n", " (11, 0): 5,\n", " (9, 16): 94,\n", " (14, 15): 12,\n", " (12, 11): 0,\n", " (15, 14): 79,\n", " (14, 2): 30,\n", " (13, 10): 62,\n", " (2, 17): 36,\n", " (0, 1): 49,\n", " (3, 12): 48,\n", " (1, 12): 56,\n", " (4, 15): 57,\n", " (3, 1): 40,\n", " (2, 11): 5,\n", " (5, 14): 35,\n", " (3, 18): 29,\n", " (6, 13): 47,\n", " (7, 8): 26,\n", " (6, 16): 39,\n", " (19, 8): 72,\n", " (18, 0): 91,\n", " (17, 8): 89,\n", " (16, 16): 40,\n", " (18, 15): 53,\n", " (8, 9): 20,\n", " (9, 4): 92,\n", " (7, 11): 47,\n", " (10, 3): 68,\n", " (12, 2): 53,\n", " (11, 10): 80,\n", " (14, 5): 84,\n", " (13, 3): 32,\n", " (12, 13): 86,\n", " (1, 16): 42,\n", " (3, 13): 68,\n", " (15, 0): 12,\n", " (13, 16): 46,\n", " (1, 5): 47,\n", " (0, 11): 16,\n", " (3, 6): 28,\n", " (2, 2): 31,\n", " (1, 10): 17,\n", " (4, 1): 17,\n", " (6, 4): 63,\n", " (5, 4): 67,\n", " (16, 4): 66,\n", " (6, 11): 31,\n", " (5, 17): 30,\n", " (19, 17): 16,\n", " (17, 1): 56,\n", " (7, 18): 1,\n", " (19, 2): 65,\n", " (18, 6): 64,\n", " (9, 13): 73,\n", " (8, 3): 69,\n", " (10, 10): 3,\n", " (9, 2): 71,\n", " (16, 13): 4,\n", " (11, 3): 56,\n", " (14, 12): 21,\n", " (12, 4): 22,\n", " (15, 9): 97,\n", " (14, 3): 56,\n", " (13, 9): 61,\n", " (0, 2): 81,\n", " (3, 15): 87,\n", " (1, 3): 70,\n", " (4, 8): 66,\n", " (3, 0): 97,\n", " (2, 8): 58,\n", " (5, 13): 94,\n", " (6, 2): 14,\n", " (16, 14): 33,\n", " (6, 17): 23,\n", " (19, 11): 57,\n", " (18, 1): 62,\n", " (17, 15): 93,\n", " (16, 17): 74,\n", " (18, 12): 17,\n", " (8, 10): 15,\n", " (9, 11): 58,\n", " (10, 0): 4,\n", " (8, 16): 24,\n", " (12, 3): 1,\n", " (11, 13): 13,\n", " (14, 10): 16,\n", " (13, 2): 88,\n", " (12, 14): 16,\n", " (15, 3): 71,\n", " (13, 15): 55,\n", " (1, 4): 31,\n", " (0, 12): 86,\n", " (3, 9): 9,\n", " (2, 3): 95,\n", " (1, 9): 36,\n", " (4, 2): 55,\n", " (2, 14): 8,\n", " (6, 5): 45,\n", " (5, 3): 60,\n", " (16, 5): 35,\n", " (6, 8): 99,\n", " (5, 16): 25,\n", " (19, 16): 36,\n", " (17, 0): 77,\n", " (7, 13): 69,\n", " (19, 5): 50,\n", " (18, 7): 94,\n", " (7, 9): 44,\n", " (18, 18): 5,\n", " (9, 12): 44,\n", " (8, 4): 41,\n", " (10, 11): 88,\n", " (9, 1): 87,\n", " (17, 5): 17,\n", " (11, 2): 67,\n", " (10, 6): 40,\n", " (16, 11): 36,\n", " (14, 13): 17,\n", " (12, 5): 78,\n", " (0, 16): 4,\n", " (15, 8): 88,\n", " (14, 0): 52,\n", " (13, 8): 83,\n", " (12, 16): 8,\n", " (0, 3): 52,\n", " (15, 5): 20,\n", " (3, 14): 83,\n", " (1, 2): 49,\n", " (4, 9): 75,\n", " (3, 3): 23,\n", " (2, 9): 23,\n", " (5, 12): 71,\n", " (4, 4): 51,\n", " (6, 3): 11,\n", " (8, 8): 97,\n", " (7, 2): 29,\n", " (7, 10): 67,\n", " (19, 10): 92,\n", " (17, 14): 27,\n", " (16, 18): 23,\n", " (18, 13): 55,\n", " (17, 19): 19,\n", " (8, 11): 55,\n", " (9, 10): 94,\n", " (10, 1): 17,\n", " (8, 17): 34,\n", " (11, 12): 37,\n", " (15, 17): 85,\n", " (14, 11): 54,\n", " (13, 1): 43,\n", " (12, 15): 46,\n", " (11, 17): 69,\n", " (15, 2): 3,\n", " (13, 14): 26,\n", " (0, 13): 19,\n", " (3, 8): 5,\n", " (2, 0): 22,\n", " (1, 8): 55,\n", " (4, 3): 4,\n", " (2, 15): 68,\n", " (5, 2): 79}" ] } ], "prompt_number": 14 }, { "cell_type": "code", "collapsed": false, "input": [ "g2 == g4 == g4s" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 15, "text": [ "True" ] } ], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "d = {}\n", "d[99]" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "KeyError", "evalue": "99", "output_type": "pyerr", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[0md\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m{\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0md\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m99\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;31mKeyError\u001b[0m: 99" ] } ], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "import collections\n", "d = collections.defaultdict(int)\n", "d[99]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 17, "text": [ "0" ] } ], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "import string\n", "collections.Counter(l for l in open('sherlock-holmes.txt').read()\n", " if l in string.ascii_letters)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 18, "text": [ "Counter({'e': 52876, 't': 37842, 'a': 34376, 'o': 33200, 'n': 28378, 'h': 27803, 's': 26432, 'i': 26366, 'r': 24304, 'd': 18349, 'l': 16854, 'u': 13070, 'm': 11055, 'w': 10508, 'c': 10172, 'y': 8976, 'f': 8785, 'g': 7733, 'p': 6652, 'b': 5883, 'v': 4367, 'I': 3774, 'k': 3465, 'H': 1244, 'T': 1139, 'S': 762, 'A': 761, 'W': 758, 'M': 732, 'x': 541, 'B': 479, 'Y': 455, 'q': 406, 'j': 338, 'C': 327, 'O': 312, 'N': 304, 'L': 291, 'E': 235, 'D': 214, 'R': 204, 'F': 190, 'P': 183, 'G': 154, 'z': 147, 'J': 114, 'V': 85, 'K': 78, 'U': 46, 'Q': 20, 'X': 8, 'Z': 2})" ] } ], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "[(a, b, c) \n", " for a in range(1, 21) \n", " for b in range(a, 21)\n", " for c in range(b, 21)\n", " if a**2 + b**2 == c**2]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 19, "text": [ "[(3, 4, 5), (5, 12, 13), (6, 8, 10), (8, 15, 17), (9, 12, 15), (12, 16, 20)]" ] } ], "prompt_number": 19 }, { "cell_type": "code", "collapsed": false, "input": [ "g1" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 20, "text": [ "[[8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8],\n", " [49,\n", " 49,\n", " 99,\n", " 40,\n", " 17,\n", " 81,\n", " 18,\n", " 57,\n", " 60,\n", " 87,\n", " 17,\n", " 40,\n", " 98,\n", " 43,\n", " 69,\n", " 48,\n", " 4,\n", " 56,\n", " 62,\n", " 0],\n", " [81,\n", " 49,\n", " 31,\n", " 73,\n", " 55,\n", " 79,\n", " 14,\n", " 29,\n", " 93,\n", " 71,\n", " 40,\n", " 67,\n", " 53,\n", " 88,\n", " 30,\n", " 3,\n", " 49,\n", " 13,\n", " 36,\n", " 65],\n", " [52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 1, 32, 56, 71, 37, 2, 36, 91],\n", " [22,\n", " 31,\n", " 16,\n", " 71,\n", " 51,\n", " 67,\n", " 63,\n", " 89,\n", " 41,\n", " 92,\n", " 36,\n", " 54,\n", " 22,\n", " 40,\n", " 40,\n", " 28,\n", " 66,\n", " 33,\n", " 13,\n", " 80],\n", " [24,\n", " 47,\n", " 32,\n", " 60,\n", " 99,\n", " 3,\n", " 45,\n", " 2,\n", " 44,\n", " 75,\n", " 33,\n", " 53,\n", " 78,\n", " 36,\n", " 84,\n", " 20,\n", " 35,\n", " 17,\n", " 12,\n", " 50],\n", " [32,\n", " 98,\n", " 81,\n", " 28,\n", " 64,\n", " 23,\n", " 67,\n", " 10,\n", " 26,\n", " 38,\n", " 40,\n", " 67,\n", " 59,\n", " 54,\n", " 70,\n", " 66,\n", " 18,\n", " 38,\n", " 64,\n", " 70],\n", " [67,\n", " 26,\n", " 20,\n", " 68,\n", " 2,\n", " 62,\n", " 12,\n", " 20,\n", " 95,\n", " 63,\n", " 94,\n", " 39,\n", " 63,\n", " 8,\n", " 40,\n", " 91,\n", " 66,\n", " 49,\n", " 94,\n", " 21],\n", " [24,\n", " 55,\n", " 58,\n", " 5,\n", " 66,\n", " 73,\n", " 99,\n", " 26,\n", " 97,\n", " 17,\n", " 78,\n", " 78,\n", " 96,\n", " 83,\n", " 14,\n", " 88,\n", " 34,\n", " 89,\n", " 63,\n", " 72],\n", " [21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 0, 61, 33, 97, 34, 31, 33, 95],\n", " [78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 4, 62, 16, 14, 9, 53, 56, 92],\n", " [16,\n", " 39,\n", " 5,\n", " 42,\n", " 96,\n", " 35,\n", " 31,\n", " 47,\n", " 55,\n", " 58,\n", " 88,\n", " 24,\n", " 0,\n", " 17,\n", " 54,\n", " 24,\n", " 36,\n", " 29,\n", " 85,\n", " 57],\n", " [86, 56, 0, 48, 35, 71, 89, 7, 5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58],\n", " [19,\n", " 80,\n", " 81,\n", " 68,\n", " 5,\n", " 94,\n", " 47,\n", " 69,\n", " 28,\n", " 73,\n", " 92,\n", " 13,\n", " 86,\n", " 52,\n", " 17,\n", " 77,\n", " 4,\n", " 89,\n", " 55,\n", " 40],\n", " [4, 52, 8, 83, 97, 35, 99, 16, 7, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66],\n", " [88,\n", " 36,\n", " 68,\n", " 87,\n", " 57,\n", " 62,\n", " 20,\n", " 72,\n", " 3,\n", " 46,\n", " 33,\n", " 67,\n", " 46,\n", " 55,\n", " 12,\n", " 32,\n", " 63,\n", " 93,\n", " 53,\n", " 69],\n", " [4,\n", " 42,\n", " 16,\n", " 73,\n", " 38,\n", " 25,\n", " 39,\n", " 11,\n", " 24,\n", " 94,\n", " 72,\n", " 18,\n", " 8,\n", " 46,\n", " 29,\n", " 32,\n", " 40,\n", " 62,\n", " 76,\n", " 36],\n", " [20,\n", " 69,\n", " 36,\n", " 41,\n", " 72,\n", " 30,\n", " 23,\n", " 88,\n", " 34,\n", " 62,\n", " 99,\n", " 69,\n", " 82,\n", " 67,\n", " 59,\n", " 85,\n", " 74,\n", " 4,\n", " 36,\n", " 16],\n", " [20,\n", " 73,\n", " 35,\n", " 29,\n", " 78,\n", " 31,\n", " 90,\n", " 1,\n", " 74,\n", " 31,\n", " 49,\n", " 71,\n", " 48,\n", " 86,\n", " 81,\n", " 16,\n", " 23,\n", " 57,\n", " 5,\n", " 54],\n", " [1,\n", " 70,\n", " 54,\n", " 71,\n", " 83,\n", " 51,\n", " 54,\n", " 69,\n", " 16,\n", " 92,\n", " 33,\n", " 48,\n", " 61,\n", " 43,\n", " 52,\n", " 1,\n", " 89,\n", " 19,\n", " 67,\n", " 48]]" ] } ], "prompt_number": 20 }, { "cell_type": "code", "collapsed": false, "input": [ "[n for row in g1 for n in row]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 21, "text": [ "[8,\n", " 2,\n", " 22,\n", " 97,\n", " 38,\n", " 15,\n", " 0,\n", " 40,\n", " 0,\n", " 75,\n", " 4,\n", " 5,\n", " 7,\n", " 78,\n", " 52,\n", " 12,\n", " 50,\n", " 77,\n", " 91,\n", " 8,\n", " 49,\n", " 49,\n", " 99,\n", " 40,\n", " 17,\n", " 81,\n", " 18,\n", " 57,\n", " 60,\n", " 87,\n", " 17,\n", " 40,\n", " 98,\n", " 43,\n", " 69,\n", " 48,\n", " 4,\n", " 56,\n", " 62,\n", " 0,\n", " 81,\n", " 49,\n", " 31,\n", " 73,\n", " 55,\n", " 79,\n", " 14,\n", " 29,\n", " 93,\n", " 71,\n", " 40,\n", " 67,\n", " 53,\n", " 88,\n", " 30,\n", " 3,\n", " 49,\n", " 13,\n", " 36,\n", " 65,\n", " 52,\n", " 70,\n", " 95,\n", " 23,\n", " 4,\n", " 60,\n", " 11,\n", " 42,\n", " 69,\n", " 24,\n", " 68,\n", " 56,\n", " 1,\n", " 32,\n", " 56,\n", " 71,\n", " 37,\n", " 2,\n", " 36,\n", " 91,\n", " 22,\n", " 31,\n", " 16,\n", " 71,\n", " 51,\n", " 67,\n", " 63,\n", " 89,\n", " 41,\n", " 92,\n", " 36,\n", " 54,\n", " 22,\n", " 40,\n", " 40,\n", " 28,\n", " 66,\n", " 33,\n", " 13,\n", " 80,\n", " 24,\n", " 47,\n", " 32,\n", " 60,\n", " 99,\n", " 3,\n", " 45,\n", " 2,\n", " 44,\n", " 75,\n", " 33,\n", " 53,\n", " 78,\n", " 36,\n", " 84,\n", " 20,\n", " 35,\n", " 17,\n", " 12,\n", " 50,\n", " 32,\n", " 98,\n", " 81,\n", " 28,\n", " 64,\n", " 23,\n", " 67,\n", " 10,\n", " 26,\n", " 38,\n", " 40,\n", " 67,\n", " 59,\n", " 54,\n", " 70,\n", " 66,\n", " 18,\n", " 38,\n", " 64,\n", " 70,\n", " 67,\n", " 26,\n", " 20,\n", " 68,\n", " 2,\n", " 62,\n", " 12,\n", " 20,\n", " 95,\n", " 63,\n", " 94,\n", " 39,\n", " 63,\n", " 8,\n", " 40,\n", " 91,\n", " 66,\n", " 49,\n", " 94,\n", " 21,\n", " 24,\n", " 55,\n", " 58,\n", " 5,\n", " 66,\n", " 73,\n", " 99,\n", " 26,\n", " 97,\n", " 17,\n", " 78,\n", " 78,\n", " 96,\n", " 83,\n", " 14,\n", " 88,\n", " 34,\n", " 89,\n", " 63,\n", " 72,\n", " 21,\n", " 36,\n", " 23,\n", " 9,\n", " 75,\n", " 0,\n", " 76,\n", " 44,\n", " 20,\n", " 45,\n", " 35,\n", " 14,\n", " 0,\n", " 61,\n", " 33,\n", " 97,\n", " 34,\n", " 31,\n", " 33,\n", " 95,\n", " 78,\n", " 17,\n", " 53,\n", " 28,\n", " 22,\n", " 75,\n", " 31,\n", " 67,\n", " 15,\n", " 94,\n", " 3,\n", " 80,\n", " 4,\n", " 62,\n", " 16,\n", " 14,\n", " 9,\n", " 53,\n", " 56,\n", " 92,\n", " 16,\n", " 39,\n", " 5,\n", " 42,\n", " 96,\n", " 35,\n", " 31,\n", " 47,\n", " 55,\n", " 58,\n", " 88,\n", " 24,\n", " 0,\n", " 17,\n", " 54,\n", " 24,\n", " 36,\n", " 29,\n", " 85,\n", " 57,\n", " 86,\n", " 56,\n", " 0,\n", " 48,\n", " 35,\n", " 71,\n", " 89,\n", " 7,\n", " 5,\n", " 44,\n", " 44,\n", " 37,\n", " 44,\n", " 60,\n", " 21,\n", " 58,\n", " 51,\n", " 54,\n", " 17,\n", " 58,\n", " 19,\n", " 80,\n", " 81,\n", " 68,\n", " 5,\n", " 94,\n", " 47,\n", " 69,\n", " 28,\n", " 73,\n", " 92,\n", " 13,\n", " 86,\n", " 52,\n", " 17,\n", " 77,\n", " 4,\n", " 89,\n", " 55,\n", " 40,\n", " 4,\n", " 52,\n", " 8,\n", " 83,\n", " 97,\n", " 35,\n", " 99,\n", " 16,\n", " 7,\n", " 97,\n", " 57,\n", " 32,\n", " 16,\n", " 26,\n", " 26,\n", " 79,\n", " 33,\n", " 27,\n", " 98,\n", " 66,\n", " 88,\n", " 36,\n", " 68,\n", " 87,\n", " 57,\n", " 62,\n", " 20,\n", " 72,\n", " 3,\n", " 46,\n", " 33,\n", " 67,\n", " 46,\n", " 55,\n", " 12,\n", " 32,\n", " 63,\n", " 93,\n", " 53,\n", " 69,\n", " 4,\n", " 42,\n", " 16,\n", " 73,\n", " 38,\n", " 25,\n", " 39,\n", " 11,\n", " 24,\n", " 94,\n", " 72,\n", " 18,\n", " 8,\n", " 46,\n", " 29,\n", " 32,\n", " 40,\n", " 62,\n", " 76,\n", " 36,\n", " 20,\n", " 69,\n", " 36,\n", " 41,\n", " 72,\n", " 30,\n", " 23,\n", " 88,\n", " 34,\n", " 62,\n", " 99,\n", " 69,\n", " 82,\n", " 67,\n", " 59,\n", " 85,\n", " 74,\n", " 4,\n", " 36,\n", " 16,\n", " 20,\n", " 73,\n", " 35,\n", " 29,\n", " 78,\n", " 31,\n", " 90,\n", " 1,\n", " 74,\n", " 31,\n", " 49,\n", " 71,\n", " 48,\n", " 86,\n", " 81,\n", " 16,\n", " 23,\n", " 57,\n", " 5,\n", " 54,\n", " 1,\n", " 70,\n", " 54,\n", " 71,\n", " 83,\n", " 51,\n", " 54,\n", " 69,\n", " 16,\n", " 92,\n", " 33,\n", " 48,\n", " 61,\n", " 43,\n", " 52,\n", " 1,\n", " 89,\n", " 19,\n", " 67,\n", " 48]" ] } ], "prompt_number": 21 }, { "cell_type": "code", "collapsed": false, "input": [ "s1 = 'hello'\n", "s2 = '__lk_'" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 27 }, { "cell_type": "code", "collapsed": false, "input": [ "list(zip(s1, s2))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 23, "text": [ "[('h', '_'), ('e', '_'), ('l', 'l'), ('l', 'l'), ('o', '_')]" ] } ], "prompt_number": 23 }, { "cell_type": "code", "collapsed": false, "input": [ "def match_positive(pattern, target):\n", " if len(pattern) != len(target):\n", " return False\n", " for m, c in zip(pattern, target):\n", " if m != '_' and m != c:\n", " return False\n", " return True" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 31 }, { "cell_type": "code", "collapsed": false, "input": [ "match_positive('he__o', 'hello')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 38, "text": [ "True" ] } ], "prompt_number": 38 }, { "cell_type": "code", "collapsed": false, "input": [ "def match(pattern, target, excluded=None):\n", " if not excluded:\n", " excluded = ''\n", " if len(pattern) != len(target):\n", " return False\n", " for m, c in zip(pattern, target):\n", " if m == '_' and c not in excluded:\n", " # true\n", " pass\n", " elif m != '_' and m == c:\n", " # true\n", " pass\n", " else:\n", " return False\n", " return True" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 56 }, { "cell_type": "code", "collapsed": false, "input": [ "match('__l_o', 'hello', 'def')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 60, "text": [ "False" ] } ], "prompt_number": 60 }, { "cell_type": "code", "collapsed": false, "input": [ "'_' == '_' and 'l' not in 'xyz'" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 48, "text": [ "True" ] } ], "prompt_number": 48 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }