100 Doors simulation
Your code is clean, and (based on my "literature research") your code is right. There are parts of your code though, that should be simplified, and an algorithmic change that should be applied to the way you iterate the doors. Let's go through these in detail...

Your primary loop is incrementing the step variable. You've implemented it like:


var step = 1

while (step != 100) {
  .....
  step = step + 1
}



That is OK, but it would be better to implement it using the range operator (semi-inclusive ... instead of inclusive ..) and a for-loop:

for (step in [1...100]) {
    ......
}


The next issue is algorithmic - you're looping over every door even when you only need to toggle every step doors. This code:


  var stepNextPoint = step
  for (door in doors.get) {
    if (count &gt;= stepNextPoint) {
      door.changeState()
      stepNextPoint = stepNextPoint + step
    }
    count = count + 1
  }



should be inverted, and should become:

  var stepNextPoint = step
  while (stepNextPoint &lt; 100) {
      doors.get[stepNextPoint].changeState()
      stepNextPoint = stepNextPoint + step
  }


These changes all make me realize that the value 100 is repeated in many places... the 100-value should be encoded as a variable, and the whole logic block should probably be expressed as a function call taking 100 as a parameter, and then just called from the main routine.