2013-12-07 18:43:39 -08:00
|
|
|
class Toggle {
|
2015-07-21 07:24:53 -07:00
|
|
|
construct new(startState) {
|
2013-12-07 18:43:39 -08:00
|
|
|
_state = startState
|
|
|
|
|
}
|
|
|
|
|
|
2014-04-03 07:48:19 -07:00
|
|
|
value { _state }
|
2013-12-07 18:43:39 -08:00
|
|
|
activate {
|
|
|
|
|
_state = !_state
|
|
|
|
|
return this
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
class NthToggle is Toggle {
|
2015-07-21 07:24:53 -07:00
|
|
|
construct new(startState, maxCounter) {
|
2013-12-19 07:02:27 -08:00
|
|
|
super(startState)
|
2013-12-07 18:43:39 -08:00
|
|
|
_countMax = maxCounter
|
|
|
|
|
_count = 0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
activate {
|
|
|
|
|
_count = _count + 1
|
|
|
|
|
if (_count >= _countMax) {
|
2013-12-18 07:37:41 -08:00
|
|
|
super.activate
|
2013-12-07 18:43:39 -08:00
|
|
|
_count = 0
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return this
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2015-09-15 07:46:09 -07:00
|
|
|
var start = System.clock
|
2013-12-25 15:01:45 -08:00
|
|
|
var n = 100000
|
2013-12-07 18:43:39 -08:00
|
|
|
var val = true
|
2015-07-10 09:18:22 -07:00
|
|
|
var toggle = Toggle.new(val)
|
2013-12-07 18:43:39 -08:00
|
|
|
|
2013-12-25 15:01:45 -08:00
|
|
|
for (i in 0...n) {
|
|
|
|
|
val = toggle.activate.value
|
|
|
|
|
val = toggle.activate.value
|
|
|
|
|
val = toggle.activate.value
|
|
|
|
|
val = toggle.activate.value
|
|
|
|
|
val = toggle.activate.value
|
|
|
|
|
val = toggle.activate.value
|
|
|
|
|
val = toggle.activate.value
|
|
|
|
|
val = toggle.activate.value
|
|
|
|
|
val = toggle.activate.value
|
2013-12-07 18:43:39 -08:00
|
|
|
val = toggle.activate.value
|
|
|
|
|
}
|
|
|
|
|
|
2015-09-15 07:46:09 -07:00
|
|
|
System.print(toggle.value)
|
2013-12-07 18:43:39 -08:00
|
|
|
|
|
|
|
|
val = true
|
2015-07-10 09:18:22 -07:00
|
|
|
var ntoggle = NthToggle.new(val, 3)
|
2013-12-07 18:43:39 -08:00
|
|
|
|
2013-12-25 15:01:45 -08:00
|
|
|
for (i in 0...n) {
|
|
|
|
|
val = ntoggle.activate.value
|
|
|
|
|
val = ntoggle.activate.value
|
|
|
|
|
val = ntoggle.activate.value
|
|
|
|
|
val = ntoggle.activate.value
|
|
|
|
|
val = ntoggle.activate.value
|
|
|
|
|
val = ntoggle.activate.value
|
|
|
|
|
val = ntoggle.activate.value
|
|
|
|
|
val = ntoggle.activate.value
|
|
|
|
|
val = ntoggle.activate.value
|
2013-12-07 18:43:39 -08:00
|
|
|
val = ntoggle.activate.value
|
|
|
|
|
}
|
|
|
|
|
|
2015-09-15 07:46:09 -07:00
|
|
|
System.print(ntoggle.value)
|
2015-11-11 07:55:48 -08:00
|
|
|
System.print("elapsed: %(System.clock - start)")
|