트랙
/
Lean
Lean
/
연습 문제
/
저항 색상 듀오
저항 색상 듀오

저항 색상 듀오

보통

지침

Raspberry Pi로 무언가를 만들어 보고 싶다면, 아마 _저항_을 사용하게 될 거예요. 이 연습 문제에서는 저항에 대해 두 가지를 알아야 해요:

  • 각 저항에는 저항값이 있어요.
  • 저항은 아주 작아요. 저항값을 그 위에 인쇄해도 읽기 어려울 정도로 작죠.

이 문제를 해결하려고 제조사들은 저항값을 나타내기 위해 저항 위에 색으로 구분한 띠를 인쇄해요. 각 띠에는 위치와 숫자 값이 있어요.

저항의 처음 두 띠는 단순한 인코딩 규칙을 따라요. 각 색은 하나의 숫자에 대응해요. 예를 들어 brown 띠(값 1) 다음에 green 띠(값 5)를 인쇄하면 숫자 15가 돼요.

이 연습 문제에서는 띠의 값을 외우지 않아도 되도록 도움이 되는 프로그램을 만들어 봐요. 이 프로그램은 색 이름을 입력으로 받아 두 자리 숫자를 출력해요. 입력으로 색이 두 개를 넘게 들어와도 마찬가지예요!

각 띠의 색은 다음과 같이 인코딩돼요:

  • black: 0
  • brown: 1
  • red: 2
  • orange: 3
  • yellow: 4
  • green: 5
  • blue: 6
  • violet: 7
  • grey: 8
  • white: 9

위의 예에서처럼 brown-green은 15를 반환해야 하고, brown-green-violet도 세 번째 색을 무시하고 15를 반환해야 해요.

구문 정의하기

Caution

이 연습 문제는 Resistor Color의 연속으로, 그 내용을 바탕으로 만들어졌어요. 연습 문제는 어떤 순서로든 풀 수 있지만, 권장하는 순서대로 풀어보길 권해요.

이 연습 문제에서는 c* 접두사를 사용해 색에 대한 구문이 이미 정의되어 있어요. 예를 들어 c*black처럼요. 그다음 지시 사항에 따라 색의 나열을 숫자에 연결하는 구문을 정의해야 해요. 색은 *[[로 시작해 ]]로 끝나고, , 로 구분돼요. 예를 들어 *[[c*black, c*yellow, c*violet]]와 같아요.

이 과제는 아마 표기법이나 매크로를 사용해야 할 거예요. 참고 자료를 한번 확인해 봐도 좋아요.

새 구문은 컴파일 시점에 확장되기 때문에, 필요한 구문이 모두 정의되어 있지 않으면 어떤 테스트도 컴파일에 실패해요. 그래서 전통적인 런타임 테스트 대신 #guard_msgs를 사용해요. 이 명령은 주어진 독스트링과 다른 명령, 여기서는 #eval이 만들어 낸 메시지를 비교하고, 둘이 다르면 오류를 보고해요. 오류가 없다면 테스트를 통과한 것으로 봐도 돼요.

로컬에서 작업하거나 Lean의 온라인 플레이그라운드에서 작업하면, #guard_msgs가 보고하는 오류에 대한 피드백을 Lean InfoView를 통해 바로 받을 수 있어요.

Caution

온라인 테스트 러너는 현재 Lean 메타프로그래밍 라이브러리 전체를 불러오는 것을 지원하지 않아요. Lean에서 기본으로 제공하는 기능은 Lean 네임스페이스 안에 있는 것들을 포함해 자유롭게 사용할 수 있지만, import Lean을 추가하거나 Lean 네임스페이스에서 특정 모듈을 불러오면 Exercism에 제출했을 때 실패해요.

이 연습 문제를 푸는 데 Lean 라이브러리를 불러올 필요는 없어요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Lean Exercism

저항 색상 듀오 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Lean 트랙을 연습 문제 100개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.