때로는 여러 입력으로 수학 문제를 실행하는 것이 유용합니다. 이 과제의 목표는이 작업을 용이하게하는 프로그램을 만드는 것입니다.
숫자 생성 표현식
세 가지 유형의 표현을 지원해야합니다.
- 단일 숫자 생성기 : 매우 간단하고 리터럴 숫자
- 다중 숫자 생성기 : 조금 더 복잡합니다. 대괄호 (
[]) 로 둘러싸여 있습니다.,표현식에서 숫자는 쉼표 ( )로 구분됩니다. 예[-1,2,3.26]. - 레인지 제너레이터 : 이것은 중괄호 (
{})로 둘러싸여 있습니다. 쉼표로 구분 된 3 개의 숫자가 있습니다. 이 표현식의 형식은입니다{start,stop,step}.start그리고stop이 포함됩니다.
평가 규칙
- 작업 순서를 지원해야합니다. ( https://en.wikipedia.org/wiki/Order_of_operations#Definition )
- 괄호를 지원할 필요는 없습니다.
- 식에 공백이 발생할 수 있습니다.
- 부동 소수점 숫자를 지원해야합니다 (언어의 기본 정밀도가 좋은지).
- (숫자가 아님)
0결과로 나눕니다NaN.
프로그램은 곱셈 ( *), 나누기 ( /), 덧셈 ( +) 및 뺄셈 ( -)을 지원해야합니다 .
산출
각 출력 라인은 발전기 조합 중 하나입니다. 형식은 표현식 (실수가 대체 됨 =)과 등호 ( ) 및 평가 결과입니다. 생성기의 모든 조합은 출력에 표시되어야합니다.
예
( >>>입력을 나타냄)
>>>3 * [3,2]
3 * 3 = 9
3 * 2 = 6
>>>{1,2,3}
1 = 1 <-- this is because 1 + 3 > the end
>>>{0,2,1} + {0,1,1}
0 + 0 = 0
1 + 0 = 1
2 + 0 = 2
0 + 1 = 1
1 + 1 = 2
2 + 1 = 3
>>>6/[2,3]
6/2 = 3
6/3 = 2
>>>{1.5,2.5,0.5}
1.5 = 1.5
2 = 2
2.5 = 2.5
>>>3-{6,5,-1}
3-6 = -3
3-5 = -2
>>>5/{-1,1,1}
5/-1 = -5
5/0 = NaN
5/1 = 5
>>>4.4 / [1,2.2] + {0,2,1}
4.4 / 1 + 0 = 4.4
4.4 / 1 + 1 = 5.4
4.4 / 1 + 2 = 6.4
4.4 / 2.2 + 0 = 2
4.4 / 2.2 + 1 = 3
4.4 / 2.2 + 2 = 4
>>> [1,2] / 0 + 5
1 / 0 + 5 = NaN
2 / 0 + 5 = NaN
프로그램은 짧아서 암기하고 어디서나 사용할 수 있습니다.
샌드 박스에서이 게시물을 알려주는 @PeterTaylor와 @geokavel에게 감사합니다.
x/0NaN에 대한 즉각적인 평가가 이루어 지거나 NaN을 가치로 취급해야합니까?