From 9ef07d0fe06737712e08791213e4885e5e94bb7c Mon Sep 17 00:00:00 2001
From: u214892 <u214892@sbb.ch>
Date: Mon, 20 May 2019 15:29:09 +0200
Subject: [PATCH] use set instead of list for more efficient retrieval (hash
 set with O(1) instead of linear array with O(n))

---
 flatland/core/transitions.py | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/flatland/core/transitions.py b/flatland/core/transitions.py
index 622d9005..add047b6 100644
--- a/flatland/core/transitions.py
+++ b/flatland/core/transitions.py
@@ -556,16 +556,16 @@ class RailEnvTransitions(Grid4Transitions):
         self.maskDeadEnds = 0b0010000110000100
 
         # create this to make validation faster
-        self.transitions_all = []
+        self.transitions_all = set()
         for index, trans in enumerate(self.transitions):
-            self.transitions_all.append(trans)
+            self.transitions_all.add(trans)
             if index in (2, 4, 6, 7, 8, 9, 10):
                 for _ in range(3):
                     trans = self.rotate_transition(trans, rotation=90)
-                    self.transitions_all.append(trans)
+                    self.transitions_all.add(trans)
             elif index in (1, 5):
                 trans = self.rotate_transition(trans, rotation=90)
-                self.transitions_all.append(trans)
+                self.transitions_all.add(trans)
 
     def print(self, cell_transition):
         print("  NESW")
@@ -620,10 +620,7 @@ class RailEnvTransitions(Grid4Transitions):
         Boolean
             True or False
         """
-        for trans in self.transitions_all:
-            if cell_transition == trans:
-                return True
-        return False
+        return cell_transition in self.transitions_all
 
     def has_deadend(self, cell_transition):
         if cell_transition & self.maskDeadEnds > 0:
-- 
GitLab