############################################################################# # ----- MAN vs MACHINE ----- # # # # People are not particularly good at entropy (randomness) # # # # In this game you try to randomly say 1's and 0's # # The computer can pass (not guess), or take a guess at what you will say # #If the computer gets it correct, they get a point, if not, you get a point # # The computer makes an educated guess based on past inputs # # # # This code was translated fromt he original source code available at: # # http://www.loper-os.org/bad-at-entropy/manmach.html # # # # This code was translated by ImportUsername # ############################################################################# import math def new_m(): m = [] for v in range(2): m.append([]) for w in range(3): m[v].append([]) for x in range(2): m[v][w].append([]) for y in range(3): m[v][w][x].append([]) for z in range(2): m[v][w][x][y].append(0) return m def main(): m = new_m() i = 1 sp = 0 sk = 0 k1 = 0 k2 = 0 p1 = 0 p2 = 0 n1 = 0 r = 0 while True: print("-----------------\n\nRound: "+str(i) + \ "\n- Computer Score: "+ str(sk) + \ "\n- Player Score: " + str(sp)) if r != 0: print("\n- Computer Accuracy: " + str((float(sk)/float(r))*100) + "%") if i < 3: n1 = 2 if abs(m[p1][k1][p2][k2][0] - m[p1][k1][p2][k2][1]) <= 1.8 * math.pow(1.01,i): n1 = 2 elif m[p1][k1][p2][k2][0] < m[p1][k1][p2][k2][1]: n1 = 1 else: n1 = 0 n = 2 while n != 1 and n != 0: try: n = int(raw_input("\n-----------------\nEnter a number 1 or 0: ")) except: print("\nPlease enter either 1 or 0") if n1 == 1 or n1 == 0: print("-----------------\nComputer guesses "+str(n1)) else: print("-----------------\nComputer passes") if i > 2: m[p1][k1][p2][k2][n] = m[p1][k1][p2][k2][n] + math.pow(1.1,i) k1 = k2 k2 = n1 p1 = p2 p2 = n i = i + 1 if n1 != 2: r += 1 if n == n1: sk = sk + 1 else: sp = sp + 1 if __name__ == '__main__': main()