Процес перевірки ISBN-10 допомагає підтвердити, що ідентифікаційний номер книжки правильний.
Зазвичай такі номери містять дефіси та мають такий вигляд: 3-598-21508-8
Формат 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 правильний.
Маючи рядок тексту (англ. string), програма має перевірити, чи є наданий рядок тексту правильним ISBN-10. Щоб це зробити, потрібно подумати про попередню обробку та розбір рядка тексту перед обчисленням контрольної цифри ISBN.
Програма має вміти перевіряти ISBN-10 як із розділовими дефісами, так і без них.
Перетворення рядків тексту на числа буває непростим у деяких мовах.
Тепер це ще складніше, бо контрольна цифра ISBN-10 може бути X (що позначає «10»).
Наприклад, 3-598-21507-X - це правильний ISBN-10.
Якщо братися за ці завдання, то спершу напишіть, будь ласка, для них власні тести у файлі свого рішення!
Визначте макрос рядка тексту (англ. string), щоб 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 (разом із контрольною цифрою) як рядок тексту?
Зареєструйтеся на Exercism, щоб вивчати й опановувати Julia, а також 35 концепцій128 вправ та справжнє наставництво від людей, і все це безкоштовно.