Problem Statement
The Calkin-Wilf tree is a rooted tree that contains each positive rational number exactly once. The definition of the tree is really simple:
- The root of the tree contains the value 1/1.
- Each node in the tree has one left child and one right child.
- If a node contains the fraction a/b, its left child contains the fraction a/(a+b) and its right child contains the fraction (a+b)/b.
Here is an ASCII art drawing of the first few levels of the tree:
____________1/1____________ / \ ____1/2____ ____2/1____ / \ / \ 1/3 3/2 2/3 3/1 / \ / \ / \ / \ 1/4 4/3 3/5 5/2 2/5 5/3 3/4 4/1
You are given the
Find the fraction a/b that will be written in the last node we visit.
Return the
Definition
- Class:
- CalkinWilf
- Method:
- findRational
- Parameters:
- String
- Returns:
- int[]
- Method signature:
- int[] findRational(String path)
- (be sure your method is public)
Notes
- The return value should be a int[] with two elements. Element 0 should be the numerator and element 1 should be the denominator of the fraction.
Constraints
- path will contain between 0 and 30 characters, inclusive.
- Each character in path will be either 'L' or 'R'.
Examples
""
Returns: {1, 1 }
If the path is empty, we end where we started: in the root.
"R"
Returns: {2, 1 }
Taking a single step right takes us to the node with the value 2/1.
"LRR"
Returns: {5, 2 }
This time we go 1/1 -> left to 1/2 -> right to 3/2 -> right to 5/2.
"LRLRLRLRLRLRLRLRLRLRLRLRLRLRLR"
Returns: {2178309, 1346269 }
This is one possible longest valid input.
"RLLRRRLLRRLRRR"
Returns: {497, 134 }
"LLLLLLLLLLRLLLLLLLLLLLLLLLLLLL"
Returns: {12, 239 }
"LLRRLLLRRLLRR"
Returns: {323, 134 }
"LLRRLRLLLRRLRLLLLLRRR"
Returns: {6024, 1895 }
"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
Returns: {31, 1 }
"LLLLLLLLLLLLLLLLLLLLLLRLLLLLLL"
Returns: {24, 191 }
"LLLLLLLLLLLLLLLLLLLLLLLLRLLLLL"
Returns: {26, 155 }
"LRRLRRLRRLRRRLLRRRLLLRRRLRLLR"
Returns: {252175, 181453 }
"LLLLLRLLLLLLLLLLLLLLLLLLLLLLLL"
Returns: {7, 174 }
"RRRRRRRRRRRRRRRRRLRRRRRRRRRRRR"
Returns: {246, 19 }
"LRLLRRR"
Returns: {27, 8 }
"LRRRLLRRLLLLRRLRLL"
Returns: {938, 2431 }
"LRLLLLLLLLLLLLLLLLLLLLLLLLLLLL"
Returns: {3, 86 }
"RRRRLLRRLRLRRRLRLR"
Returns: {2179, 1328 }
"LLLLLLLLLLLLLLLLLLLLLLLLLRLLLL"
Returns: {27, 134 }
"RRLRRRRRRRRRRRRRRRRRRRRRRRRRRR"
Returns: {111, 4 }
"RRRRRRRRRRRRRRRRRRRRRRRRRRRRRL"
Returns: {30, 31 }
"LLLLLLLLLLLLLLLLLLLLLLLLLLRLLL"
Returns: {28, 111 }
"RRRRRLRRRRRRRRRRRRRRRRRRRRRRRR"
Returns: {174, 7 }
"RRRRRRRRRRRRRRRLRRRRRRRRRRRRRR"
Returns: {254, 17 }
"RRLRRL"
Returns: {11, 15 }
"LLLLLLLLLLLLLLLLLRLLLLLLLLLLLL"
Returns: {19, 246 }
"RRRRRRRLRLRRLLLRRLLRRLLRR"
Returns: {18311, 7585 }
"LRLRLRRLLLLL"
Returns: {34, 183 }
"RLRRRRLLLLRLRRLRLLLLRLLL"
Returns: {4499, 17190 }
"LRRRRRRLRLLLR"
Returns: {127, 99 }
"LLLLRLLLLLLLLLLLLLLLLLLLLLLLLL"
Returns: {6, 155 }
"LLLLLLLLLLLLLLLRLLLLLLLLLLLLLL"
Returns: {17, 254 }
"LLLLLLLLRLLLLLLLLLLLLLLLLLLLLL"
Returns: {10, 219 }
"RLLRLLLLRL"
Returns: {40, 73 }
"RLRRRLRRLRLLLLLLLRRRRLLRR"
Returns: {15794, 6457 }
"LLLLLLLLLLLLLRLLLLLLLLLLLLLLLL"
Returns: {15, 254 }
"RRLLRLLRLLRRLLRRLLR"
Returns: {4770, 3373 }
"LLLLLLLLLLLLLLLLLLRLLLLLLLLLLL"
Returns: {20, 239 }
"LLLLLLLLLLLLLLLLLLLLLLLLLLLLLL"
Returns: {1, 31 }
"LLRLR"
Returns: {11, 7 }
"LRRRLRRRRRLRLRRLLRLRR"
Returns: {6863, 2653 }
"RRRRRRRRRRRRRRLRRRRRRRRRRRRRRR"
Returns: {255, 16 }
"RLRLLRLRRLRLL"
Returns: {191, 493 }
"LRRLLLRRLLLRRLLRRLLLRRLRRR"
Returns: {74939, 20274 }
"RRRRRRRRRRRRRRRRRRRLRRRRRRRRRR"
Returns: {230, 21 }
"RRRLRRRLLLRRLLRLLL"
Returns: {491, 1821 }
"RRRRRRRRRRRRRRRRRRRRLRRRRRRRRR"
Returns: {219, 22 }
"LLLLLLLLLLLLLLRLLLLLLLLLLLLLLL"
Returns: {16, 255 }
"RLLLRLRLLRLRLRRR"
Returns: {1463, 405 }
"RRLLRLRLRLLRRLRLRRRLLLL"
Returns: {6175, 26401 }
"LLLLLLLLLLLLLLLLLLLLLLLLLLLLRL"
Returns: {30, 59 }
"RRRRRRRRRRRRRRRRRRRRRRRRRLRRRR"
Returns: {134, 27 }
"RRRRLRRRRRRRRRRRRRRRRRRRRRRRRR"
Returns: {155, 6 }
"RRRRRRRRRRRRRRRRRRRRRLRRRRRRRR"
Returns: {206, 23 }
"LLLLLLLRLLLLLLLLLLLLLLLLLLLLLL"
Returns: {9, 206 }
"LLLLLLLLLLLLLLLLLLLLLRLLLLLLLL"
Returns: {23, 206 }
"LRRLL"
Returns: {5, 12 }
"RLLLLLLLLLLLLLLLLLLLLLLLLLLLLL"
Returns: {2, 59 }
"RRRRRRRRRRRLRRRRRRRRRRRRRRRRRR"
Returns: {246, 13 }
"LRRLRLRLRLLLLLLLL"
Returns: {81, 698 }
"LRRRRLRLRRR"
Returns: {113, 31 }
"LLRLLLLLLLLLLLLLLLLLLLLLLLLLLL"
Returns: {4, 111 }
"RRRLRRRRRRRRRRRRRRRRRRRRRRRRRR"
Returns: {134, 5 }
"LLRLRLLRRLRLRLLLLRRRLRLLRLRRL"
Returns: {234615, 325498 }
"RLRRLLRRLLRRRLLLLRLRRRLLRLR"
Returns: {114139, 71791 }
"RRRRRRRRRRRRRRRRLRRRRRRRRRRRRR"
Returns: {251, 18 }
"LRLRRLLRR"
Returns: {75, 31 }
"RRRRRRRRRRRRRLRRRRRRRRRRRRRRRR"
Returns: {254, 15 }
"LLLLLLLLLLLLLLLLLLLLLLLLLLLRLL"
Returns: {29, 86 }
"LLLLLLLLLLLLLLLLLLLLLLLLLLLLLR"
Returns: {31, 30 }
"RRRRRRRRRRRRRRRRRRRRRRRLRRRRRR"
Returns: {174, 25 }
"RLRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
Returns: {86, 3 }
"RRRLRRRLRRLLRRLRRLRLRLLLRRLLRL"
Returns: {253091, 432592 }
"LLLLRRLRRLRLRLLLLRLRRRRRR"
Returns: {17610, 2689 }
"RRLLLRRLRLRRL"
Returns: {234, 323 }
"LRRRRRRRRRRRRRRRRRRRRRRRRRRRRR"
Returns: {59, 2 }
"RRRRRRRRRRRRLRRRRRRRRRRRRRRRRR"
Returns: {251, 14 }
"LLLLLLLLLLLLLLLLRLLLLLLLLLLLLL"
Returns: {18, 251 }
"LLLLLLLLLLLLRLLLLLLLLLLLLLLLLL"
Returns: {14, 251 }
"RRRRRRRRLRRRRRRRRRRRRRRRRRRRRR"
Returns: {219, 10 }
"RRLLRRLRRRRLRLLLLLLRRLRRLRR"
Returns: {51860, 19007 }
"RRRRLLRLLRRRRRLRLLRRRRLRRLRRL"
Returns: {72323, 98739 }
"RLLLLRRLLRLRLLLRLRRRRLR"
Returns: {15637, 8591 }
"LLLLLLLLLL"
Returns: {1, 11 }
"LRLRRLRRLRRRLLLRLLLLL"
Returns: {1067, 6152 }
"RRRRRRRRRRRRRRRRRRLRRRRRRRRRRR"
Returns: {239, 20 }
"LLLLLLLLLLLLLLLLLLLLLLLRLLLLLL"
Returns: {25, 174 }
"LLLLLLLLLLLRLLLLLLLLLLLLLLLLLL"
Returns: {13, 246 }
"LLLLLLLLLRLLLLLLLLLLLLLLLLLLLL"
Returns: {11, 230 }
"RRRLLLLLLRRRRRRRLLRRR"
Returns: {1328, 383 }
"LLLLLLLLLLLLLLLLLLLLRLLLLLLLLL"
Returns: {22, 219 }
"LLLRLLLLLLLLLLLLLLLLLLLLLLLLLL"
Returns: {5, 134 }
"RRRRRRRRRRRRRRRRRRRRRRRRRRLRRR"
Returns: {111, 28 }
"RRRRRRRLRRRRRRRRRRRRRRRRRRRRRR"
Returns: {206, 9 }
"LLLLLLRLLLLLLLLLLLLLLLLLLLLLLL"
Returns: {8, 191 }
"RRRRRRRRRRRRRRRRRRRRRRRRLRRRRR"
Returns: {155, 26 }
"RRRRRRRRRLRRRRRRRRRRRRRRRRRRRR"
Returns: {230, 11 }
"RRRRRRRRRRRRRRRRRRRRRRLRRRRRRR"
Returns: {191, 24 }
"LLLLLLLLLLLLLLLLLLLRLLLLLLLLLL"
Returns: {21, 230 }
"RRRRRRRRRRRRRRRRRRRRRRRRRRRLRR"
Returns: {86, 29 }
"RRRRRRRRRRRRRRRRRRRRRRRRRRRRLR"
Returns: {59, 30 }
"RRRRRRRRRRLRRRRRRRRRRRRRRRRRRR"
Returns: {239, 12 }
"RRRRRRLRRRRRRRRRRRRRRRRRRRRRRR"
Returns: {191, 8 }
"LRLRLRLLLRLRRLLLLRLLLR"
Returns: {11497, 9109 }
"LRRLRLLRRRLLRLRRRLLRRRRLLL"
Returns: {21311, 68734 }
"LRRRLRRLRRRRLLLRRRLRLLLLR"
Returns: {21934, 17993 }
"LLLRRRLLRRLLRRRLRRLRRLLL"
Returns: {8019, 26989 }
"LL"
Returns: {1, 3 }