기록 기능이 있는 계산기
Coddy Swift 여정의 로직 및 흐름 섹션에 포함된 레슨 — 56개 중 56번째.
챌린지
중급수식 스트림을 처리하고, 오류를 허용하며, 마지막에 연산자별 이력을 보고하는 계산기를 빌드하세요.
입력의 한 줄을 읽습니다: 쉼표로 구분된 a:op:b 수식 목록입니다. 연산자는 +, -, *, /입니다. parse, divideByZero, unknownOp 케이스를 가진 enum CalcError: Error를 정의하세요.
각 수식에 대해 순서대로 다음을 수행합니다:
- 성공 시
= <n>를 출력합니다. - 각 오류 케이스에 대해
parse,divZero, 또는unknownOp를 출력합니다.
각 수식별 라인 출력 후, 최소 한 번이라도 성공한 연산자에 대해 +, -, *, /의 고정된 순서로 한 줄씩 출력합니다:
<op>: count=<n> sum=<total>count는 해당 연산자가 성공한 횟수이며, sum은 해당 성공 결과들의 합계입니다.
입력 3:+:5,10:/:0,7:*:2,9:%:2,12:-:4,8:+:2에 대한 출력은 다음과 같습니다:
= 8
divZero
= 14
unknownOp
= 8
= 10
+: count=2 sum=18
-: count=1 sum=8
*: count=1 sum=14직접 해보기
let exprs = readLine()!.components(separatedBy: ",")
let order = ["+", "-", "*", "/"]
// 할 일: enum CalcError; func compute(...) throws -> Int;
// 루프, do/try, 결과 출력; 연산별 이력 생성;
// 정해진 순서대로 최종 보고서 작성, 성공한 연산만 포함