summaryrefslogtreecommitdiff
path: root/rfc1982_serial_number.py
diff options
context:
space:
mode:
Diffstat (limited to 'rfc1982_serial_number.py')
-rwxr-xr-xrfc1982_serial_number.py16
1 files changed, 6 insertions, 10 deletions
diff --git a/rfc1982_serial_number.py b/rfc1982_serial_number.py
index ae34167..e46974a 100755
--- a/rfc1982_serial_number.py
+++ b/rfc1982_serial_number.py
@@ -40,12 +40,9 @@ class Serial:
return f"{int(self):{len(str(self.modulus))}d}"
def find_intermediate(start, finish):
- if start < finish:
- return None
- else:
- wrap = start + ((Serial.modulus >> 1) - 2)
- assert start < wrap and wrap < finish
- return wrap
+ while not (start < finish): # sic: serial numbers are not (quite) integers
+ start += ((Serial.modulus >> 1) - 1)
+ yield start
def main():
from argparse import ArgumentParser
@@ -55,14 +52,13 @@ def main():
ap.add_argument("finish", type = Serial)
args = ap.parse_args()
- wrap = find_intermediate(args.start, args.finish)
-
print(f"Start at {args.start!s}")
- if wrap is None:
+ if args.start < args.finish:
print("No step needed")
else:
- print(f"Step via {wrap!s}")
+ for wrap in find_intermediate(args.start, args.finish):
+ print(f"Step via {wrap!s}")
print(f"End at {args.finish!s}")