Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

There's a solution that takes around 3500 days.


Curse you, amichael! No! No, I am not going to try to solve this problem tonight. I'm going to do ourdoings.com coding on the train ride home. I am not going to think about prisoners, light bulbs and distributed systems. I'll check in tomorrow and see if someone else has posted the answer, but I won't try to come up with it myself. You tempt me, but I resist. :-)


I'm working on a solution using the current day (modulo the population) as a kind of covert channel to keep track of the number of prisoners who already visited the room (the basic idea is that, if the light is on on day 64, at least 64 people have visited the room).

I still have a bug in my algorithm and I'm not even sure it will really work.


can you run mine through and see how many days you get!


First 99 days:

if bulb on: do not touch

if bulb off:

if you haven't been visited before, consider yourself counted, and do nothing.

if you have been in here before, turn it on. you are now the counter. look at the day number (1-based). if it's day 36, then 35 people (including yourself) have visited the room.

day 100:

if bulb off, and you haven't been there before, declare victory (super lucky!)

if off, but you have been there before, you're the counter and the count is 99.

if bulb on: turn it off.

after day 100:

use the original solution with a counter.

speedup:

you get about 12.2 people counted in the first 100 days. normally it's somewhere around one person counted per 100 days. so total time is around 100 + 87.8*100. a bit better. not near 3500 though.


i wrote code. 1000 trials. naive mean: 10389.832 my strategy's mean: 9392.652

i think the improvement was a little less good than i guessed because i jumpstart getting the first dozen or so people counted, and they are a little easier to count than the last people.


Here's a paper on the subject:

http://www.ocf.berkeley.edu/~wwu/papers/100prisonersLightBul...

It includes my answer :)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: