Operation "Find The Operator"
+7
−0
Challenge
Make a program that takes input of 3 non-negative integers: a result and 2 other values that once calculated results to the 3rd value.
- The program must figure out how to get the 2 first numbers to equivalence itself with the 3rd. It could be either addition, subtraction, multiplication, integer division, modulo and exponentiation.
- You can't change the places of the 2 variables when building the equation, meaning you can't get some value by intertwining in the methods excluding addition and multiplication.
- The returning value is the operator that makes the equation true (it's best to use some distinguishable character to separate it from the other methods).
- Use whatever characters you want to use to determine the method that makes the equation truthy.
- If multiple operators make the equation truthy, then output them in any order.
- What makes it true? If an equation exists within the 2 numbers that results to the value of the 3rd.
- What to return when it's false? Something but not nothing (whitespaces and newlines aren't allowed as such output).
- This is code-golf so the shortest program wins!
Test Cases
# Input (#, #, #)
// Output (+-*/%^ or .)
2 3 5
+
7 3 2
/
9 8 4
.
1 2 2
*
2 2 4
+ * ^
14 6 8
-
5 0 2
.
0 0 1
^
8 4 0
%
0 0 0
+ - *
+4
−0
[C (gcc)], 147 151 bytes …
3y ago
+3
−0
[Python 3], 106 91 bytes Sa …
3y ago
+2
−0
Ruby, 58 bytes Simple eval so …
3y ago
+1
−0
Ruby, 57 bytes ->a,b,c{% …
3y ago
+1
−0
Japt, 16 bytes Takes the re …
3y ago
5 answers
+4
−0
C (gcc), 147 151 bytes
#define L(X)X(+,a+b)X(-,a-b)X(*,a*b)X(/,b&&a/b)X(%,b&&a%b)X(^,pow(a,b))
#define M(o,d)printf("%s",d==c?#o" ":z++==5?".":"");
z;s[99];f(a,b,c){L(M)}
Somewhat naive solution with X macros that builds up a string before printing. The b&&a/b
checks are there to deal with division by zero.
0 comment threads
+2
−0
Ruby, 58 bytes
Simple eval solution. Using **
for exponentiation.
->a,b,c{%w[+ - * / % **].select{eval("#{a}#{_1}#{b}")==c}}
+1
−0
0 comment threads