From 902c34c0fe0fe9c6950654935aa22769d809870e Mon Sep 17 00:00:00 2001 From: edipretoro Date: Wed, 15 Jul 2026 21:09:52 +0200 Subject: [PATCH] First working implementation of the genid method --- noid.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/noid.py b/noid.py index 01388ba..c8d80ff 100644 --- a/noid.py +++ b/noid.py @@ -1,5 +1,7 @@ #!/usr/bin/env python +import random + from dataclass_persistence import Persistent from dataclasses import dataclass, field from typing import ClassVar @@ -72,7 +74,18 @@ class Minter(Persistent): # - value + (index * percounter) # - mask # 10. return the noid - return "" + if self.oacounter >= self.oatop: + raise Exception("noid are exhausted.") + s = len(self.active_counters) + if s < 1: + raise Exception("noid are exhausted.") + idx = random.randrange(s) + c = self.active_counters[idx] + c.value += 1 + self.oacounter += 1 + if c.value >= c.top: + self.active_counters.pop(idx) + return self._n2xdig(c.value + (c.rank * self.percounter)) def initcounters(self) -> None: # 1. [X] Initialize oacounter to 0