Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- """
- Scratch for expectation model.
- Inventory:
- {
- wood: 0,
- brick: 0,
- grain: 0
- }
- Numbers:
- {
- wood: [4, 2, 4, 6],
- brick: [],
- grain: [4, 6, 4, 3, 12, 4, 1]
- }
- Needed shit:
- road = {
- wood: 1,
- brick: 1,
- grain: 0
- }
- settlement = {
- wood: 1,
- brick: 2,
- grain: 2
- }
- city = {
- wood: 0,
- brick: 3,
- grain: 3
- }
- Net needed shit = needed shit - inventory (min of that and 0) for each item in inv.
- num to prob: (6 - |7 - v|) / 36
- for each resource type in your needed items:
- arr.map(num_to_prob) => sum
- => invert to get expected turns/item
- => mult by num needed items to get
- EXAMPLE: (see above)
- """
- road = { "wood": 1, "brick": 1, "grain": 0 }
- settlement = { "wood": 1, "brick": 2, "grain": 2 }
- city = { "wood": 0, "brick": 3, "grain": 3}
- items = [road, settlement, city]
- ROAD = 0
- SETTLEMENT = 1
- CITY = 2
- def num_to_prob(num):
- return (6 - abs(7 - num)) / 36.0
- def player_nums_to_turns_per_item(player_nums):
- items_per_turn = sum([num_to_prob(num) for num in player_nums])
- turns_per_item = 1 / items_per_turn if items_per_turn != 0 else 100000
- return turns_per_item
- # item: 0 for road, 1 for settlement, 2 for city
- def get_num_rolls(player_inv, player_nums, item_num):
- item = items[item_num]
- rolls = 0
- for resource in player_inv.keys():
- needed_items_in_resource = max(0, item[resource] - player_inv[resource])
- needed_turns_for_item = player_nums_to_turns_per_item(player_nums[resource])
- print("resource", resource)
- print("needed_items_in_resource", needed_items_in_resource)
- print("needed_turns_for_item", needed_turns_for_item)
- rolls += needed_turns_for_item * needed_items_in_resource
- print(rolls)
- return rolls
- inventory = { "wood": 0, "brick": 0, "grain": 0 }
- numbers = { "wood": [4, 2, 4, 6], "brick": [], "grain": [4, 6, 4, 3, 12, 4, 22] }
- get_num_rolls(inventory, numbers, ROAD)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement