using System;
using System.Collections .Generic ;
public class Test
{
class Move
{
public uint Number { get; private set; }
public char Src { get; private set; }
public char Dest { get; private set; }
public char Alt { get; private set; }
public Move( uint number, char src, char dest, char alt)
{
this.Number = number;
this.Src = src;
this.Alt = alt;
this.Dest = dest;
}
}
static void TowersIterative( uint number, char src, char dest, char alt)
{
var stack = new Stack< Move> ( ) ;
stack.Push ( new Move( number, src, dest, alt) ) ;
while ( stack.Count != 0 )
{
var move = stack.Pop ( ) ;
if ( move.Number == 1 )
Console.WriteLine ( "Move one disc from {0} to {1}" , move.Src , move.Dest ) ;
else
{
stack.Push ( new Move( move.Number - 1 , move.Alt , move.Dest , move.Src ) ) ;
stack.Push ( new Move( 1 , move.Src , move.Dest , move.Alt ) ) ;
stack.Push ( new Move( move.Number - 1 , move.Src , move.Alt , move.Dest ) ) ;
}
}
}
public static void Main( )
{
TowersIterative( 3 , 'L' , 'M' , 'R' ) ;
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKCWNsYXNzIE1vdmUKewogICAgcHVibGljIHVpbnQgTnVtYmVyIHsgZ2V0OyBwcml2YXRlIHNldDsgfQoKICAgIHB1YmxpYyBjaGFyIFNyYyB7IGdldDsgcHJpdmF0ZSBzZXQ7IH0KCiAgICBwdWJsaWMgY2hhciBEZXN0IHsgZ2V0OyBwcml2YXRlIHNldDsgfQoKICAgIHB1YmxpYyBjaGFyIEFsdCB7IGdldDsgcHJpdmF0ZSBzZXQ7IH0KCiAgICBwdWJsaWMgTW92ZSh1aW50IG51bWJlciwgY2hhciBzcmMsIGNoYXIgZGVzdCwgY2hhciBhbHQpCiAgICB7CiAgICAgICAgdGhpcy5OdW1iZXIgPSBudW1iZXI7CiAgICAgICAgdGhpcy5TcmMgPSBzcmM7CiAgICAgICAgdGhpcy5BbHQgPSBhbHQ7CiAgICAgICAgdGhpcy5EZXN0ID0gZGVzdDsKICAgIH0KfQoKc3RhdGljIHZvaWQgVG93ZXJzSXRlcmF0aXZlKHVpbnQgbnVtYmVyLCBjaGFyIHNyYywgY2hhciBkZXN0LCBjaGFyIGFsdCkKewogICAgdmFyIHN0YWNrID0gbmV3IFN0YWNrPE1vdmU+KCk7CgogICAgc3RhY2suUHVzaChuZXcgTW92ZShudW1iZXIsIHNyYywgZGVzdCwgYWx0KSk7CiAgICB3aGlsZSAoc3RhY2suQ291bnQgIT0gMCkKICAgIHsKICAgICAgICB2YXIgbW92ZSA9IHN0YWNrLlBvcCgpOwogICAgICAgIGlmIChtb3ZlLk51bWJlciA9PSAxKQogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiTW92ZSBvbmUgZGlzYyBmcm9tIHswfSB0byB7MX0iLCBtb3ZlLlNyYywgbW92ZS5EZXN0KTsKICAgICAgICBlbHNlCiAgICAgICAgewogICAgICAgICAgICBzdGFjay5QdXNoKG5ldyBNb3ZlKG1vdmUuTnVtYmVyIC0gMSwgbW92ZS5BbHQsIG1vdmUuRGVzdCwgbW92ZS5TcmMpKTsKICAgICAgICAgICAgc3RhY2suUHVzaChuZXcgTW92ZSgxLCBtb3ZlLlNyYywgbW92ZS5EZXN0LCBtb3ZlLkFsdCkpOwogICAgICAgICAgICBzdGFjay5QdXNoKG5ldyBNb3ZlKG1vdmUuTnVtYmVyIC0gMSwgbW92ZS5TcmMsIG1vdmUuQWx0LCBtb3ZlLkRlc3QpKTsKICAgICAgICB9CiAgICB9Cn0KCglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJVG93ZXJzSXRlcmF0aXZlKDMsICdMJywgJ00nLCAnUicpOwoJfQp9