TopcoderArchiveVisit Topcoder
SRM5 Jun 2008
SRM 404

RevealTriangle

Problem statement, definition, constraints, and public examples.

Problem Statement

Suppose there is a triangle of digits like the following:

74932
1325
457
92
1

Each digit, with the exception of those in the top row, is equal to the last digit of the sum of its upper and upper-right neighboring digits.

You will be given a String[] questionMarkTriangle containing a triangle where only one digit in each row is known and all others are represented by '?'s (see example 0 for clarification). Each element of questionMarkTriangle represents a row of the triangle, and the rows are given from top to bottom. Each element contains exactly one digit ('0'-'9') and the remaining characters are all '?'s. Restore the triangle and return it as a String[] without '?'s.

Definition

Class:
RevealTriangle
Method:
calcTriangle
Parameters:
String[]
Returns:
String[]
Method signature:
String[] calcTriangle(String[] questionMarkTriangle)
(be sure your method is public)

Constraints

  • questionMarkTriangle will contain between 1 and 50 elements, inclusive.
  • Element i (0 indexed) of questionMarkTriangle will contain exactly n-i characters, where n is the number of elements in questionMarkTriangle.
  • Each element of questionMarkTriangle will contain exactly one digit ('0'-'9') and all others characters will be '?'s.

Examples

  1. {"4??", 
     "?2", 
     "1"}
    Returns: {"457", "92", "1" }
    Let's substitute '?'s with unknown variables: 4ab c2 1 Having done that, we start solving for the variables from the bottom to the top. First, we know that the last digit of (c + 2) is 1. Therefore, c must be 9: 4ab 92 1 Now we know that the last digit of (4 + a) is 9, which means a is 5: 45b 92 1 And, finally, the last digit of (5 + b) is 2, so b is 7.
  2. {"1"}
    Returns: {"1" }
  3. {"???2", "??2", "?2", "2"}
    Returns: {"0002", "002", "02", "2" }
  4. {"??5?", "??9", "?4", "6"}
    Returns: {"7054", "759", "24", "6" }
Back to all problems