Problem Statement
{ x/2 if x is even f(x) = { { 3x+1 if x is oddSuppose someone began with the value y and has started (but not necessarily finished) generating the Collatz sequence. Each time they apply f they write down 'E' or 'O' to denote whether the argument was even or odd, respectively. Given the
P = { ak + b | k >= 0 and ak + b > 1}If there are multiple possible return values, choose the one with b minimal.
Definition
- Class:
- InverseCollatz
- Method:
- getForm
- Parameters:
- String
- Returns:
- String
- Method signature:
- String getForm(String s)
- (be sure your method is public)
Constraints
- s will contain between 1 and 50 characters, inclusive.
- Each character in s will be 'E' or 'O'.
- An 'O' will never be immediately followed by another 'O' in s.
Examples
"EOEEEOEOEEEOEOEEOEEOEO"
Returns: "32768k+30138"
"OEEEEOEOEEEOEOEEOEOE"
Returns: "8192k+4197"
"EOEEEEEEEEOEOEOEOEEEOEE"
Returns: "131072k+13482"
"EOEOEEOEOEOEEOEEOEEOEEEOEOEEEEOEOEOEEOE"
Returns: "33554432k+31532726"
"OEOEEEEOEEOEOEEEOEEE"
Returns: "16384k+6915"
"OEEOEOEOEOEEEEOEEEOEOEEEEEE"
Returns: "524288k+497513"
"OEEEOEEOEOEOEEEEEEEEOEEEEOEEOEE"
Returns: "8388608k+7526253"
"EEEEEEOEOEOEOEOEOEOEOEO"
Returns: "32768k+32704"
"EOEOEEOEEEOEEOEOEEOEEEEEEEEOEEEOEEEEOEE"
Returns: "536870912k+9580054"
"OEEOEOEEOEOEOEOEOEOEEEE"
Returns: "16384k+8569"
"EEEEOEEOEEOEOEEEOEOE"
Returns: "16384k+528"
"OEEOEEOEOEOEEEEEEEEEOEEOEEOEEE"
Returns: "4194304k+1562209"
"EEOEOEEOEEOEEEEEEEEOEOEOEEEOEEOEOEEOEOEOEOEOEOEOEO"
Returns: "8589934592k+6324799660"
"EEOEEEEOEOEEEEOEEEEOEEEEEEOEOEEEEEEE"
Returns: "536870912k+172078484"
"OEEEOEOEEEOEOEOEOEEEOEOEOEEOEOEEO"
Returns: "2097152k+127197"
"EEOEEEEEEEOEEOEEOEOEEOEOEEEEOEOEE"
Returns: "16777216k+11823956"
"EEOEEEOEEEEEOEOEEEEEOEOEOEEOEEEEOEOE"
Returns: "67108864k+9222708"
"OEOEOEOEOEOEOEOEEEOEOEOEOEOEOE"
Returns: "65536k+56575"
"OEOEOEEEOEOEOEEOEOEOEOEOEEEOEOEOEOEOEEEOEEOEOE"
Returns: "134217728k+130016567"
"OEEEEOEEOEEEEOEOEOEOEOEEEEOEOEEEEEEOEEEEEEOEE"
Returns: "8589934592k+1408901381"
"EOEEOEOEEEOEEOEEEEOEOEOEOEOEEOEOEEOEOEEOEEEE"
Returns: "536870912k+326134066"
"OEOEOEOEEOEOEOEEEOEEEEEOEEEOEOEOEOEEOEE"
Returns: "33554432k+17798127"
"EOEEOEOEOEEOEEEOEEOEOEOEEOEEEEEOEEEOEOE"
Returns: "67108864k+3911698"
"OEOEEOEOEEOEOEEEOEOEEOEOEEOEOEOEEEE"
Returns: "4194304k+1435131"
"EOEEOEOEEEOEOEOEEEEOEOEEEOEEEEOEOE"
Returns: "8388608k+6722098"
"OEOEEEEEOEOEOEEEOEOEEOEEOEEEEOEEEOEOEE"
Returns: "67108864k+9070755"
"EEEOEOEEOEOEEOEOEOEEEOEOEOEE"
Returns: "262144k+63448"
"EEOEEEEEEOEOEEOEOEOEOEOEOEOEOEEEEEEEE"
Returns: "67108864k+14310996"
"EEOEOEEEOEOEEOEOEOEOEEOEEOEOEOEOEOEO"
Returns: "4194304k+1770572"
"EEOEEOEOEOEEEEOEEOEOEOEEEEEE"
Returns: "1048576k+714532"
"EEE"
Returns: "8k+0"
The argument was even 3 times in a row, so the original value was a positive multiple of 8.
"OE"
Returns: "2k+1"
The initial number had to be odd. After multiplying by 3 and adding 1, the next value will definitely be even.
"OEO"
Returns: "4k+3"
"EEEEOEEEEOEEEEOEEEEOEEEEOEEEEOEEEEOEEEEOEEEEOEEEEO"
Returns: "2199023255552k+1014933810256"
"EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE"
Returns: "1125899906842624k+0"
"OEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE"
Returns: "562949953421312k+375299968947541"
"OEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOEOE"
Returns: "33554432k+33554431"
"OEOEEOEEEOEEEEOEEEEEOEEEEEEOEEEEOEEOEEEEEOEEEEEEEE"
Returns: "1099511627776k+728557408267"
"EOEEEOEEEEOEOEEEEEEOEEEEEEOEOEEOEOEOEOEEEEEEEOEOEE"
Returns: "137438953472k+110210109978"
"EEEEOEEEEOEEEEOEEEEOEEEEOEEEEOEEEEOEEEEOEEEEOEEEEO"
Returns: "2199023255552k+1014933810256"
"OEOEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEO"
Returns: "2199023255552k+1343847545059"
"OEEE"
Returns: "8k+5"
"EEOEOEOEOEOEOEOEOEOEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEO"
Returns: "2199023255552k+1731857897468"