},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": 17,
"metadata": {},
"outputs": [
{
"226"
]
},
- "execution_count": 23,
+ "execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 24,
+ "execution_count": 18,
"metadata": {},
"outputs": [
{
"61762"
]
},
- "execution_count": 24,
+ "execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 45,
+ "execution_count": 19,
"metadata": {},
"outputs": [
{
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "1 loop, best of 3: 209 ms per loop\n"
- ]
+ "data": {
+ "text/plain": [
+ "100"
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
}
],
"source": [
- "%%timeit\n",
- "sum(len(t) for t in tours if valid(trace_tour(t)))"
+ "sum(1 for t in tours if valid(trace_tour(t)))"
]
},
{
- "cell_type": "markdown",
+ "cell_type": "code",
+ "execution_count": 20,
"metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "123845"
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
"source": [
- "# Part 2"
+ "sum(len(t) for t in tours)"
]
},
{
"cell_type": "code",
- "execution_count": 25,
+ "execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "1 loop, best of 3: 1min 29s per loop\n"
+ "1 loop, best of 3: 213 ms per loop\n"
]
}
],
"source": [
"%%timeit\n",
- "[(i, j) \n",
- " for i, pi in enumerate(tours) \n",
- " for j, pj in enumerate(tours)\n",
- " if i != j\n",
- " if not valid(trace_tour(pi))\n",
- " if not valid(trace_tour(pj))\n",
- " if valid(trace_tour(pi + pj))]"
+ "sum(len(t) for t in tours if valid(trace_tour(t)))"
]
},
{
- "cell_type": "code",
- "execution_count": 31,
+ "cell_type": "markdown",
"metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "[(16, 125),\n",
- " (70, 48),\n",
- " (91, 128),\n",
- " (110, 134),\n",
- " (116, 194),\n",
- " (123, 51),\n",
- " (136, 9),\n",
- " (142, 193),\n",
- " (152, 63),\n",
- " (168, 150),\n",
- " (201, 83),\n",
- " (208, 204),\n",
- " (212, 113)]"
- ]
- },
- "execution_count": 31,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
"source": [
- "[(i, j) \n",
- " for i, pi in enumerate(tours) \n",
- " for j, pj in enumerate(tours)\n",
- " if i != j\n",
- " if not valid(trace_tour(pi))\n",
- " if not valid(trace_tour(pj))\n",
- " if valid(trace_tour(pi + pj))]"
+ "# Part 2"
]
},
{
"cell_type": "code",
- "execution_count": 42,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/plain": [
- "80622"
- ]
- },
- "execution_count": 42,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
+ "execution_count": 22,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
"source": [
- "(sum(len(t) for t in tours if valid(trace_tour(t)))\n",
- " +\n",
- " sum(len(pi + pj) \n",
- " for i, pi in enumerate(tours) \n",
- " for j, pj in enumerate(tours)\n",
- " if i != j\n",
- " if not valid(trace_tour(pi))\n",
- " if not valid(trace_tour(pj))\n",
- " if valid(trace_tour(pi + pj)))\n",
- ")"
+ "# %%timeit\n",
+ "# [(i, j) \n",
+ "# for i, pi in enumerate(tours) \n",
+ "# for j, pj in enumerate(tours)\n",
+ "# if i != j\n",
+ "# if not valid(trace_tour(pi))\n",
+ "# if not valid(trace_tour(pj))\n",
+ "# if valid(trace_tour(pi + pj))]"
]
},
{
"cell_type": "code",
- "execution_count": 34,
+ "execution_count": 23,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "# [(i, j) \n",
+ "# for i, pi in enumerate(tours) \n",
+ "# for j, pj in enumerate(tours)\n",
+ "# if i != j\n",
+ "# if not valid(trace_tour(pi))\n",
+ "# if not valid(trace_tour(pj))\n",
+ "# if valid(trace_tour(pi + pj))]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
+ "source": [
+ "# (sum(len(t) for t in tours if valid(trace_tour(t)))\n",
+ "# +\n",
+ "# sum(len(pi + pj) \n",
+ "# for i, pi in enumerate(tours) \n",
+ "# for j, pj in enumerate(tours)\n",
+ "# if i != j\n",
+ "# if not valid(trace_tour(pi))\n",
+ "# if not valid(trace_tour(pj))\n",
+ "# if valid(trace_tour(pi + pj)))\n",
+ "# )"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
"metadata": {},
"outputs": [
{
},
{
"cell_type": "code",
- "execution_count": 30,
+ "execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
- "[(0, 124),\n",
- " (1, 1),\n",
+ "[(1, 1),\n",
" (2, 1),\n",
" (3, 4),\n",
" (4, 5),\n",
" (19, 1)]"
]
},
- "execution_count": 30,
+ "execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
{
"cell_type": "code",
"execution_count": 27,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "1 loop, best of 3: 1min 28s per loop\n"
- ]
- }
- ],
+ "metadata": {
+ "collapsed": true
+ },
+ "outputs": [],
"source": [
- "%%timeit\n",
- "(sum(len(t) for t in tours if valid(trace_tour(t)))\n",
- " +\n",
- " sum(len(pi + pj) \n",
- " for i, pi in enumerate(tours) \n",
- " for j, pj in enumerate(tours)\n",
- " if i != j\n",
- " if not valid(trace_tour(pi))\n",
- " if not valid(trace_tour(pj))\n",
- " if valid(trace_tour(pi + pj)))\n",
- ")"
+ "# %%timeit\n",
+ "# (sum(len(t) for t in tours if valid(trace_tour(t)))\n",
+ "# +\n",
+ "# sum(len(pi + pj) \n",
+ "# for i, pi in enumerate(tours) \n",
+ "# for j, pj in enumerate(tours)\n",
+ "# if i != j\n",
+ "# if not valid(trace_tour(pi))\n",
+ "# if not valid(trace_tour(pj))\n",
+ "# if valid(trace_tour(pi + pj)))\n",
+ "# )"
]
},
{
"cell_type": "code",
- "execution_count": 50,
+ "execution_count": 28,
"metadata": {
"collapsed": true
},
},
{
"cell_type": "code",
- "execution_count": 51,
+ "execution_count": 29,
"metadata": {},
"outputs": [
{
"80622"
]
},
- "execution_count": 51,
+ "execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
},
{
"cell_type": "code",
- "execution_count": 52,
+ "execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
- "1 loop, best of 3: 1.16 s per loop\n"
+ "1 loop, best of 3: 1.29 s per loop\n"
]
}
],
")"
]
},
+ {
+ "cell_type": "code",
+ "execution_count": 31,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "13"
+ ]
+ },
+ "execution_count": 31,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "len(goods)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 32,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[(16, 125),\n",
+ " (70, 48),\n",
+ " (91, 128),\n",
+ " (110, 134),\n",
+ " (116, 194),\n",
+ " (123, 51),\n",
+ " (136, 9),\n",
+ " (142, 193),\n",
+ " (152, 63),\n",
+ " (168, 150),\n",
+ " (201, 83),\n",
+ " (208, 204),\n",
+ " (212, 113)]"
+ ]
+ },
+ "execution_count": 32,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sorted(good_is)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[(136, 9),\n",
+ " (70, 48),\n",
+ " (123, 51),\n",
+ " (152, 63),\n",
+ " (201, 83),\n",
+ " (212, 113),\n",
+ " (16, 125),\n",
+ " (91, 128),\n",
+ " (110, 134),\n",
+ " (168, 150),\n",
+ " (142, 193),\n",
+ " (116, 194),\n",
+ " (208, 204)]"
+ ]
+ },
+ "execution_count": 33,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "sorted(good_is, key=lambda p: p[1])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 34,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "[(1, 1),\n",
+ " (2, 1),\n",
+ " (3, 4),\n",
+ " (4, 5),\n",
+ " (5, 7),\n",
+ " (6, 3),\n",
+ " (7, 1),\n",
+ " (8, 2),\n",
+ " (9, 2),\n",
+ " (11, 2),\n",
+ " (18, 1),\n",
+ " (19, 1),\n",
+ " (21, 1),\n",
+ " (24, 1),\n",
+ " (132, 2),\n",
+ " (26, 2),\n",
+ " (28, 1),\n",
+ " (29, 1),\n",
+ " (34, 2),\n",
+ " (36, 1),\n",
+ " (37, 3),\n",
+ " (166, 2),\n",
+ " (40, 2),\n",
+ " (41, 2),\n",
+ " (44, 3),\n",
+ " (46, 1),\n",
+ " (48, 2),\n",
+ " (50, 3),\n",
+ " (52, 2),\n",
+ " (53, 1),\n",
+ " (54, 1),\n",
+ " (56, 2),\n",
+ " (57, 3),\n",
+ " (58, 1),\n",
+ " (59, 2),\n",
+ " (61, 1),\n",
+ " (64, 1),\n",
+ " (66, 2),\n",
+ " (68, 1),\n",
+ " (70, 1),\n",
+ " (74, 1),\n",
+ " (75, 1),\n",
+ " (76, 3),\n",
+ " (77, 1),\n",
+ " (81, 1),\n",
+ " (82, 2),\n",
+ " (86, 1),\n",
+ " (88, 1),\n",
+ " (90, 1),\n",
+ " (94, 1),\n",
+ " (97, 1),\n",
+ " (98, 1),\n",
+ " (101, 2),\n",
+ " (106, 1),\n",
+ " (107, 1),\n",
+ " (114, 2),\n",
+ " (117, 3),\n",
+ " (127, 1)]"
+ ]
+ },
+ "execution_count": 34,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "[(l, len(l1s[l])) for l in l1s.keys()]"
+ ]
+ },
{
"cell_type": "code",
"execution_count": null,