달리는 이유는 언제나 짜릿함이었어요. 정해진 일정도, 타이머도 없이 그저 아스팔트 위를 울리는 발소리뿐이었죠. 그런데 실력을 겨루는 러닝 크루에 합류하고 나니, 일이 점점 진지해지고 있어요. 훈련은 1초 단위로 시간을 재고, 매 순간이 중요해요. 페이스를 맞추려고 _찰나의 스톱워치_를 장만했어요. 매끈한 첨단 기기인 이 녀석은 곧 가장 친한 친구가 될 거예요.
이번 과제는 랩 타임을 정확하게 기록하는 스톱워치를 만드는 거예요.
스톱워치는 네 가지 명령(start, stop, lap, reset)을 사용해 다음 두 가지를 기록해요.
사용할 수 있는 명령은 스톱워치가 어떤 상태에 있는지에 따라 달라요.
| 명령 | 시작 상태 | 종료 상태 | 동작 |
|---|---|---|---|
| Start | Ready | Running | 시간 측정을 시작해요 |
| Start | Stopped | Running | 시간 측정을 재개해요 |
| Stop | Running | Stopped | 시간 측정을 멈춰요 |
| Lap | Running | Running | 현재 랩을 이전 랩에 추가한 다음, 현재 랩을 초기화해요 |
| Reset | Stopped | Ready | 현재 랩을 초기화하고 이전 랩을 모두 지워요 |
이 연습 문제를 완료하려면 stopwatch 데이터 타입을 정의하고, 다음 함수를 구현해야 해요:
임시 타입 정의가 이미 마련되어 있지만, 함수를 정의하고 의미 있는 데이터 타입을 만드는 일은 직접 해야 해요.
Exercism에 가입하고 Standard ML 트랙을 연습 문제 90개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.