Syntax Colorizer

permlink
public class RevealTriangle
{
 public string[] calcTriangle(string[] questionMarkTriangle)
 {
  int n = questionMarkTriangle.Length;
  // строки в C# неизменяемые, поэтому используем массив массивов символов
  char[][] res = new char[n][];
  for (int i = 0; i < n; i++)
   res[i] = questionMarkTriangle[i].ToCharArray();

  for (int row = n - 2; row >= 0; row--)
  {
   char[] cur = res[row];
   char[] prev = res[row + 1];
   int qPos = Array.FindIndex(cur, delegate(char obj) { return obj != '?'; });
   for (int i = qPos - 1; i >= 0; i--)
    cur[i] = Solve(cur[i + 1], prev[i]);
   for (int i = qPos + 1; i < cur.Length; i++)
    cur[i] = Solve(cur[i - 1], prev[i - 1]);
  }

  return Array.ConvertAll<char[], string>(res, delegate(char[] input) { return new string(input); });
 }

 private char Solve(char b, char c)
 {
  int res = c - '0' - (b - '0');
  if (res < 0)
   res += 10;
  return (char) (res + '0');
 }
}

For you blog

For web page

About | Send us feedback