def input = @" 75 95 64 ... 04 62 98 27 23 09 70 98 73 93 38 53 60 04 23"; // Transform into 2-dim array def dataArr = input .Split(array[ Environment.NewLine ], StringSplitOptions.RemoveEmptyEntries) .Map(x => x.Split(' ').Map(int.Parse)); // Calculation cycles for (mutable i = dataArr.Length - 1; i > 0; i--) for (mutable j = 0; j < dataArr[i].Length - 1; j++) dataArr[i - 1][j] += Max(dataArr[i][j], dataArr[i][j + 1]); dataArr[0][0]