Nice to see another participant's thinking process for the puzzles! I ended up getting 5th place using dynamic programming for all of the scenarios, but I'm under the impression that almost everybody in the top 20 had almost equally good strategies and most of the variance in scores was due to luck with the sequence of people they got.
A quick sanity check is in Scenario 2, you needed 300 creative people each with a ~6.2% chance of showing up. The odds of getting a sequence of people where that's even possible for the first place score (2906 rejections + 1000 accepts = 3906 total people) is on the order of 1 in 10000, and that's without even factoring in the other constraints.
I peaked at around 21st but stopped playing because it seemed to be a lottery.
I ran simulations with perfect information and found the lower bound for scores. Scenario 2 was mean 3743 rejections with 265 std deviation. This is the curve formed from simulated data and a strategy that had with perfect information, i.e. you could build the best possible strategy after knowing the random assignments.
So winners had scores that I could not even theoretically achieve unless I could see 1000s of scenarios.
So I ran my code locally and was happy that my code was always just a few rejections off of optimal and called that a private success.
That's what I thought when I saw the challenge originally... maybe a better way of running it would have been to have each run be with a deterministic seed, and apply to all candidates.
That way people can test offline with random sequences, but the leaderboard runs have the same seed for everyone. Maybe I'm missing something obvious, but I think this would have lessened the impact of luck.
The tricky thing is the code for making decisions runs locally on the contestants machine, so the first time they submit they can record the sequence locally and compute the best set of actions for the next time they submit. Even if the sequence is somehow tied to a user's account so they can't resubmit against the same sequence, they could do the same thing with an alt account and feed the sequence to a main account.
Sites like Kaggle usually get around this problem by running contestant code in a containerized environment server side, but even then you can get clever with tricks to leak info.
"Whenever it looked like the networking issue was happening, a script automatically tore down the machine and spun up a new one with a new IP. If this really wasn’t just a me problem I’d be curious to hear what everyone else near the top of the leaderboard was doing to circumvent this."
I remembered that I have a free VPN subscription and put it to good use. When requests started to fail, a script changed my IP to another random country.
As for the solution, I used an approach similar to primal-dual optimization + some manual tweaks that made sure it capitalized when the random gods provided. To make sure I'm close to the optimal, I saved the streams and run an offline solver.
The trick for Scenarios 2 and 3 is that most of the constraints don't end up being bottlenecks. For example in Scenario 2, well-connected pretty much always gets satisfied while doing the other constraints, so the DP table only needs 4 dimensions (space, Berlin local, techno lover, creative).
My other trick was to only build the full DP table for the latter half of the game (i.e. when all the constraints are at least 50% satisfied) which across 4 dimensions reduces the size by a factor of 16. For the beginning half of the game I combined Berlin and techno into a single parameter, which technically isn't perfect but doesn’t matter too much in the early game. I wrote up my approach here if you want more details: https://chriskw.xyz/2025/09/16/Berghain/
Re: optimizing for best case vs expected case, I thought about that but in simulations my strategy mostly performed the same as a "perfect knowledge" strategy where you could see all of the people in line ahead of time and retroactively accept people. When it under performed it was usually because some miraculous string of people showed up near the end, but betting on that happening seemed like it would do more harm than good, i.e. it would throw away more best case scenarios than it would salvage.
I could see it being handy to estimate probability where each word is to better inform each guess. The tricky thing is I'm not sure if each run of wave function collapse (with randomness injected) would be an accurate sampling method for the real distribution of possible permutations. While doing this writeup I tried to find ways to analyze permutations with restriction, but it turns out most general methods are pretty intractable: https://en.wikipedia.org/wiki/Permanent_(mathematics)#Enumer...
Loanwords spread from their point of adoption into the wider language and can shift from the original meaning, just like other words.
"Kefir" has definitions in every major dictionary and is often used in contexts where all the other words are also english. That makes it pretty conclusively an English word.
There is no English word for "pleasure derived by someone from another person's misfortune". Yes, we can borrow from German; that doesn't make it suddenly become English.
> For example, we can all agree "schadenfreude" is not an English word, but it's in the dictionary.
I don't agree.
> Yes, we can borrow from German; that doesn't make it suddenly become English.
It doesn't suddenly become English. It happens gradually as more English speakers encounter the word and start using the word.
Dictionaries start adding the word as usage becomes widespread. If a borrowed word is frequently used in an English context by English speakers and is understood by English speakers and that is widespread enoythat it is listed in English dictionaries...it is pretty safe to say that the word is part of the English language.
While I do speak German, I learned the English word "schadenfruede" well before I started studying any German. Similarly, I don't speak any Russian but I know what "kefir" means. I didn't learn it from a Russian, I learned it from other English speakers in the course of speaking English about 20 years ago. In fact, I didn't even know that word originally came from Russian until very recently.
Part of why English is so hard to learn for non-native speakers is because it is full of loan words from lots if languages. Many of them you probably don't even realize originally came from other languages.
Yet, it's on bottles that are sold in the grocery store. Yes, it's not really a common word as I commented at the time, but it's not really a word that I'd consider a proper noun or otherwise not legitimate.
My question was rhetorical. The point is that the English word for "kefir" is "kefir". So English does have a word for that.
shkkmo stated the situation well and nothing you wrote in response refuted anything they said. You say "Just because a word is "in the dictionary" doesn't make it English" but that's not true, as they explained. Virtually the entirety of the English language is "loaned" from somewhere. From the Merriam-Webster definition of schadenfreude: "In English, the word was used mostly by academics until the early 1990s, when it was introduced to more general audiences via pop culture."
You say "that doesn't make it suddenly become English" -- indeed, it wasn't sudden. The word did not always appear in English language dictionaries. It was added when it became recognized as having been incorporated into English--lexicographers are conservative and lag behind actual usage.
Anyway, I'm not going to recreate the entire prescriptive/descriptive debate in linguistics here, especially since "kefir" and "schadenfreude" are English words on both grounds. Enough said.
Yeah, I really like the sorting formulation! I didn't notice until after I'd written out the intended solution, but it's basically radix sort going from most significant to least significant bit.
Before publishing I found this while trying to see if there was a already a riddle like it out there (closest I could find was the 1000 barrels of wine riddle mentioned at the beginning): https://puzzles.nigelcoldwell.co.uk/
You can also think of this riddle as a very symmetric version of Wordle, where instead of trying to solve for a permutation of letters you're solving for a permutation of years.
I originally set it up like that, but felt having to explain that you need to subtract 2000 before doing the binary conversion was unnecessary and kind of distracting
That's really cool! I tried to get something to work last week on pen and paper but couldn't get anything to stick. Is there a strategy you used or did you just go by feel?
Edit: just noticed how you encoded a flip (AB <--> CD) between iterations like how the matrix flips the orientation of space. Super neat!
Exactly! There is also a less obvious relationship between A and B too: B is a A "backwards" (A rotated 180°, starting the curve from the opposite end).
The strategy was to put 5 lines on the plus sign on the sides of the 5 cells, with the idea that each line eventually fills out a neighboring cell in subsequent iterations. I found one such path that had a chance of working. Not sure if this makes sense.
Yeah, it's in the last image and in the thumbnail at very top (which I realize now is really hard to spot on mobile), intentionally not in the spotlight to leave space for the twist at the end.
I think it would work perfectly as a mosaic eventually, but for the time being I'm perfectly content with the "rustic" 8x11 graph paper sized one taped to the wall. Currently planning to put up a slice of the orthotopeflower as a companion piece once I find matches for the colored pencils I used back then.
A quick sanity check is in Scenario 2, you needed 300 creative people each with a ~6.2% chance of showing up. The odds of getting a sequence of people where that's even possible for the first place score (2906 rejections + 1000 accepts = 3906 total people) is on the order of 1 in 10000, and that's without even factoring in the other constraints.