from string import ascii_lowercase from itertools import product from machine import ( Machine, _, o, view_program, flipflop, make_adder, make_switch, ) a, b, c, d, w, x, y, z = 'abcdwxyz' oh, p, q, r, s, t = 'opqrst' reg0, reg1 = (a, b, c, d), (z, y, x, w) R, X, A = (r, s, t), (x, y, z), (a, b, c) program = {} sum_bits, program[oh] = make_adder(reg0, reg1) program.update(zip(reg0, sum_bits)) program.update(zip(R, make_switch(p, X, A))) program[p] = flipflop(p, c, oh) print view_program(program) m = Machine(ascii_lowercase, program) B = _, o for m.R[w], m.R[x], m.R[y], m.R[z] in product(B, B, B, B): print ' ', ascii_lowercase, m.as_int() n, looped_to, seen = m.find_cycle(noisy=True) m.reset()