private const int MIN_LINES = 3;
private const string Pattern = "*";
public static void Main()
Console.WriteLine("Print Diamond Program Start..");
var numLinesText = GetUserInput(testInput);
var lines = ConvertUserInputToLineCount(numLinesText);
Console.WriteLine("You've entered an invalid number. Please try again with a valid number 3 and above");
#region warn - REMOVE debug statement
Console.WriteLine(string.Format("Line Count:{0}", lines));
var isDiamondPrinted = PrintDiamond(lines);
Console.WriteLine(string.Format("Diamond successfully printed"));
private static bool PrintDiamond(int lines)
if(!ValidateLines(lines))
throw new ApplicationException("Diamond can't be printed");
Console.WriteLine("Printing diamond..");
int center = (lines+1)/2;
for(int i = 0; i <= lines-1; i++)
var first = Math.Abs(center - i - 1);
lineMax = (i+ 1) <= lines ? i + 1 : lineMax-1;
for(int j = 0; j <= center - 1; j++)
if(++currentCount == lineMax)
private static int ConvertUserInputToLineCount(string value)
return int.TryParse(value, out lines) ? lines : -1;
private static string GetUserInput(string value = "5")
Console.WriteLine("Please enter the number of lines:");
private static bool ValidateLines(int lines)
return lines >= MIN_LINES && lines%2 != 0;
private static void PrintPattern(string pattern = Pattern)
private static void PrintSpace(char pattern = ' ')