Add files via upload
This commit is contained in:
1 parent
d96d2490a3
commit
3185524b7f
1 file changed
+63
-60
+63
-60
@@ -42,7 +42,7 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Now define a `Point` in the 2-D plane as a complex number, and a `Path` as a list of points. Then define some global variables: the points in the `track`; the `finish` line; the `start` point; the `zero` vector; and the allowable `deltas` (the nine possible changes on each move)."
|
||||
"Now define a `Point` in the 2-D plane as a complex number (with functions to extract the `X` and `Y` components), and a `Path` as a list of points. Then define some global variables: the points in the `track`; the `finish` line; the `start` point; the `zero` vector; and the allowable `deltas` (the nine possible changes on each move)."
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -83,7 +83,7 @@
|
||||
" fig, ax = plt.subplots()\n",
|
||||
" plt.xticks([]); plt.yticks([])\n",
|
||||
" ax.set_aspect('equal');\n",
|
||||
" ax.add_artist(plt.Circle((0, 0), 3, alpha=0.2, color='k'))\n",
|
||||
" ax.add_artist(plt.Circle((0, 0), 3, alpha=0.1, color='k', ec='w'))\n",
|
||||
" ax.plot(*XY(track), 'k,' ) # grid points\n",
|
||||
" for path in paths:\n",
|
||||
" ax.plot(*XY(path), 'o-') # paths\n",
|
||||
@@ -109,7 +109,7 @@
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
@@ -148,7 +148,7 @@
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
@@ -193,7 +193,7 @@
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"Now I'll define the `legal_moves` that can be made. Given a path, `legal_moves(path)` yields `(Point, Vector)` tuples giving every possible new point position and velocity. Each point must be a point on the track (not inside the circle), the velocity vector can differ from the previous velocity vector only by an allowable delta, and the line from the previous final point on the path to the new point must not intersect the circle. \n",
|
||||
"Now I'll define the `legal_moves` that can be made. Given a path, `legal_moves(path)` yields all points that can follow on to the end of the path. Each point must be a point on the track (not inside the circle), the velocity vector can differ from the previous velocity vector only by an allowable delta, and the line from the previous final point on the path to the new point must not intersect the circle. \n",
|
||||
"\n",
|
||||
"I have inserted a hack here: to make sure that paths start off going counterclockwise, for the first two steps I insist that the deltas be either up or to the right or zero.\n",
|
||||
"\n",
|
||||
@@ -206,16 +206,15 @@
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def legal_moves(path, track=track, deltas=deltas) -> Iterator[Tuple[Point, Vector]]:\n",
|
||||
" \"\"\"What (point, velocity) pairs can be reached in one step from this path?\"\"\"\n",
|
||||
"def legal_moves(path, track=track, deltas=deltas) -> Iterator[Point]:\n",
|
||||
" \"\"\"What points can be reached in one step from this path?\"\"\"\n",
|
||||
" if len(path) <= 2: # Make sure we start counterclockwwise\n",
|
||||
" deltas = [Point(x, y) for y in (0, 1) for x in (0, 1)]\n",
|
||||
" p, v = path[-1], velocity(path)\n",
|
||||
" for d in deltas:\n",
|
||||
" new_p = p + v + d\n",
|
||||
" new_v = v + d\n",
|
||||
" if new_p in track and not intersects_circle(p, new_p, 3, zero):\n",
|
||||
" yield new_p, new_v\n",
|
||||
" yield new_p\n",
|
||||
" \n",
|
||||
"def intersects_circle(p, q, r, c):\n",
|
||||
" \"\"\"Does a line from p to q intersect a circle of radius r at center c?\"\"\"\n",
|
||||
@@ -248,11 +247,15 @@
|
||||
" frontier = {(path[-1], velocity(path)): path}\n",
|
||||
" completed = []\n",
|
||||
" while not completed:\n",
|
||||
" frontier = {(p, v): path + [p] \n",
|
||||
" for path in frontier.values() \n",
|
||||
" for p, v in legal_moves(path)}\n",
|
||||
" frontier = expand(frontier)\n",
|
||||
" completed = [path for path in frontier.values() if is_complete(path)]\n",
|
||||
" return completed"
|
||||
" return completed\n",
|
||||
"\n",
|
||||
"def expand(frontier) -> dict:\n",
|
||||
" \"\"\"The {(point, velocity): path} mapping extended one step in all legal ways.\"\"\"\n",
|
||||
" return {(p, velocity(path + [p])): path + [p] \n",
|
||||
" for path in frontier.values() \n",
|
||||
" for p in legal_moves(path)}"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -262,7 +265,7 @@
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
@@ -275,34 +278,6 @@
|
||||
"plot(search([start]))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"To give you an idea of some of the paths that were not shown, here are completions of a path called `tight`:"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 11,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"tight = [start, Point(1, -4), Point(2, -3), Point(3, -1), Point(3, 1), Point(2, 3)]\n",
|
||||
"plot(search(tight))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
@@ -320,14 +295,53 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"execution_count": 11,
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"def decode_path(path) -> List[int]:\n",
|
||||
"def encode_path(path) -> List[int]:\n",
|
||||
" \"\"\"The digits representing the moves (as coded changes in acceleration).\"\"\"\n",
|
||||
" return [deltas.index(velocity(path[:i + 1]) - velocity(path[:i])) + 1\n",
|
||||
" for i in range(1, len(path))]"
|
||||
" for i in range(1, len(path))]\n",
|
||||
"\n",
|
||||
"def decode_path(digits, start=start) -> Path:\n",
|
||||
" \"\"\"The points that the digits represent.\"\"\"\n",
|
||||
" velocity = zero\n",
|
||||
" path = [start]\n",
|
||||
" for d in digits:\n",
|
||||
" velocity += deltas[d - 1]\n",
|
||||
" path.append(velocity + path[-1])\n",
|
||||
" return path"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 12,
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"name": "stdout",
|
||||
"output_type": "stream",
|
||||
"text": [
|
||||
"[3, 3, 1, 7, 7, 5, 7, 8, 9, 9, 3, 6]\n",
|
||||
"[3, 3, 1, 7, 7, 5, 7, 8, 9, 9, 3, 9]\n",
|
||||
"[3, 3, 1, 7, 7, 5, 7, 8, 9, 9, 3, 3]\n",
|
||||
"[3, 3, 1, 7, 7, 5, 7, 8, 9, 9, 6, 3]\n",
|
||||
"[3, 3, 1, 7, 7, 5, 7, 8, 9, 9, 6, 6]\n"
|
||||
]
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"for path in search():\n",
|
||||
" print(encode_path(path))\n",
|
||||
" assert path == decode_path(encode_path(path)) "
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"To get an idea of some of the paths that were discarded by the `frontier`, here we start with a path that is tighter around the circle, and search for completions:"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -337,28 +351,17 @@
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"image/png": "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 truncated
|
||||
"text/plain": [
|
||||
"[[3, 3, 1, 7, 7, 5, 7, 8, 9, 9, 3, 6],\n",
|
||||
" [3, 3, 1, 7, 7, 5, 7, 8, 9, 9, 3, 9],\n",
|
||||
" [3, 3, 1, 7, 7, 5, 7, 8, 9, 9, 3, 3],\n",
|
||||
" [3, 3, 1, 7, 7, 5, 7, 8, 9, 9, 6, 3],\n",
|
||||
" [3, 3, 1, 7, 7, 5, 7, 8, 9, 9, 6, 6],\n",
|
||||
" [3, 5, 2, 4, 4, 8, 8, 7, 9, 6, 6, 3],\n",
|
||||
" [3, 5, 2, 4, 4, 8, 8, 7, 9, 6, 6, 6],\n",
|
||||
" [3, 5, 2, 4, 4, 8, 8, 7, 9, 6, 6, 9],\n",
|
||||
" [3, 5, 2, 4, 4, 8, 8, 7, 9, 9, 3, 6],\n",
|
||||
" [3, 5, 2, 4, 4, 8, 8, 7, 9, 9, 3, 9],\n",
|
||||
" [3, 5, 2, 4, 4, 8, 8, 7, 9, 9, 3, 3],\n",
|
||||
" [3, 5, 2, 4, 4, 8, 8, 7, 9, 9, 6, 3]]"
|
||||
"<Figure size 432x288 with 1 Axes>"
|
||||
]
|
||||
},
|
||||
"execution_count": 13,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"[decode_path(path) for path in search() + search(tight)]"
|
||||
"plot(search(decode_path([3, 5, 2, 4, 4])))"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
Reference in new issue
Block a user