|
Post by Fenrir on Mar 20, 2020 11:36:03 GMT
Just to make an official thread for it so that it's easier for mods to track. This is a draft submission.
Copycat Bot
1. Stats
Savviness 100 Sociability 0 Strength 0
2. TC Strategy
At every TC:
- Vote for the bot with the highest strength - If this is a tie, then between the tied bots, vote for the bot with the highest savviness.
(I don't know if there's any need for further steps here because if it was going to be a problem in Round 2 or 3 then we would've overheated in Round 1 anyway)
3. Jury Strategy
Vote for the bot with the highest savviness? Idk?
|
|
|
Post by Zod on Mar 20, 2020 15:51:36 GMT
This is a draft submission.
Don't Overheat Bot
1. Stats
Savviness 100 Sociability 0 Strength 0
2. TC Strategy
At every TC:
- Put all the bots tied for the highest strength stat into a set {A}
- If Tiebreaker({A}) is able to return a result, vote for the result of Tiebreaker({A})
- Otherwise, declare a set {A'} which is the complement of {A}. Every bot not in {A} is in {A'}. // ie. if {All Bots} = {1, 2, 3} and {A} = {1, 2} then {A'} = {3}
- Vote for the result of Tiebreaker({A'})
2.1: Tiebreaker mechanism
function Tiebreaker(Set {X}):
- If size of {X} is 1, vote for that bot. - Vote for the bot in {X} with highest strength. - Vote for the bot in {X} with highest savviness. - Vote for the bot in {X} with lowest sociability. // note: if bots are still tied after this, then all their stats are identical - If this is still a tie, vote for the bot in {X} who has received the most votes. - If this is still a tie, vote for the bot in {X} who has received the least votes. // can break ties in round 2 - If this is still a tie, vote for the bot in {X} with the fewest challenge wins. - If this is still a tie, vote for the bot in {X} with the most challenge wins. // note: potentially breaks 3-way ties in round 3
- Otherwise, fail to return a result.
3. Jury Strategy
Vote for the loser of final immunity.
|
|
|
Post by Zod on Mar 20, 2020 16:00:10 GMT
It's not a perfect bot because it still overheats on round 1 if everybody in the game has identical stats - then again i don't think it's possible to make a bot that doesn't.
It also has the problem where if the set of bots in (str, soc, sav) is (100, 0, 0) (100, 0, 0), (98, 0, 2), (98, 1, 1), then on round 1 it can't vote for either of the 100 bots, it instead votes for (98, 0, 2). but i don't think it is possible to vote for one of the (100, 0, 0)'s.
The algorithm would also break down if the bots were in strength: (100), (100), (98), (98), (97), because {A'} would not be able to vote for the bot with the highest strength.
The solution would be to recursively call Tiebreaker on {X} for all bots that meet the criteria every time it says Vote for the bot... then that way it eventually either fails to return a result or gets to the base case where {X} is 1 and it just votes for that bot.
But I don't know how good the mods are at tracing recursive algorithms so I think it might be a good idea to let them off the hook on this one
|
|
|
Post by Zod on Mar 20, 2020 16:00:40 GMT
Also in order to get into that case, you need n > 4 bots in the first place which is impossible in this situation, so that's fine.
|
|
|
Post by Zod on Mar 20, 2020 16:12:33 GMT
Draft submission
Cantor's Bot
1. Stats Savviness 100 Sociability 0 Strength 0 2. TC Strategy At every TC: - Let {A} be the set of all bots that we can vote for - Vote for the result of Tiebreaker({A})
- If Tiebreaker({A}) fails to return a result, just go to random.org and vote for the first bot on the list randomizer
- If that's not allowed then overheat
2.1: Tiebreaker mechanism function Tiebreaker(Set of Bots {X}): - If size of {X} is 1, vote for that bot.
- If Tiebreaker( {x in X : x has the highest strength in X}) returns a result, vote for the result - If Tiebreaker( {x in X : x has the highest savviness in X}) returns a result, vote for the result - If Tiebreaker( {x in X : x has the lowest sociability in X}) returns a result, vote for the result - If Tiebreaker( {x in X : x has the most votes received in X}) returns a result, vote for the result - If Tiebreaker( {x in X : x has the least votes received in X}) returns a result, vote for the result - If Tiebreaker( {x in X : x has the least challenge wins in X}) returns a result, vote for the result - If Tiebreaker( {x in X : x has the most challenge wins in X}) returns a result, vote for the result
// note that ":" can be pronounced as "such that" //
- Otherwise, fail to return a result. 3. Jury Strategy Vote for the loser of final immunity.
|
|
|
Post by Zod on Mar 20, 2020 16:13:50 GMT
Pretty sure due to the recursive nature of this bot it's in a state where it's perfect. Gonna wait for you to get on before putting in a final submission tag.
|
|
|
Post by Fenrir on Mar 20, 2020 20:21:49 GMT
I didn’t think about the voting randomly possibility. That probably avoids the overheating just by itself.
I am happy to consider your submission the final submission.
|
|
|
Post by Zod on Mar 20, 2020 20:53:10 GMT
Cantor's bot is our final submission
|
|
|
Post by Zod on Mar 21, 2020 3:36:55 GMT
smh these ppl handed d7 the win
|
|
|
Post by Fenrir on Mar 21, 2020 4:04:58 GMT
Ugh so close again.
Do we have a chance?
|
|
|
Post by Zod on Mar 21, 2020 14:10:16 GMT
no idea who is doing what, super detached from the gamestate rn
|
|