diff options
Diffstat (limited to 'rfc1982_serial_number.py')
-rwxr-xr-x | rfc1982_serial_number.py | 16 |
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}") |