Problem Statement
The <term>s are products of variables. As you would expect, the + and - operators take lower precedence than the multiplications within the <term>s. For example,
ABC+ADF=PQ-PQis a properly formatted equation. Sometimes, by fixing a single variable at a particular value, we can force the entire equation to always be true. Return a
Definition
- Class:
- VariableSolve
- Method:
- getSolutions
- Parameters:
- String
- Returns:
- String[]
- Method signature:
- String[] getSolutions(String equation)
- (be sure your method is public)
Constraints
- equation will contain between 3 and 50 characters inclusive.
- equation will be formatted as described in the problem statement.
Examples
"ABCD+ABCD-ABCD=ABCD"
Returns: { }
"ABA+BA+B=P-P"
Returns: {"B" }
"ABA+BA+B=P-P+B"
Returns: {"A", "A", "B" }
"ABA+BA+B=P-P+B+B"
Returns: {"A", "A", "B" }
"P=NP"
Returns: {"N", "P" }
Simpler than it looks: let N = 1 or P = 0.
"RED+BLUE=PURPLE"
Returns: {"E" }
Only E = 0 guarantees the equation holds.
"ABCD+ABCD-ABCD=ABCD"
Returns: { }
Each variable has an infinite number of values causing the equation to hold.
"BAA+BA+B=P-P"
Returns: {"B" }
We cannot consider the complex solutions for A.
"B-AB+AAB-BC+ABC-AABC+BCC+AABCC=ABCC"
Returns: {"B" }
"B-AB+ABC+AABC+ABCC+AABCC=BCC+AAB+BC"
Returns: {"A", "A", "B", "C", "C" }
"AB+AAB-BC+ABC+AABC-BCC+ABCC+AABCC=B"
Returns: {"A", "A", "B" }
"BBACAD+GRAPA+AFLAD=DBCBA+AGRP+DALF"
Returns: {"A", "A" }
"BBACAD+GRAPA+AFLAD=DBCBA+AGRP+DAF"
Returns: {"A" }
"BBACAD+GRAPA+AFLAD+DALF=DBCBA+AGRP"
Returns: {"A" }
"BBACAD+GRAPA+AFLAD=GDBCBA+GAGRP+GDALF"
Returns: {"A" }
"DAAB-BAD-ADB+BD=P-P"
Returns: {"A", "B", "D" }
"BAA+BA+B=P"
Returns: { }
"BAA-BA-B=CAB+P-P-BAC"
Returns: {"A", "A", "B" }
"BAA+BAA-AB-AB-BA-BA=B+C+B-C"
Returns: {"A", "A", "B" }
"BAA+BAA-AB-AB-BA-BA=C-B-C-B"
Returns: {"A", "B" }
"BAA+BAA-AB-AB-BA-BA=C-B-C-B+CAA+CAA"
Returns: { }
"BAA+BAA-AB-AB-BA-BA=C-B-C-B+CAA-CAA"
Returns: {"A", "B" }
"BAA+BAA-AB-AB-BA-BA=C-B-C-B+CAA+CAA+CA+CA"
Returns: { }
"BAA+BAA-AB-AB-BA-BA=C-B+C-B+CAA+CAA+CA+CA"
Returns: { }
"CA+BAA+BAA-AB-AB-BA-BA+CA=C-B+C-B+CAA+CAA-CA-CA"
Returns: {"A" }
"AA=P-P"
Returns: {"A" }
"GRAA=P-P-GR-GR"
Returns: {"G", "R" }
"GRAA=P-P+GR+GR"
Returns: {"A", "A", "G", "R" }
"BBACC+BBA-CAC-ACC-CCA-A-A-A=D-D"
Returns: {"A", "B", "B" }
"ACC-A=ACC+ACC-A-A"
Returns: {"A", "C", "C" }
"ACC-A=BCC+BCC-B-B-DCC-DCC+D+D"
Returns: {"C", "C" }
"ACC-A=BCC+BCC-B-B-DCC-DCC+D+D+D"
Returns: { }
"ACC-A=BCC+BCC-B-B-DCC+D+D"
Returns: { }
"ACC-A=BCC-B-B-DCC-DCC+D+D"
Returns: { }
"ACC-A-A=BCC-B-B-DCC+D+D"
Returns: {"C", "C" }
"A-B=CCB+A"
Returns: {"B" }
"A-A+A-A+A-A+A-A+A-A+A-A+A-A+A-A+A-A+A-A=AA+AB+BA"
Returns: {"A" }
"A-A+A-A+A-A+A-A+A-A+A-A+A-A+A-A+A-A+A-A=AA+AB-BA"
Returns: {"A" }
"A-A+A-A+A-A+A-A+A-A+A-A+A-A+A-A+A-A+A-A=AA+AB-BA+A"
Returns: {"A", "A" }
"BAA-BA+B=P"
Returns: { }
"A-A=CA-AC"
Returns: { }
"ABC=P-P"
Returns: {"A", "B", "C" }
"P-P+D-D=ABC+AB"
Returns: {"A", "B", "C" }
"P-P+D-D=AABBCC"
Returns: {"A", "B", "C" }
"P-P+D-D=AABBCC-ABC"
Returns: {"A", "B", "C" }
"P-P+D-D=AABBCC+ABC"
Returns: {"A", "B", "C" }
"P-P+D-D=AABBCC-AABCC"
Returns: {"A", "B", "B", "C" }
"P-P+D-D=AABBCC-AABCC+AACC"
Returns: {"A", "C" }
"AACC+P-P+D-D=AABBCC-AABCC"
Returns: {"A", "B", "B", "C" }
"AACC+P-P+D-D=AABBCC"
Returns: {"A", "B", "B", "C" }
"AAB-AB-BA+B=CAA+AAC-AC-CA+C"
Returns: { }
"BAA-B+CAA-AC-CA+C=P-P"
Returns: {"A" }
"XYX+XY-Y-Y-Y+XZ=Z+Z+Y+Y+Y"
Returns: {"X" }
"ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJ=P-P"
Returns: {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" }
"AAB+AB=B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B"
Returns: {"A", "A", "B" }
"ZZX+X=ZX+ZX+ZX+ZX+ZX+ZX+ZX+ZX+ZX+ZX+ZX+ZX+ZX+ZX+ZX"
Returns: {"X", "Z", "Z" }
"E-QQE=QQE+QQE+QQE+QQE+QQE+QQE+QQE+QQE+QQE+QQE+QQE"
Returns: {"E", "Q", "Q" }
"E+E-QQE=QE+QQE+QQE+QQE+QQE+QQE+QQE+QQE+QQE+QQE+QQE"
Returns: {"E", "Q", "Q" }
"ABB-AB-AB+A=BCB-C"
Returns: {"B" }
"ABB-A-A=CBB-C"
Returns: { }
"AB-C+BA-A-C+BCB+CB-C=A+C+C-CBB+A+C"
Returns: {"B" }
"ABCA+ACA+BAC+CA=BD+BBD+DBA+BDBA"
Returns: {"A", "B" }
"GGH+GGH+GGH+GGH+GGH+GGH+GGH+GGH+GGH+GGH+GGH+GGH=GH"
Returns: {"G", "G", "H" }
"GHH-G=KH-K"
Returns: {"H" }
"AXX+AXX-AX-AX-AX+A=BX+BX-B"
Returns: {"X" }
"AXX+AXX+AXX-AX-AX-AX-AX+A=BX+BX-B"
Returns: { }
"AXX+AXX+AXX-AX-AX-AX-AX+A=BX+BX+BX-B"
Returns: {"X" }
"ABCB+ABC-AC=AC+AC-ABC"
Returns: {"A", "B", "B", "C" }
"VX-XZYZ=Q-Q-ZZYX+XXV"
Returns: {"V", "X", "X" }
"AABB+AAB+AB+ABB=B+BB"
Returns: {"A", "A", "B", "B" }
"BA+BA+BA+BA+BA+BA+AB+BA+BA+BA+BA+BA+BA+BA+BA+BA=B"
Returns: {"A", "B" }
"ACC+ACC=A+A+A+A"
Returns: {"A", "C", "C" }
"RED+BLUE=PURPLE"
Returns: {"E" }
"AB+AB+AB=B"
Returns: {"A", "B" }
"A+A=ABB"
Returns: {"A", "B", "B" }
"AB+AB=A+A+A"
Returns: {"A", "B" }
"AACD+ABCD-CCDD=ABCD-AACD-CCD+D"
Returns: {"D" }
"ZABAB-AZA-BBZ+Z=ZAA-Z"
Returns: {"A", "A", "B", "B", "Z" }
"DCBA+ABCD=ABCDE"
Returns: {"A", "B", "C", "D", "E" }
"BAA+BA+B=P-P"
Returns: {"B" }
"AAB+AAB=B"
Returns: {"A", "A", "B" }
"A+B+B+C=A+BDD+C"
Returns: {"B", "D", "D" }
"A+A=AB-AB-AB-AB-AB-AB-AB"
Returns: {"A", "B" }
"AAB+B=B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B+B"
Returns: {"A", "A", "B" }
"RN-R+NR-R+NRN-R=R-RN-RN"
Returns: {"N", "N", "R" }
"A+A+A+A-AA=C-C"
Returns: {"A", "A" }
"BAA-BA-B=P-P"
Returns: {"A", "A", "B" }
"AACB+ACB=CB"
Returns: {"A", "A", "B", "C" }
"XAX+XXB+BXX+CXX=AX+BX+BX+CX+C+B+B+A"
Returns: {"X", "X" }
"AAB+AAB+AB=B+B+B"
Returns: {"A", "A", "B" }
"AAB-B=B"
Returns: {"A", "A", "B" }
"BAA+BA-B=P-P"
Returns: {"A", "A", "B" }
"BC+BC=C"
Returns: {"B", "C" }
"ABC+BA=BCA+AB"
Returns: { }
"ABC=CB"
Returns: {"A", "B", "C" }
"AA+AB+AC+AD+AE+AH+AI=A+B+C+D+E+F+G+H+I+J+K+L+M+N+O"
Returns: { }
"XAX+XXA+AXX+XXA-AX-AX-XA-XA=A-A-A"
Returns: {"A", "X" }
"UUA=A+A"
Returns: {"A", "U", "U" }
"A+A+A+A+A+A+A+A+A+A+A+A+A+A+A+A+A=BA+BBA"
Returns: {"A", "B", "B" }
"AJ=AY"
Returns: {"A" }
"AAB=B+B"
Returns: {"A", "A", "B" }
"AAB-AB-AB-AB+B=C-C"
Returns: {"A", "A", "B" }
"AB+AB+C=A+A+A+C+DEFGHI-DEFGHI"
Returns: {"A", "B" }
"ABB-A+BBC-BC-BC=P-P"
Returns: { }