Advertisement
Guest User

Untitled

a guest
Apr 7th, 2020
211
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.32 KB | None | 0 0
  1. from __future__ import division
  2. from math import sqrt
  3. import random as rnd
  4.  
  5. def checkGame(a, b):
  6.     if a == '0' and b == '1' or a == '1' and b == '2' or a == '2' and b == '0':
  7.         return -1
  8.     elif a == b:
  9.         return 0
  10.     else:
  11.         return 1
  12.  
  13. RPS_count = { '000' : 3, '001' : 3, '002' : 3, '010' : 3, '011' : 3, '012' : 3, '020' : 3, '021' : 3, '022' : 3, '100' : 3, '101' : 3, '102' : 3, '110' : 3, '111' : 3, '112' : 3, '120' : 3, '121' : 3, '122' : 3, '200' : 3, '201' : 3, '202' : 3, '210' : 3, '211' : 3, '212' : 3, '220' : 3, '221' : 3, '222' : 3 }
  14.  
  15. RPS_disp  = {'0' : 'rock', '1' : 'paper', '2' : 'scissor'}
  16.  
  17.  
  18. wins, ties, losses = 0,0,0
  19. last2 = '33'
  20. #T-1, T
  21.  
  22. #Loops until user presses q
  23. while(1):
  24.     roll = raw_input('Please type r,p,s, or q\n')
  25.    
  26.     while(roll not in ['r', 'p', 's', 'q']):
  27.         roll = raw_input("Look: you've got to type r,p,s, or q\n")
  28.  
  29.     if roll == 'r':
  30.         x = '0'
  31.     elif roll == 'p':
  32.         x = '1'
  33.     elif roll == 's':
  34.         x = '2'
  35.     elif roll == 'q':
  36.         quit()
  37.  
  38.     if(last2[0] == '3'):
  39.         y = str( rnd.randint(0,2) )
  40.     else:
  41.         r_count = RPS_count[last2 + '0']
  42.         p_count = RPS_count[last2 + '1']
  43.         s_count = RPS_count[last2 + '2']
  44.  
  45.         tot_count = r_count + p_count + s_count
  46.  
  47.         q_dist = [ r_count/tot_count, p_count/tot_count, 1- (r_count/tot_count) - (p_count/tot_count) ]
  48.        
  49.         result = [ max(q_dist[2]-q_dist[1],0), max(q_dist[0]-q_dist[2],0), max(q_dist[1]-q_dist[0],0) ]
  50.         resultnorm = sqrt(result[0]*result[0] + result[1]*result[1] + result[2]*result[2])
  51.         result = [result[0]/resultnorm, result[1]/resultnorm, 1 - result[0]/resultnorm - result[1]/resultnorm]
  52.  
  53.         y = rnd.uniform(0,1)
  54.  
  55.         if y <= result[0]:
  56.             y = '0'
  57.         elif y <= result[0] + result[1]:
  58.             y = '1'
  59.         else:
  60.             y = '2'
  61.  
  62.         #update dictionary
  63.         RPS_count[last2+x] += 1
  64.  
  65.     last2 = last2[1] + x
  66.  
  67.     print 'You played: ' + RPS_disp[x] + '\nI played:   ' + RPS_disp[y] + '\nGAME RESULT (-1 is a loss for you):', checkGame(x,y)
  68.  
  69.     if checkGame(x,y) == -1:
  70.         losses += 1
  71.     elif checkGame(x,y) == 0:
  72.         ties   += 1
  73.     elif checkGame(x,y) == 1:
  74.         wins   += 1
  75.  
  76.     print 'Wins:', wins, 'Losses:', losses, 'Ties:', ties
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement