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