from lib import get_data data = get_data(__file__) cups = list(map(int, list(data.strip()))) min_label = min(cups) max_label = max(cups) cmap = {} for i in range(len(cups)): cmap[cups[i]] = cups[(i + 1) % len(cups)] cc = cups[0] for _ in range(100): a = cmap[cc] b = cmap[a] c = cmap[b] cmap[cc] = cmap[c] dest = cc - 1 while dest in {a, b, c} or dest < min_label: dest = dest - 1 if dest < min_label: dest = max_label cmap[c] = cmap[dest] cmap[dest] = a cc = cmap[cc] s = "" cup = cmap[1] while cup != 1: s += str(cup) cup = cmap[cup] print(s) cups = list(map(int, list(data.strip()))) current = max(cups) + 1 while len(cups) != 1_000_000: cups.append(current) current += 1 min_label = min(cups) max_label = max(cups) cmap = {} for i in range(len(cups)): cmap[cups[i]] = cups[(i + 1) % len(cups)] cc = cups[0] for _ in range(10_000_000): a = cmap[cc] b = cmap[a] c = cmap[b] cmap[cc] = cmap[c] dest = cc - 1 while dest in {a, b, c} or dest < min_label: dest = dest - 1 if dest < min_label: dest = max_label cmap[c] = cmap[dest] cmap[dest] = a cc = cmap[cc] a = cmap[1] b = cmap[a] print(a * b)