Define a mathematical expression in English [released]
+1
−0
Background
Inspired by this challenge that is also a mathematical English translator.
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 to999
. - When in the tens place, use the dash (
-
) when there are spaced numberings. For example,21
istwenty-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
isone hundred and twenty-five
. - If the number is negative, use
negative
before the number. For example,-13
isnegative thirteen
.
- The number range can only be from
- 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:
-
+
isplus
. -
-
isminus
. -
*
istimes
. -
/
isdivided by
. -
=
isequals
oris 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
Testcases by [**@celtschk**](https://codegolf.codidact.com/comments/thread/4623#comment-13896):
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
1 comment thread