// $Id: objinst.csharp,v 1.0 2002/02/14 13:27:00 dada Exp $
// http://dada.perl.it/shootout/
using System;
class Toggle {
public bool state = true;
public Toggle(bool start_state) {
this.state = start_state;
}
public bool value() {
return(this.state);
}
public Toggle activate() {
this.state = !this.state;
return(this);
}
}
class NthToggle : Toggle {
int count_max = 0;
int counter = 0;
public NthToggle(bool start_state, int max_counter) : base(start_state) {
this.count_max = max_counter;
this.counter = 0;
}
public new NthToggle activate() {
this.counter += 1;
if (this.counter >= this.count_max) {
this.state = !this.state;
this.counter = 0;
}
return(this);
}
}
class App {
public static int Main(String[] args) {
int n;
n = System.Convert.ToInt32(args[0]);
if(n < 1) n = 1;
Toggle toggle1 = new Toggle(true);
for (int i=0; i<5; i++) {
Console.WriteLine((toggle1.activate().value()) ? "true" : "false");
}
for (int i=0; i<n; i++) {
Toggle toggle = new Toggle(true);
}
Console.WriteLine();
NthToggle ntoggle1 = new NthToggle(true, 3);
for (int i=0; i<8; i++) {
Console.WriteLine((ntoggle1.activate().value()) ? "true" : "false");
}
for (int i=0; i<n; i++) {
NthToggle toggle = new NthToggle(true, 3);
}
return(0);
}
}