I didn't know about __new__(), I only knew about redifining methods, so based on what you knew, your reasoning was correct.
I knew no one before starting the clique. Lanrian joined the same way as the others. If anything, Lanrian was suspicious because they insisted we put the random.seed() inside move() and make it pseudorandom so that simulators can accurately emulate our behaviour. The reason they gave was to better collaborate, and have the simulators play 2 against 3 instead of 3 against 3. I was mildly convinced and I still am suspicious of that move. They only late in the week reported the weakness, after you and philh passed on the chance to do so. But they did so soon after I showed them the code.
I was really paranoid about this and I feel you could have used this somehow.
The secrecy on the members was used to:
So I used that advantage only in a defensive way. But I did receive an offer that did inform me on more offensive uses, and impacted my payload, which I will elaborate on if the sender allows it.
They asked if the code was airtight. "I don't see anything I want to flag."
And I saw right through that my friend :D
As I said in my reply to Taleuntum, I left the weakness as a test to find someone I could trust to find sneakier weaknesses. Of you three who saw the code, only Lanrian reported. "I don't see anything I want to flag." That's cute. To be more accurate, I wasn't sure you were hiding a security flaw, but I didn't have to be sure since either way meant I couldn't entrust you with the task. And the wording left me thinking you were hiding a security flaw with 80% credence. I thought about asking "Did you see anything worth flagging?", but decided against it.
Later, lsusr told me that that line would get me disqualified. I didn't say anything, in the hopes some clique member would wonder what it was for, include it in their bot just in case, and get disqualified.I feel a little bad about all this, and hope Vanilla_cabs has no hard feelings.
Later, lsusr told me that that line would get me disqualified. I didn't say anything, in the hopes some clique member would wonder what it was for, include it in their bot just in case, and get disqualified.
I feel a little bad about all this, and hope Vanilla_cabs has no hard feelings.
Not at all, I just feel like I've dodged a big bullet. How come that line would get someone disqualified? Has lsusr been more specific?
The first versions of CloneBot (the name of the program for our clique) did actually contain a mistake I could exploit (by defining the __new__() method of the class after the payload) and so this was my plan until Vanilla_Cabs fixed this mistake. After they fixed it, I didn't notice any way I can take advantage, so I joined the clique in spirit.
Little did you know that I was aware of this weakness from the beginning, and left it as a test to find whom I could trust to search for the weaknesses I didn't know. Of the 3 (I think) to whom I showed the code early, only Lanrian reported it.
I'm curious how believable my lies were, I felt them to be pretty weak, hopefully it's only because of my inside view.
I didn't play a simulator so I didn't care about the first.
About the second, I can tell you that another member alerted me that you seemed to have a hidden ally. They feared you had made an ally outside the clique, or just given the code to join the clique to a player know only to you. Which I thought was a possibility. Actually, I hoped for a few stowaways to boost our numbers.
We were five hundred, but with swift support
Grew to three thousand as we reached the port
It's been an exciting week, I've had lots of fun, thanks everyone who shared ideas, and thanks lsusr for swiftly and kindly answering all my questions. Now is time for the final act.
You will receive a personal message shortly.
That is all.
At least one member asked for a basic obfuscation measure. Publishing the code would defeat their purpose.
Also, from an insider's perspective, publishing the code now would only slightly increase our chances to get another member before the end of admissions, while it would entail a significant risk of opponents adjusting their strategy against it. I should have decided on the publication earlier, but honestly it was never a priority.
I get it that you don't like that players join forces. I am not sure I'd allow coordination if I had a say on the rules. But per the rules coordination is part of the game. That's it. For all we know, others are making cliques in secret.
I believe my scheme substantially increases our chances of winning, so I'll go with that.
Admissions are closing soon. Good luck, whatever you decide :)
do you compare source code alphabetically, and favour X over Y on even rounds and Y over X on odd rounds?
Great idea! I've updated the following heuristic using that.
There is one thing that is different between the programs: the code that you will add to be executed in the later rounds (the payload). As I said, CloneBot will ignore it when judging whether its opponent is a clone. But if the opponent is a clone, it will use this heuristic to decide who goes first:
This is fair, deterministic, and needs 0 turn to communicate. There's no point in tweaking your payload in the hope of starting with 3 more often. The only problem are ties, which are unllikely, and adding your name as a comment solves it.
Why also compare length? Because otherwise, the payloads of extreme length (very short or very long) would have very stable alternating priority, while the ones in the middle would be more subject to randomness. This way, it's the same randomness for everybody.
Also, it may be a good idea to make the level of defection against outsiders depend on the round number. i.e. cooperate at first to maximize points, then after some number of rounds, when you're likely to be a larger proportion of the pool, switch to defecting to drive the remaining bots extinct more quickly.
That seems reasonable. I'm just worried that we might let greedy or even cooperating bots take too much lead. Ideally, as soon as the clique reaches criticals mass, it should starve its opponents. The 'as soon' depends on what proportion of the pool we'll initially be.
Howdy! You've probably looked up Zvi's past Darwin game that directly inspired this one. A group of players formed a clique who recognized each other, cooperated among themselves and defected on everyone else. They nearly wiped the board, but they were preyed upon by a member who played both sides.
What they missed was a way to guarantee that all members apply the decided strategy. They had no way to enforce it.
I call it CloneBot: a bot who checks that its opponent has the exact same code as itself. No way to cheat that! It guarantees that every member of the clique does the same thing. Moreover, there'll be a way to cooperate optimally, avoiding losing the first rounds to coordinate. The clique are gonna be the most efficient ccoperators.
But in the end we're all gonna tie, it's boring. I want to take a chance at winning!
So do I. This is why the clique are only going to collaborate until a predefined round. After we've eliminated the competition, we can have a dramatic showdown among ourselves. Cool, no? In the code, there's gonna be a separate function that's called only after a given round. The code checker will verify that the function is only called at the right time, but will ignore what is inside.
What will CloneBot do?
Depends on the proportion of clones. If we're a big group, CloneBot will straight up defect against outsiders by playing 3. Otherwise, CloneBot will cooperate, but make sure opponent does not gain more than itself.
With its clones, CloneBot will cooperate by alternating 2-3. Who gets the first 3 will be determined fairly before the first turn starts.
Ok, but I don't want to find myself in a small clique that's going to lose.
You don't have to commit to submitting CloneBot right away. All you need to do is contact me to say you're in, conditional on the clique being large enough. By default, contact me privately. If you want, you can roll a D6, and if you roll 6, join me publicly right here.
A few days before the deadline, if we're 5 or less, I'll just announce that the critical mass was not reached. But if we're more than 5, I will make public the names of all who contacted me to join the group and crush the competition. If I post your name at that moment, you must submit CloneBot.
I like the idea, but I wish X instead of Y.
Every detail is open to discussion for about 3 days. After that, this post will be updated, and every person who expressed their desire to join will be informed of the changes and asked to confirm their participation.
Where do I find CloneBot?
I'm considering making the code public.
Low confidence, but let's play anyways:
5 million miles
For both 2009 and 2019: 300 million tons
By the way, for q2, what is considered cargo? Are passengers considered cargo? How about the crew? How about hand luggage of the passengers? Hand luggage of the crew? The meals and other consumables? (my answer assumed no for all these questions)
#50 reminded me of another room escape...