In mathematics, a Golomb ruler is a set of marks at integer positions along an imaginary ruler such that no two pairs of marks are the same distance apart. The number of marks on the ruler is its order, and the largest distance between two of its marks is its length. Translation and reflection of a Golomb ruler are considered trivial, so the smallest mark is customarily put at 0 and the next mark at the smaller of its two possible values.
The Golomb ruler was named for Solomon W. Golomb and discovered independently by Sidon and Babcock.
There is no requirement that a Golomb ruler be able to measure...
@PhiNotPi would that be in the sense of summing over all possibilities? Possible for problems with a reasonably small space of possibilities. Not possible for the kind of large problems you'd use a real quantum computer for, but that doesn't stop you making a toy one for small versions of the problem
The first qubit is measured to be a 1. Then, one millisecond later (faster than the speed of light would convey information across the distance), the second qubit is measured.
I can imagine a future where such technology allows us to extend our lives to hundreds of years, but it will take until we're in our 80s before we are ready for that Intro to Programming class...
In theory, if you had a working quantum computer, could you use it to find solutions from a huge space very quickly, including finding a classical computer program rather than writing it?
Still not quite enough of a speed up to consider treating programming itself as a hash breaking exercise. Sounds like it would take something more to put programmers out of a job
Yes that's my thinking - things which would normally be impractical to brute force (take forever) might be worth brute forcing on a quantum computer that doesn't have to do it all one at a time
If the numbers only need to be twice as long then we shouldn't even notice much difference.
I wonder if you could get quantum calculation effects from a series of pieces of paper with slits in, like an extended version of Young's Double Slit experiment, with the distances tailored to do some useful calculation.
@TheDoctor not just bitcoin - most of the cryptocurrencies currently out there. If you have to wait until technology arrives that breaks them all, it won't make you much money though...
I wonder if anyone's working on a quantum-proof cryptocurrency?
@PhiNotPi the blockchain is based on hash functions but what about the private keys? I think they're elliptic curve key pairs. The addresses are put through an extra few hashes but once you've used an address once the public key is visible. Is an elliptic curve based public key susceptible to a quantum computer?
The specific question
I recently posted my test suite as a community wiki answer to a couple of questions that I worked on. Two contributions so far are:
Family Tree Solver
Put a list in order (Amusingly, it has more upvotes than the answers.)
The test suites use perl TAP, which is as clos...
if your code is shifted down 5 and his is shifted down 3 then you're going to be targeting a different line of his code than otherwise. that's the whole point of rotation. he COULD submit a new version of his bot that's rotated down. if your code relies on whether I put FLAG at the top or bottom of my code, I think that's not cool.
the absolute line number of a copy to your opponent won't matter, and shouldn't. that's the whole point of my suggestion. if you use some logic to read their code, then base a copy on that, awesome, but that's relative, and that's going to work regardless of rotation
@NathanMerrill are there just going to be the same number of sitting duck bots lying around as any other bot (so a small minority) or will there be a large enough number of sitting ducks to allow building up a clone army?
@NathanMerrill here's an alternative to the code rotation suggestion: instead of rotating every bot's code, only rotate references to enemy code. That would eliminate all of the concerns you're having now, and still accomplish the goal of my original suggestion
@NathanMerrill OK. I was just imagining a huge arena filled mostly with sitting ducks, with one of each contestant bot somewhere on the arena, spreading out into the sitting ducks making clones until they finally meet and battle
any time my bot tries to read another bot's lines, the read gets rotated. ditto trying to read their C. that's it, I think. it wouldn't require anything else.
@githubphagocyte one bot per entry and a lot of sitting ducks would shift the game even further in favor of fast offense, and it's already really really slanted that way, I think.
@NathanMerrill when you read any bot's code, you get it rotated by their N, except your own code isn't rotated.
As long as the interpreter knows the rotation offset of the first and last bots in the chain (you and the other end of the ******), it can work out the difference, right?
@githubphagocyte if you get rotated code and C when you read your own code/C then you also have to deal with things like Copy C C which would not work correctly
But anyone can write flags before their code right? Are you saying you would apply a random offset to each contestant's code, or apply a different offset to each of their 50 bots?
Then absolute references within its own code would be corrected with its own offset, and any references to other bots would be unable to tell what their offset is, making them appear to simply be rotated versions of the code pasted in the question
It might be easier to accept that you might need to rewrite the controller from scratch and just ask questions in terms of what the contestants will see. Otherwise all your decisions will be biased by the pain of having to discard code that's already written...
Are you doing more than one run to give an average score? Could you just randomly assign an offset for each run, but apply it to all 50 of each contestants bots?
Hashing doesn't seem to add much benefit unless you are salting too, since the controller code will presumably be public
the problem at hand is how to implement a code-rotation solution
option one is basically to actually rotate the code, which requires a lot of transformation of specific types of instructions, particularly manipulating C
option two is to alter the results of reading other bots' code
I think my suggestion is equivalent to your option two
Each bot has a hidden variable that indicates which position in its code is zero. That is used to label its own code lines so that all of its functionality works identically to the original unshifted code.
@githubphagocyte but you don't know what name Nathan will give to the contestants. a lot of KOTH runners remove spaces, or replace with underscores, etc
If the offset was different each run then all entries would have an unknowable offset, rather than just those that are affected by any text alteration in their name. That seems simpler.
If you really want to be paranoid you could specify that the random seed will be something that no one including yourself could know or control - say the lottery numbers on the night you run the contest...
I'm thinking a bot might be represented by four colors, in quadrants. one is the flag majority. one is weighted by all flags in the bot. one is weighted by lines of code that match other bots.
one is ???
maybe just two colors, top half is flag, bottom half is lines of code?
which I'm grateful for...and I've learned my lesson
also, putting my own bots has given me more rep than the question itself
I think so, at least
I'll occasionally randomly see +80
to find that people have upvoted all of my bots
oooh, there is a winner
RandomCopier had 91 points Blocker had 46 points Attacker had 36 points Copycat had 26 points There were 1 bots with equal flags Execution took 174.868999958 seconds
fascinating
I guess that makes sense
neither the blocker nor the attacker move at all
Copycat has a move as his default action until he finds somebody to copy
also, I'm really happy that Blocker did significantly better than Attacker
I'm pretty sure that this guy can read people's minds. When I think, "Wow, he really hurried through that." and I am just about to hit the rewind button, he goes back over it.
I wish he taught everything, because then I would learn everything
@Rainbolt I have those open in another window from when you mentioned them the other day (yesterday? I don't have good time sense). I think I might watch them.