이 도전 은 더 나은 사양입니다.
투기
프로그램은 단일 변수를 포함하는 선형 방정식을 취하고 x
의 값을 출력합니다 x
.
입력 / 파싱
- 입력에는 숫자, 연산자, 괄호 (
()
)x
및=
기호 만 포함됩니다 ( 공백 없음). - 괄호는 항상 균형을 유지합니다.
- 항상 1 이상이 있어야
x
합니다.x
앞에 숫자가 올 수 있습니다. - 모든 방정식은 정확히 하나의 결과를 갖습니다.
수는 다음 단계에 따라 정의 할 수 있습니다. 정규식으로 숫자를 정의 할 수 있습니다 : -?(\d+(\.\d+)?|\.\d+)
.
정규식을 사용하지 않으면 숫자는 다음과 같이 정의됩니다. 0-9
-
시작 부분에 음수를 나타낼 수 있습니다.- 그런 다음 숫자 가있을 수 있습니다. 숫자가 없으면 소수점이 있습니다.
- 소수점이 있으면 하나 이상의 숫자가 뒤에옵니다.
가장 큰 숫자 / 값은 언어 능력에 의해 정의됩니다.
운영자 : 중입니다 +-*/
, 그들은 항상 숫자 사이에 표시되며, 또는 괄호
이는 (5)(5)
단순성을 위해 올바른 입력이 아님을 의미 합니다.
괄호 안에는 항상 유효한 표현식 (숫자 및 / 또는 연산자의 유효한 조합)이 포함됩니다. "균형"괄호는 모든 (
관련 마감이있을 때 정의됩니다.)
평가
- 작업 순서를 따라야하며 우선 순위는 다음과 같습니다 (최고에서 최하로).
- 괄호 (가장 깊은 중첩 우선)
- 곱셈과 나눗셈
- 덧셈과 뺄셈
- 우선 순위가 같은 두 연산자가 발생하면 왼쪽-> 오른쪽으로 이동하는 것이 좋습니다
산출
어떤 방식 으로든 결과를 출력해야합니다. 숫자 결과 만 출력하지 않으면 출력에서 출력 방법을 명확하게 설명하십시오. 출력 형식은 일관성이 있어야합니다. 출력은 10 진수 일 수 있지만 항상 합리적이며 정밀도는 언어의 정밀도로 제한됩니다. 언어가 부동 소수점 산술을 지원하지 않는 경우 에만 지원할 필요가 없습니다.
규칙
- 이 작업을 사소한 내장 작업은 허용 되지만
[uses built-in]
답의 헤더에 명확 하게 추가해야합니다 . 이것은 당신의 대답이 승리에서 면제됩니다 - "이 작업을 간단하게하는 내장 기능"은 다음 중 하나입니다.
- 방정식을 받아서 a / 변수의 값을 출력하는 것
- 방정식을 완전히 단순화하는 것
eval
많은 양의 구문 분석을 수행하거나 관련 함수 사용 사용eval
그들이 사용하는 경우 및 관련 함수는 선형 방정식을 해결 (입력 최소한의 변경으로) 허용된다.- 확실하지 않다면 의견을 말하십시오.
- 방정식을 파싱하는 내장이 허용됩니다
예
3+4=x
7
4+x=5
1
3+3*3=x
12
3x-4=7+2x
11
3--1=x
4
3*(2+4x)=7x-4
-2
1.2+2.3x=5.8
2
10=4x
2.5
잘못된 입력 :
(5)(4)=x no operator between (5) and (4)
5(x+3)=2 no operator 5 and (...)
x=y the only variable is x
4=3 there is no x
x+3=x-7 no solution
x=x infinite solutions
+5=x + is not an unary operator. -5=x would be valid though
1/(x-3)=5 Nonlinear
3/x Nonlinear
eval
는 도전을 사소한 것으로 간주합니까? 또한 new Function(...)
카운트의 형태 ?