fork(1) download
  1. def simulate(int n) {
  2. def queue = new LinkedList([*'slprh'.split('')])
  3. def last = null
  4. while (n--) {
  5. last = queue.poll()
  6. queue.push(last)
  7. queue.push(last)
  8. }
  9. return last
  10. }
  11.  
  12. def solve(int n) {
  13. def persons = 'slprh'.split('')
  14. int count = persons.size()
  15. --n
  16. while (n >= count) {
  17. n -= count
  18. n >>= 1
  19. }
  20. return persons[n]
  21. }
  22.  
  23. (1..1000).each {
  24. assert simulate(it) == solve(it)
  25. }
  26.  
Success #stdin #stdout 0.75s 332928KB
stdin
Standard input is empty
stdout
Standard output is empty