# test 
# Fig. 26.1 

import random, time

N = 100000

x = []
for i in range(N):
  x.append( random.choice([True, False]))
# print(*x, sep=', ')
# print()

start = time.time()
for i in range(N-1):
  a = (x[i] + x[i+1]) % 2    # mod1
print(f"mod1: {a} in {(time.time() - start):.4f} secs")

start = time.time()
for i in range(N-1):
  a = x[i] ^ x[i+1]  # xor
print(f"xor: {a} in {(time.time() - start):.4f} secs")

start = time.time()
for i in range(N-1):
  a = (x[i] + x[i+1] + x[i]*x[i+1]) % 2  # mod2
print(f"mod2: {a} in {(time.time() - start):.4f} secs")

start = time.time()
for i in range(N-1):
  a = x[i] or x[i+1]   # or
print(f"or: {a} in {(time.time() - start):.4f} secs")
