diff --git a/src/Solver/Mage.py b/src/Solver/Mage.py index 8c35ad14..b35ac849 100644 --- a/src/Solver/Mage.py +++ b/src/Solver/Mage.py @@ -123,11 +123,15 @@ class Mage(CommandLineSolver): _l_alph = len(_alph) + _nodes_cnt = 0 + _nodes_names = {} + _nodes_views = set() + def get_reach_name(self, reach): return f"Reach_{reach.pamhyr_id:>3}".replace(" ", "0") def get_node_name(self, node): - """Generate a 3 char name from node pamhyr_id + """Generate a 3 char name for node Args: node: The node @@ -137,18 +141,33 @@ class Mage(CommandLineSolver): """ n = node.pamhyr_id - return "".join( - list( + if n in self._nodes_names: + return self._nodes_names[n] + + name = "" + + checked_new = False + while not checked_new: + self._nodes_cnt += 1 + nc = self._nodes_cnt + + name = "".join( map( lambda i: self._alph[i % self._l_alph], [ - int(n/1000), - int(n/10), - n + int(nc / (self._l_alph * self._l_alph)), + int(nc / self._l_alph), + nc ] ) ) - ) + + checked_new = name not in self._nodes_views + + self._nodes_views.add(name) + self._nodes_names[n] = name + + return name def cmd_args(self, study): lst = super(Mage, self).cmd_args(study)