using System;
class Program
{
static void Main(string[] args)
{
var s = new Stairway(3, 10);
s.Print();
Console.ReadLine();
}
}
public class Stairway
{
public Stairway(int depth, int count)
{
StepCount = count;
NominalStepDepth = depth;
}
public int NominalStepDepth { get; set; }
public int RealStepDepth { get { return NominalStepDepth + 1; } }
public int StepCount { get; set; }
public int TopStep { get { return StepCount; } }
private bool IsValid
{
get { return NominalStepDepth > 0 && StepCount > 0; }
}
private string GetStepText(int step)
{
var padding = new string(' ', RealStepDepth * step);
var
floor = new string
('_', NominalStepDepth
); var wall = step == TopStep ? "" : "|";
return padding
+ floor + wall
; }
public void Print()
{
if (IsValid)
for (int i = TopStep; i >= 0 ; i--)
Console.WriteLine(GetStepText(i));
else
Console.Write("NONE");
}
}
dXNpbmcgU3lzdGVtOwoKY2xhc3MgUHJvZ3JhbQp7CiAgICBzdGF0aWMgdm9pZCBNYWluKHN0cmluZ1tdIGFyZ3MpCiAgICB7CiAgICAgICAgdmFyIHMgPSBuZXcgU3RhaXJ3YXkoMywgMTApOwogICAgICAgIHMuUHJpbnQoKTsKICAgICAgICBDb25zb2xlLlJlYWRMaW5lKCk7CiAgICB9Cgp9CgpwdWJsaWMgY2xhc3MgU3RhaXJ3YXkKewoKICAgIHB1YmxpYyBTdGFpcndheShpbnQgZGVwdGgsIGludCBjb3VudCkKICAgIHsKICAgICAgICBTdGVwQ291bnQgPSBjb3VudDsKICAgICAgICBOb21pbmFsU3RlcERlcHRoID0gZGVwdGg7CiAgICB9CgogICAgcHVibGljIGludCBOb21pbmFsU3RlcERlcHRoIHsgZ2V0OyBzZXQ7IH0KCiAgICBwdWJsaWMgaW50IFJlYWxTdGVwRGVwdGggeyBnZXQgeyByZXR1cm4gTm9taW5hbFN0ZXBEZXB0aCArIDE7IH0gfQoKICAgIHB1YmxpYyBpbnQgU3RlcENvdW50IHsgZ2V0OyBzZXQ7IH0KCiAgICBwdWJsaWMgaW50IFRvcFN0ZXAgeyBnZXQgeyByZXR1cm4gU3RlcENvdW50OyB9IH0KCiAgICBwcml2YXRlIGJvb2wgSXNWYWxpZAogICAgewogICAgICAgIGdldCB7IHJldHVybiBOb21pbmFsU3RlcERlcHRoID4gMCAmJiBTdGVwQ291bnQgPiAwOyB9CiAgICB9CgogICAgcHJpdmF0ZSBzdHJpbmcgR2V0U3RlcFRleHQoaW50IHN0ZXApCiAgICB7CiAgICAgICAgdmFyIHBhZGRpbmcgPSBuZXcgc3RyaW5nKCcgJywgUmVhbFN0ZXBEZXB0aCAqIHN0ZXApOwogICAgICAgIHZhciBmbG9vciA9IG5ldyBzdHJpbmcoJ18nLCBOb21pbmFsU3RlcERlcHRoKTsKICAgICAgICB2YXIgd2FsbCA9IHN0ZXAgPT0gVG9wU3RlcCA/ICIiIDogInwiOwogICAgICAgICAgICAKICAgICAgICByZXR1cm4gcGFkZGluZyArIGZsb29yICsgd2FsbDsKICAgIH0KCiAgICBwdWJsaWMgdm9pZCBQcmludCgpCiAgICB7CiAgICAgICAgaWYgKElzVmFsaWQpCiAgICAgICAgICAgIGZvciAoaW50IGkgPSBUb3BTdGVwOyBpID49IDAgOyBpLS0pCiAgICAgICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShHZXRTdGVwVGV4dChpKSk7CiAgICAgIAllbHNlCiAgICAgICAgICAgIENvbnNvbGUuV3JpdGUoIk5PTkUiKTsKICAgIH0KfQ==