Advertisement
Guest User

Untitled

a guest
Apr 24th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.97 KB | None | 0 0
  1. """
  2. Scratch for expectation model.
  3.  
  4. Inventory:
  5. {
  6.    wood: 0,
  7.    brick: 0,
  8.    grain: 0
  9. }
  10.  
  11. Numbers:
  12. {
  13.    wood: [4, 2, 4, 6],
  14.    brick: [],
  15.    grain: [4, 6, 4, 3, 12, 4, 1]
  16. }
  17.  
  18. Needed shit:
  19. road = {
  20.    wood: 1,
  21.    brick: 1,
  22.    grain: 0
  23. }
  24.  
  25. settlement = {
  26.    wood: 1,
  27.    brick: 2,
  28.    grain: 2
  29. }
  30.  
  31.  
  32. city = {
  33.    wood: 0,
  34.    brick: 3,
  35.    grain: 3
  36. }
  37.  
  38. Net needed shit = needed shit - inventory (min of that and 0) for each item in inv.
  39.  
  40.  
  41. num to prob: (6 - |7 - v|) / 36
  42. for each resource type in your needed items:
  43. arr.map(num_to_prob) => sum
  44.    => invert to get expected turns/item
  45.    => mult by num needed items to get
  46.  
  47. EXAMPLE: (see above)
  48.  
  49. """
  50. road = { "wood": 1, "brick": 1, "grain": 0 }
  51. settlement = { "wood": 1, "brick": 2, "grain": 2 }
  52. city = { "wood": 0, "brick": 3, "grain": 3}
  53.  
  54. items = [road, settlement, city]
  55. ROAD = 0
  56. SETTLEMENT = 1
  57. CITY = 2
  58.  
  59. def num_to_prob(num):
  60.     return (6 - abs(7 - num)) / 36.0
  61.  
  62. def player_nums_to_turns_per_item(player_nums):
  63.     items_per_turn = sum([num_to_prob(num) for num in player_nums])
  64.     turns_per_item = 1 / items_per_turn if items_per_turn != 0 else 100000
  65.     return turns_per_item
  66.  
  67. # item: 0 for road, 1 for settlement, 2 for city
  68. def get_num_rolls(player_inv, player_nums, item_num):
  69.     item = items[item_num]
  70.     rolls = 0
  71.  
  72.     for resource in player_inv.keys():
  73.         needed_items_in_resource = max(0, item[resource] - player_inv[resource])
  74.         needed_turns_for_item = player_nums_to_turns_per_item(player_nums[resource])
  75.         print("resource", resource)
  76.         print("needed_items_in_resource", needed_items_in_resource)
  77.         print("needed_turns_for_item", needed_turns_for_item)
  78.         rolls += needed_turns_for_item * needed_items_in_resource
  79.  
  80.     print(rolls)
  81.     return rolls
  82.  
  83. inventory = { "wood": 0, "brick": 0, "grain": 0 }
  84.  
  85. numbers = { "wood": [4, 2, 4, 6], "brick": [], "grain": [4, 6, 4, 3, 12, 4, 22] }
  86.  
  87. get_num_rolls(inventory, numbers, ROAD)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement