https://kuber.studio/blog/Projects/How-I-Spent-Three-Nights-Solving-Listen-Labs-Berghain-Challenge?trk=feed-detail_comments-list_comment-text

Clever marketing:

  • Cryptic billboard with 5 numbers in SF token IDs from OpenAI’s tokenizer, decoded to get listenlabs.ai/puzzle

Problem:

  • you are the bouncer at berghain. fill 1,000 spots from a stream of random arrivals while meeting specific quotas
  • do not reject more than 20,000 people, and the less rejected the better

Challenges:

  • constrained optimization, real-time resource allocation
  • people arrive one by one, and have binary attributes. you must decide immediately whether to accept or reject.
  • attributes are correlated - young people can also be well dressed may overshoot quotas by accepting these early, but reject too many and you can’t meet your minimum

Solutions explored by the author

  • greedy - accept anyone that contributes to a quota deficit, accept all remaining for open spots 1200 rejections
  • Gaussian-copula modeling and linear programming
    • model the multivariate distribution of attributes, solve for optimal acceptance probabilities
    • 900 rejections, but very complex
  • threshold-based algorithms
    • dynamic risk threshold - be lenient earlier, stricter later
    • prefer people satisfying multiple constraints - compute a coverage score
    • threshold the decision with mild randomness
    • 800 rejections

Solution from leaderboard #2

  • dynamic programming with a DB table of 1 gb …
  • for later scenarios, table too big
  • “as number of people gets large, only the relative ratios between numbers matter” differential equation representation , track relative ratios instead of absolute counts

Solution from leaderboard #1

  • tuned parameters to use for each scenario instead of one universal algorithm