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

저항 색상

보통

지침

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

  • 각 저항기에는 저항값이 있어요.
  • 저항기는 아주 작아요. 저항값을 저항기 위에 인쇄하더라도 읽기 어려울 정도로요.

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

저항기의 처음 두 띠는 간단한 인코딩 방식을 따라요: 각 색은 하나의 숫자에 대응해요.

이 연습 문제에서는 띠의 값을 외우지 않아도 되도록 도와주는 프로그램을 만들어 볼 거예요.

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

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

이 연습 문제의 목표는 다음과 같은 기능을 만드는 거예요:

  • 특정 색 띠에 해당하는 숫자 값을 조회하기
  • 서로 다른 띠 색을 나열하기

니모닉은 색을 숫자에 연결해 주는데, 이 숫자들은 배열로 저장하면 배열에서의 인덱스와 우연히 일치하게 돼요: Better Be Right Or Your Great Big Values Go Wrong.

저항기의 색 인코딩에 대한 더 자세한 정보는 전자 색 코드 위키백과 문서에서 찾을 수 있어요.

구문 정의하기

이 연습 문제에서는 c* 접두사를 사용해 색깔에 대한 구문을 정의해야 해요. 예를 들어 c*black처럼요. 이 구문은 지침에 따라 컴파일 시점에 각 색깔에 대응하는 값인 Fin 10으로 확장되어야 해요. 마찬가지로, 모든 색깔 값으로 이루어진 배열에 대한 구문도 c*all을 사용해 정의해야 해요.

이 작업에는 아마 표기법이나 매크로를 사용해야 할 거예요. 참고 자료를 확인해 보는 것도 좋아요.

새로운 구문은 컴파일 시점에 확장되기 때문에, 필요한 구문이 모두 정의되어 있지 않으면 어떤 테스트도 컴파일에 실패해요. 그래서 전통적인 런타임 테스트에 의존하는 대신, 정리를 사용해 모든 값을 검사해요. 정리가 타입 검사를 통과하면, 통과한 테스트라고 생각해도 돼요.

로컬에서 작업하거나 Lean의 온라인 플레이그라운드에서 작업하면, Lean InfoView를 통해 어떤 정리가 성공하거나 실패하는지, 또 왜 실패하는지에 대한 즉각적인 피드백을 받을 수 있어요.

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

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

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