fork download
  1. import java.util.Scanner
  2.  
  3. object Main {
  4. type Door = (Int, Boolean)
  5. type Doors = List[Door]
  6.  
  7. def main(args: Array[String]) {
  8. val noOfDoors = new Scanner(System.in) nextInt
  9. val doors = List.tabulate(noOfDoors)(x => (x + 1, false))
  10. pass(1, noOfDoors, doors).filter(_._2).foreach(x => println(x._1))
  11. }
  12.  
  13. def pass(passNo: Int, passes: Int, doors: Doors): Doors = {
  14. if (passes > 0) pass(passNo + 1, passes - 1, doors.map(toggle(passNo, _)))
  15. else doors
  16. }
  17.  
  18. def toggle(passNo: Int, door: Door) = {
  19. val (doorNo, doorState) = door
  20. if (doorNo % passNo == 0) (doorNo, !doorState) else door
  21. }
  22. }
Success #stdin #stdout 0.15s 211648KB
stdin
200
stdout
1
4
9
16
25
36
49
64
81
100
121
144
169
196