트랙
/
Julia
Julia
/
연습 문제
/
ISBN 검증기
ISBN 검증기

ISBN 검증기

보통

지침

ISBN-10 검증 절차는 도서 식별 번호를 검증하는 데 사용해요. 이 번호들은 보통 하이픈을 포함하고 있으며 3-598-21508-8처럼 생겼어요.

ISBN

ISBN-10 형식은 숫자 9개(0부터 9까지)에 검사 문자 하나(숫자이거나 X만 가능)를 더한 형태예요. 검사 문자가 X인 경우 이는 값 '10'을 나타내요. 하이픈이 있든 없든 표기할 수 있고, 다음 공식으로 유효성을 검사할 수 있어요:

(d₁ * 10 + d₂ * 9 + d₃ * 8 + d₄ * 7 + d₅ * 6 + d₆ * 5 + d₇ * 4 + d₈ * 3 + d₉ * 2 + d₁₀ * 1) mod 11 == 0

결과가 0이면 유효한 ISBN-10이고, 그렇지 않으면 유효하지 않아요.

예시

ISBN-10 3-598-21508-8을 예로 들어봐요. 이 번호를 공식에 대입하면 다음과 같아요:

(3 * 10 + 5 * 9 + 9 * 8 + 8 * 7 + 2 * 6 + 1 * 5 + 5 * 4 + 0 * 3 + 8 * 2 + 8 * 1) mod 11 == 0

결과가 0이므로 이 ISBN은 유효하다는 것을 알 수 있어요.

과제

문자열이 주어지면 프로그램은 그 문자열이 유효한 ISBN-10인지 확인해야 해요. 이를 구현하려면 ISBN의 검사 문자를 계산하기 전에 문자열을 어떻게 전처리하고 파싱할지 고민해야 해요.

프로그램은 구분용 하이픈이 있는 경우와 없는 경우 모두 ISBN-10을 검증할 수 있어야 해요.

주의 사항

어떤 언어에서는 문자열을 숫자로 변환하는 것이 까다로울 수 있어요. 게다가 ISBN-10의 검사 문자는 'X'('10'을 나타냄)일 수 있으므로 더욱 까다로워요. 예를 들어 3-598-21507-X는 유효한 ISBN-10이에요.

보너스 과제

이 과제들을 시도해 본다면, 여러분의 풀이 파일에 직접 테스트를 작성해 봐요!

  • isbn"3-598-21507-X" == ISBN("3-598-21507-X")가 성립하도록 문자열 매크로를 정의해 봐요.

  • 생성자가 ISBN-13도 받아들이도록 해 봐요. 같은 ISBN은 형식에 관계없이 서로 같아야 해요: ISBN("1-234-56789-X") == ISBN("978-1-234-56789-7").

  • 유효한 ISBN을 생성하는 함수나 반복자를 정의해 봐요. 어쩌면 주어진 시작 ISBN에서 시작할 수도 있어요.

ISBN을 문자열이 아니라 정수로 저장할 수 있을까요? 그리고 그게 좋은 생각일 때가 있을까요? 그렇게 한다면 ISBN을 체크 디지트까지 포함해 문자열로 출력할 수 있을까요?

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

ISBN 검증기 문제를 시작해 볼 준비가 됐나요?

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