using System.Text.RegularExpressions;
public static class Program
public static void Main()
private static void DisplayResult()
var randInput = GetInput();
var convertedInput = ConvertDimension(randInput);
var freeArray = ReplaceNumbers(convertedInput);
var finaleSum = TraversingArrayForMaximum(freeArray);
Console.WriteLine("Pyramid Input :\n");
Console.WriteLine($"\nMaximum Sum of Random Input : {finaleSum}");
private static string[] GetInput()
var inputTr = new string[55];
Random randNum = new Random((int)DateTime.Now.Ticks);
for (int i = 0; i < inputTr.Length; i++)
inputTr[i] = randNum.Next(0, 100).ToString();
private static int[,] ConvertDimension(string[] splittedStringArray)
var twoDimensionalArray = new int[splittedStringArray.Length, splittedStringArray.Length + 1];
foreach (var row in splittedStringArray)
var integerArray = row.ConvertStringToIntegerArray();
foreach (var integer in integerArray)
twoDimensionalArray[rowIndex, columnIndex] = integer;
return twoDimensionalArray;
private static int[] ConvertStringToIntegerArray(this string rows)
.Select(m => int.Parse(m.Value)).ToArray();
private static int[,] ReplaceNumbers(int[,] twoDimensionalArray)
var length = twoDimensionalArray.GetLength(0);
for (var i = 0; i < length; i++)
for (var j = 0; j < length; j++)
if (twoDimensionalArray[i, j] == 0) continue;
if (IsPrime(twoDimensionalArray[i, j]))
twoDimensionalArray[i, j] = 0;
return twoDimensionalArray;
private static int TraversingArrayForMaximum(int[,] twoDimensionalArray)
var data = twoDimensionalArray;
var length = twoDimensionalArray.GetLength(0);
for (var i = length - 2; i >= 0; i--)
for (var j = 0; j < length; j++)
var b = data[i + 1, j + 1];
if ((!IsPrime(c) && !IsPrime(a)) || (!IsPrime(c) && !IsPrime(b)))
twoDimensionalArray[i, j] = c + Math.Max(a, b);
return twoDimensionalArray[0, 0];
public static bool IsPrime(int number)
{ if(number==0 || number==1) return false;
return Enumerable.Range(2, (int)Math.Sqrt(number) - 1).
All(divisor => number % divisor != 0);
public static void PrintPyramid(String[] numbers)
for(int numInRow=0; numInRow<numRows; numInRow++){
for(int i=1; i <= numRows && idx < n; i++){
for(int j=0; j < (numRows-i) ; j++){
Console.Write(numbers[idx++] +" ");