How to golf evaluation of math expression in MySQL?
Score 69
select * from expressions
where elt(ord(operation)/2-20,a*b,a+b,a-b,a/b)=c
Takes inspiration from Marmite Bomber's use of elt
, but uses a magic formula. Indexes into the list via ord(operation)2/-20
, which buckets the four character codes across 1 to 4 by abusing elt
's rounding behavior.
-1 thanks to Arnauld, who improved on the modulo reduction.
-1 thanks to Bubbler, who found a better non-modulo formula.
Score 73
select * from expressions
where elt(instr('*/-+',operation),a*b,a/b,a-b,a+b)=c
This is my best guess as to the 73 you mention other people have gotten in the question.
MySQL, 82 74 bytes
select * from expressions
where
elt(locate(operation,'+-/*'),a+b,a-b,a/b,a*b)=c
output
a b operation c
----------- ----------- --------- -----------
2 3 + 5
8 5 - 3
Explanation
ELT() returns the Nth element of the list of strings (the expressions are evaluated and converted to strings)
LOCATE Return the position of the first occurrence of substring