import algorithm, sequtils, strutils const LeftDigits = [" ## #", " ## #", " # ##", " #### #", " # ##", " ## #", " # ####", " ### ##", " ## ###", " # ##"] RightDigits = LeftDigits.mapIt(it.multiReplace(("#", " "), (" ", "#"))) EndSentinel = "# #" MidSentinel = " # # " template isEven(n: int): bool = (n and 1) == 0 proc decodeUPC(input: string) = #................................................................................................. proc decode(candidate: string): tuple[valid: bool, list: seq[int]] = const Invalid = (false, @[]) var pos = 0 var next = pos + EndSentinel.len if candidate[pos..= 0: result.list.add i pos = next else: return Invalid next = pos + MidSentinel.len if candidate[pos..= 0: result.list.add i pos = next else: return Invalid next = pos + EndSentinel.len if candidate[pos..