Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Notebook: Grid #459

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Apr 6, 2017
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
162 changes: 157 additions & 5 deletions grid.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,150 @@
"source": [
"# Grid\n",
"\n",
"The functions here are used often when dealing with 2D grids (like in TicTacToe).\n",
"The functions here are used often when dealing with 2D grids (like in TicTacToe)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Heading\n",
"\n",
"With the `turn_heading`, `turn_left` and `turn_right` functions an agent can turn around in a grid. In a 2D grid the orientations normally are:\n",
"\n",
"* North: (0,1)\n",
"* South: (0,-1)\n",
"* East: (1,0)\n",
"* West: (-1,0)\n",
"\n",
"In code:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"orientations = [(1, 0), (0, 1), (-1, 0), (0, -1)]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We signify a left turn with a +1 and a right turn with a -1.\n",
"\n",
"The functions `turn_left` and `turn_right` call `turn_heading`, which then turns the agent around according to the input.\n",
"\n",
"First the code for `turn_heading`:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def turn_heading(heading, inc, headings=orientations):\n",
" return headings[(headings.index(heading) + inc) % len(headings)]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can now use the function to turn left:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(-1, 0)\n"
]
}
],
"source": [
"print(turn_heading((0, 1), 1))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We were facing north and we turned left, so we are now facing west.\n",
"\n",
"Let's now take a look at the other two functions, which automate this process:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def turn_right(heading):\n",
" return turn_heading(heading, -1)\n",
"\n",
"def turn_left(heading):\n",
" return turn_heading(heading, +1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The first one turns the agent right, so it passes -1 to `turn_heading`, while the second one turns the agent left, so it passes +1.\n",
"\n",
"Let's see what happens when we are facing north and want to turn left and right:"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(-1, 0)\n",
"(1, 0)\n"
]
}
],
"source": [
"print(turn_left((0, 1)))\n",
"print(turn_right((0, 1)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"When we turn left from north we end up facing west, while on the other hand if we turn right we end up facing east."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Distance\n",
"\n",
"The function returns the Euclidean Distance between two points in the 2D space."
Expand Down Expand Up @@ -139,7 +281,9 @@
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": true
"collapsed": true,
"deletable": true,
"editable": true
},
"outputs": [],
"source": [
Expand All @@ -154,7 +298,10 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"For example:"
]
Expand All @@ -163,7 +310,9 @@
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
"collapsed": false,
"deletable": true,
"editable": true
},
"outputs": [
{
Expand All @@ -180,7 +329,10 @@
},
{
"cell_type": "markdown",
"metadata": {},
"metadata": {
"deletable": true,
"editable": true
},
"source": [
"The vector we wanted to clip was the tuple (-1, 10). The lowest allowed values were (0, 0) and the highest (9, 9). So, the result is the tuple (0,9)."
]
Expand Down