def next(state,quidam): s = state.copy() if quidam<3: s[quidam] = 1-s[quidam] s[3] = 1-s[3] if quidam<3 and s[quidam]!=s[3]: raise TypeError() if (s[0]==s[1]!=s[3]) or (s[1]==s[2]!=s[3]): raise TypeError() if s==[1,1,1,1]: raise StopIteration() return s