Operation "Find The Operator"
+6
−0
Challenge
Make a program that takes input of 3 nonnegative 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 codegolf 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 …
7mo ago
+3
−0
[Python 3], 106 91 bytes Sa …
7mo ago
+2
−0
Ruby, 58 bytes Simple eval so …
5mo ago
+1
−0
Ruby, 57 bytes >a,b,c{% …
4mo ago
+1
−0
Japt, 16 bytes Takes the re …
7mo ago
5 answers
+1
−0
+4
−0
C (gcc), 147 151 bytes
#define L(X)X(+,a+b)X(,ab)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}}
0 comment threads