Problem Statement
The Incas used a sophisticated system of record keeping consisting of bundles of knotted cords. Such a bundle of cords is called a quipu. Each individual cord represents a single number. Surprisingly, the Incas used a base-10 positional system, just like we do today. Each digit of a number is represented by a cluster of adjacent knots, with spaces between neighboring clusters. The digit is determined by the number of knots in the cluster. For example, the number 243 would be represented by a cord with knots tied in the following pattern
-XX-XXXX-XXX-where each uppercase 'X' represents a knot and each '-' represents an unknotted segment of cord (all quotes for clarity only).
Unlike many ancient civilizations, the Incas were aware of the concept of zero, and used it in their quipus. A zero is represented by a cluster containing no knots. For example, the number 204003 would be represented by a cord with knots tied in the following pattern
-XX--XXXX---XXX- ^^ ^^^ ^^ ^^^ ^^ two zeros between these three segments ^^ one zero between these two segmentsNotice how adjacent dashes signal the presence of a zero.
Your task is to translate a single quipu cord into an integer. The cord will be given as a
Definition
- Class:
- Quipu
- Method:
- readKnots
- Parameters:
- String
- Returns:
- int
- Method signature:
- int readKnots(String knots)
- (be sure your method is public)
Constraints
- knots contains between 3 and 50 characters, inclusive.
- knots contains only the characters 'X' and '-'. Note that 'X' is uppercase.
- The first and last characters of knots are '-'s. The second character is 'X'.
- knots does not contain 10 consecutive 'X's.
- knots will represent a number between 1 and 1000000, inclusive.
Examples
"-XX-XXXX-XXX-"
Returns: 243
The first example above.
"-XX--XXXX---XXX-"
Returns: 204003
The second example above.
"-X-"
Returns: 1
"-XX-"
Returns: 2
"-XXX-"
Returns: 3
"-XXXX-"
Returns: 4
"-XXXXX-"
Returns: 5
"-XXXXXX-"
Returns: 6
"-XXXXXXX-"
Returns: 7
"-XXXXXXXX-"
Returns: 8
"-XXXXXXXXX-"
Returns: 9
"-X-------"
Returns: 1000000
"-XXXXXXXXX--XXXXXXXXX-XXXXXXXXX-XXXXXXX-XXXXXXXXX-"
Returns: 909979
"-XX-XXXXX-"
Returns: 25
"-XXXXXX-X-"
Returns: 61
"-XXXXXXXX-XXX-"
Returns: 83
"-XX-XXXXXXXXX-XXXXXXXX-XXX---"
Returns: 298300
"-XXXX-XXXXX-XX-X-XXXX--"
Returns: 452140
"-XXXXXX-XXXX-XXXXXXXX-XXXXXXXX--XXX-"
Returns: 648803
"-XXXXXXX-XXXXXXXXX-XXXXXXXXX-XXXXX-XXXXXXXXX-X-"
Returns: 799591
"-XXXXXXXX-XXXXXXXX--XXXXXX-XXXXXXXXX-XXX-"
Returns: 880693
"-X-XXXX-XXXXXXXX-XXXXX-XXXXX-XX-"
Returns: 148552
"-XXXX-XXXXXXXXX-XXXXX-XXXXXXXX-XXXXXXXX-XXXXXX-"
Returns: 495886
"-XXX-XXXXXX--XX-XX-XXXXX-"
Returns: 360225
"-XXXXX-XXXXXXXX-XXXXXXXX-XXX-"
Returns: 5883
"-XXXX-XXXXX-X-XXXXXXX-XXXXXXX-XXX-"
Returns: 451773
"-XXXXXXX-XX--XXXXXXXXX---"
Returns: 720900
"-XXXXXXXXX-XXXXXXX-XXXXXXXX-XXX-XXXX-XXXXX-"
Returns: 978345
"-X-XXXXXXXX-X-XX-XXXXXXXXX-XXXXX-"
Returns: 181295
"-XXXXX-X-XX-XXXXX-XXXXX-XXX-"
Returns: 512553
"-XXXX-X-XXXX-XXXX-X-XXXXX-"
Returns: 414415
"-XXXXXX-XXXXXXXX-XX-XXXXXXXX-XXXXXXX-XXXXX-"
Returns: 682875
"-XXX--XXXXXXXX-XXXXXX-XXXXXXXX-XXXX-"
Returns: 308684
"-X-XXXXXXXXX--XXXXX-XXXXXXX-"
Returns: 19057
"-XXXXXXX-XXXXX-XX-X-XXXXX-XXXXXXXX-"
Returns: 752158
"-XXXXXXXXX-XXXX-XXX--X-XX-"
Returns: 943012
"-X-----"
Returns: 10000
"-XX--"
Returns: 20