fork download
  1. closed = lambda a,b: ((a%b) == 0) and (a,opened) or (a,closed)
  2. opened = lambda a,b: ((a%b) == 0) and (a,closed) or (a,opened)
  3. f = lambda a: lambda b : closed(a,b)
  4. g = lambda a: lambda b : opened(a,b)
  5.  
  6. doors = [f(a) for a in range(1,101)]
  7. for i in range(1,101):
  8. for j, door in enumerate(doors):
  9. h = door(i)
  10. doors[j] = (h[1] == closed) and g(h[0]) or f(h[0])
  11.  
  12. print "Opened Doors: " + str([i+1 for i,x in enumerate(doors) if x(1)[1] == closed])
Success #stdin #stdout 0.02s 7896KB
stdin
Standard input is empty
stdout
Opened Doors: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]