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