calculate(3, 4, 4) return 0
calculate(1, 5, 5) return 0
calculate(2, 4, 2) return 2
calculate(0, 5, 3) return 2
calculate(4, 6, 4) return 2
calculate(0, 3, 5) return 1
Any idea what is the best way to find out the formula? Do pardon me if this sound more like a math problem rather then Java. Please advise thanks.
Another option would be decompiling with javap c className
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."  Martin Fowler
Please correct my English.
The logic is a mathematical formula which satisfy the all given inputs together with the output. Is there something like a reserve math or something?
In the field of statistics, I believe this is done via regression analysis  although admittedly, it is done as "best fit", and not exact. In the field of graphics, there is "curve fitting", which may be able to be applied.
Maybe a google of "regression analysis" and / or "curve fitting" can get you started.
Henry
if (input = 3,4,4) return 0
else if (input = 1,5,5) return 0
else if (input = 2,4,3) return 2
else if (input = 0,5,3) return 2
else if (input = 4,6,4) return 2
else if (input = 0,3,5) return 1
//at this point, I could add 0 to 10,000 more "else if" lines defining any 3digit combination I want
//and an optional 'else' line
If you're looking for a mathematical formula, again, you have 6 data points in a 3d space. If you are not limited to some kind of surface/shape, there are an infinite number of solutions.
3 * a + 4 * b + 4 * c + d == 0 (1)
1 * a + 5 * b + 5 * c + d == 0 (2)
2 * a + 4 * b + 2 * c + d == 2 (3)
0 * a + 5 * b + 3 * c + d == 2 (4)
4 * a + 6 * b + 4 * c + d == 2 (5)
0 * a + 3 * b + 5 * c + d  1 (6)
By combining all these you can get the solution for a, b, c and d. For instance, combining (1) and (2):
3 * a + 4 * b + 4 * c + d == 1 * a + 5 * b + 5 * c + d
=== {subtract 1 * a, 4 * b, 4 * c and d on each side}
2 * a == b + c (7)
You can then combine (3) and (7), by replacing the 2 * a with b + c in (3):
b + c + 4 * b + 2 * c + d == 2
===
5 * b + 3 * c + d == 2 (8)
If you have enough statements you can eventually work out the values of a, b, c and d. Note that the more variables you have, the more statements you need. 6 may not be enough for 4 variables.
SCJP 1.4  SCJP 6  SCWCD 5  OCEEJBD 6  OCEJPAD 6
How To Ask Questions How To Answer Questions
c == 1 and c == 1/2 so there is contradiction. If the result of (6) was 2 instead of 1 then a == 0, b == 1, c == 1 and d == 0 would be the solution.
Of course this doesn't prevent you using more complex functions like using powers of any of the numbers. All I've shown is that a simple linear function is not possible.
SCJP 1.4  SCJP 6  SCWCD 5  OCEEJBD 6  OCEJPAD 6
How To Ask Questions How To Answer Questions
ax + by + cz = <return value>
There are only two hard things in computer science: cache invalidation, naming things, and offbyone errors
fred rosenberger wrote:If you're talking about straight algebra, you need one formula per variable, so 6 is more than enough. in fact, here three are too many. Three would do it (the three inputs are the coefficients of x, y and z in
ax + by + cz = <return value>
Wouldn't you need 4, with the "+ d" I specified as correction for the return value?
SCJP 1.4  SCJP 6  SCWCD 5  OCEEJBD 6  OCEJPAD 6
How To Ask Questions How To Answer Questions
How do they get the deer to cross at the signs? Or to read this tiny ad?
The WEB SERVICES and JAXRS Course
https://coderanch.com/t/690789/WEBSERVICESJAXRS
