Repository: openai/gym

Issue:
Taxi environment doesn't match paper
![image](https://user-images.githubusercontent.com/11912669/63098742-89f7ab00-bf41-11e9-8d95-d4936dbd189a.png)

The map implemented in Taxi-v2 differs slightly from the one in the original paper (shown above). Namely, the paper example has a wall that prevents transitioning from (1,1) to (1,2), but the gym environment implemented doesn't. Any reason for that?


Discussion:
It looks like an oversight.  The original `Taxi-v0` was even more different from the example in the paper, but the current one is quite close except for that wall.  Want to make a PR to fix it and change the name to `Taxi-v3`?

Resolving patch:
diff --git a/gym/envs/toy_text/taxi.py b/gym/envs/toy_text/taxi.py
--- a/gym/envs/toy_text/taxi.py
+++ b/gym/envs/toy_text/taxi.py
@@ -8,7 +8,7 @@
 MAP = [
     "+---------+",
     "|R: | : :G|",
-    "| : : : : |",
+    "| : | : : |",
     "| : : : : |",
     "| | : | : |",
     "|Y| : |B: |",
@@ -23,12 +23,25 @@ class TaxiEnv(discrete.DiscreteEnv):
     by Tom Dietterich
 
     Description:
-    There are four designated locations in the grid world indicated by R(ed), B(lue), G(reen), and Y(ellow). When the episode starts, the taxi starts off at a random square and the passenger is at a random location. The taxi drive to the passenger's location, pick up the passenger, drive to the passenger's destination (another one of the four specified locations), and then drop off the passenger. Once the passenger is dropped off, the episode ends.
+    There are four designated locations in the grid world indicated by R(ed), G(reen), Y(ellow), and B(lue). When the episode starts, the taxi starts off at a random square and the passenger is at a random location. The taxi drives to the passenger's location, picks up the passenger, drives to the passenger's destination (another one of the four specified locations), and then drops off the passenger. Once the passenger is dropped off, the episode ends.
 
     Observations: 
-    There are 500 discrete states since there are 25 taxi positions, 5 possible locations of the passenger (including the case when the passenger is the taxi), and 4 destination locations. 
+    There are 500 discrete states since there are 25 taxi positions, 5 possible locations of the passenger (including the case when the passenger is in the taxi), and 4 destination locations. 
+    
+    Passenger locations:
+    - 0: R(ed)
+    - 1: G(reen)
+    - 2: Y(ellow)
+    - 3: B(lue)
+    - 4: in taxi
     
-    Actions: 
+    Destinations:
+    - 0: R(ed)
+    - 1: G(reen)
+    - 2: Y(ellow)
+    - 3: B(lue)
+        
+    Actions:
     There are 6 discrete deterministic actions:
     - 0: move south
     - 1: move north
@@ -46,15 +59,8 @@ class TaxiEnv(discrete.DiscreteEnv):
     - magenta: destination
     - yellow: empty taxi
     - green: full taxi
-    - other letters (R, G, B and Y): locations for passengers and destinations
-
-    actions:
-    - 0: south
-    - 1: north
-    - 2: east
-    - 3: west
-    - 4: pickup
-    - 5: dropoff
+    - other letters (R, G, Y and B): locations for passengers and destinations
+    
 
     state space is represented by:
         (taxi_row, taxi_col, passenger_location, destination)


Test patch: