example: rosettacode 100 doors
[nit.git] / examples / rosettacode / doors_with_classes.nit
1 #!/usr/bin/env nit
2 #
3 # This file is part of NIT ( http://www.nitlanguage.org ).
4 # This program is public domain
5
6 # Task: 100 doors
7 # SEE: <http://rosettacode.org/wiki/100_doors>
8
9 # A door with two states: open or closed
10 class Door
11 # Is this door open?
12 var open = false
13
14 # Toggle bool value of open
15 fun toggle do open = not open
16
17 redef fun to_s: String
18 do
19 return if open then "Open" else "Closed"
20 end
21 end
22
23 var doors = new Array[Door]
24 for door in [0..100[ do doors.add(new Door)
25
26 var n = 100
27 for visit in [0..n[ do
28 var i = visit
29 while i < n do
30 doors[i].toggle
31 i += visit+1
32 end
33 end
34 for i in [0..n[ do print "Door {i+1}: {doors[i]}"