RosettaCodeData/Task/Intersecting-number-wheels/Python/intersecting-number-wheels-...

22 lines
711 B
Python

def nextfrom(w, name):
while True:
nxt, w[name] = w[name][0], w[name][1:] + w[name][:1]
if '0' <= nxt[0] <= '9':
return nxt
name = nxt
if __name__ == '__main__':
for group in '''
A: 1 2 3
A: 1 B 2; B: 3 4
A: 1 D D; D: 6 7 8
A: 1 B C; B: 3 4; C: 5 B'''.strip().split('\n'):
print(f"Intersecting Number Wheel group:\n {group}")
wheel, first = {}, None
for w in group.strip().split(';'):
name, *values = w.strip().split()
wheel[name[:-1]] = values
first = name[:-1] if first is None else first
gen = ' '.join(nextfrom(wheel, first) for i in range(20))
print(f" Generates:\n {gen} ...\n")