### Communities

tag:snake search within a tag
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
created:<1w created < 1 week ago
post_type:xxxx type of post
Sandbox

+1
−0

# Challenge

Write a program that translates a mathematical expression using English with the following specifications:

• The expression can only take in numbers, letters from the English alphabet, the equal sign, and the arithmetic operators. No, exponents aren't arithmetic.
• If the target character(s) is a/are number(s):
• The number range can only be from -999 up to 999.
• When in the tens place, use the dash (-) when there are spaced numberings. For example, 21 is twenty-one.
• When in the hundreds place, add and to the string if the tens and/or the ones place aren't empty. For example, 125 is one hundred and twenty-five.
• If the number is negative, use negative before the number. For example, -13 is negative thirteen.
• If the target character is a letter:
• The input should only take 1 letter.
• When put on the result, the letter must be capitalized.
• If the target character is a symbol:
• + is plus.
• - is minus.
• * is times.
• / is divided by.
• = is equals or is equal to.
• Parentheses shouldn't be inputted.
• Whitespaces are ignored.
• Any character that's not part of the specification is ignored.
• Trailing whitespaces and newlines are allowed.
• This is code-golf, so the shortest program for each language wins!

# Test Cases

// Input
# Output

14
fourteen

1+2
one plus two

53 /3
fifty-three divided by three

6 +2* 7 =20
six plus two times seven equals twenty

8*8*8 * 8 * 8 -1
eight times eight times eight times eight times eight minus one

= 4
is equal to four

x + y = z
X plus Y equals Z

-5 +- 6
negative five plus negative six

500
five hundred

129
one hundred and twenty-nine

0+0=0
zero plus zero equals zero

0 -- 0 = 0
zero minus negative zero equals zero

Why does this post require moderator attention?