Меню

Контрольная цифра ISBN ISSN у книг и журналов

Контрольная цифра ISBN ISSN вычисляется взвешенной суммой с остатком от деления, а в одной из систем её значением может стать буква. Разбираем две системы книжной нумерации, роль буквенного знака, распределение тематических отрезков, причину существования двух номеров у одной книги и порядок очистки строки перед проверкой.

Опубликовано

  • тестовые данные
  • книжные номера
  • проверка номеров

Контрольная цифра ISBN ISSN устроена по тому же принципу, что и в большинстве систем нумерации, но с двумя особенностями, которые часто застают врасплох: в одной из систем проверочный знак может быть буквой, а разделители в записи ставятся произвольно. Ниже разберём обе системы нумерации, разницу между ними, природу буквенного знака, логику распределения отрезков, причину появления второго номера у той же книги и то, как правильно подготовить строку к проверке.

Как устроен проверочный знак у книжных и журнальных номеров?

Книжный и журнальный номера решают общую задачу: дать изданию устойчивый идентификатор, который можно продиктовать по телефону, переписать из выходных данных и ввести в каталог. И там и там последняя позиция отведена под знак, который вычисляется из остальных.

Идея вычисления знакома по другим системам. Знаки умножаются на веса, которые меняются от позиции к позиции, произведения складываются, сумма берётся с остатком, и из остатка получается искомый знак. Отличие книжной системы в том, что веса здесь не чередуются между двумя значениями, а меняются по возрастающей или убывающей последовательности: каждый следующий знак получает вес, отличный от предыдущего.

Такая арифметика лучше защищает от перестановки соседних знаков, чем чередование двух величин, потому что вклады позиций различаются сильнее. Общая теория этого семейства, включая разбор того, почему несимметричные веса важны, приведена в обзоре алгоритмов контрольной цифры.

Есть и третья особенность, общая для книг и журналов: длина строки и её разбиение на смысловые части. Не все знаки в номере одинаково «свободны» — часть закреплена за системой распределения, и об этом ниже.

Чем различаются две системы книжной нумерации?

У книг исторически сложились две системы, и они сосуществуют. Короткая система появилась раньше, длинная — позже, когда короткой перестало хватать. Различаются они не только количеством знаков, но и разбиением строки на смысловые части, а значит, и способом вычисления проверочного знака.

Свойство Ранняя система Современная система
Количество знаков меньше больше
Разбиение строки иное число смысловых частей больше частей
Проверочный знак только цифра цифра или буква
Сосуществование номера по-прежнему встречаются основной поток новых изданий
Правило проверки своё своё

Практический вывод из таблицы простой и часто игнорируется: нельзя применять правило одной системы к номеру другой. Внешне обе строки — просто последовательность знаков, но распределение весов в них не совпадает, и корректный номер будет ошибочно отвергнут.

Поэтому первым делом определяется система: по количеству знаков, а не по догадке. Только после этого считается проверочный знак.

Почему проверочный знак иногда оказывается буквой?

Причина в свойствах арифметики. Знак получается из остатка от деления на модуль, и если модуль равен одиннадцати, возможных остатков тоже одиннадцать — на один больше, чем цифр. Один из остатков не помещается в десятичный алфавит.

Системы решают эту проблему по-разному. Одни просто не выдают номера, для которых остаток попадает в неудобное значение, и тогда алфавит остаётся цифровым. Другие разрешают в последней позиции букву, обычно латинскую икс, которая обозначает конкретное числовое значение. Именно из-за этого буквенный знак встречается только в определённой системе книжной нумерации и практически не встречается в журнальной.

Отсюда требование к реализации, которое легко упустить: проверка не должна предполагать, что все знаки строки — цифры. Если разбор строки отвергает букву на входе, вы отклоните корректный номер. И наоборот: если вы принимаете любую букву в любом месте, вы пропустите опечатку, потому что буквенный знак допустим только в последней позиции.

Второе следствие касается сравнения строк. Буква может быть записана в верхнем или нижнем регистре, и для правила это одно и то же. Значит, регистр нужно выравнивать до сравнения, иначе один и тот же номер будет считаться двумя разными.

Как распределяются отрезки номеров?

Номер издания не является монолитной строкой: его части распределяются на разных уровнях. Один отрезок указывает на систему нумерации, следующий закреплён за группой, затем за конкретным издателем, а оставшиеся знаки издатель распределяет между своими изданиями самостоятельно.

У этой схемы есть важное следствие: длина частей не фиксирована. Чем крупнее издатель, тем короче его отрезок и тем больше знаков остаётся ему на собственные нужды. Поэтому разбиение одной и той же строки на части зависит от того, какому издателю она выделена.

Практический вывод: разделители в записи — это подсказка для человека, а не часть номера. Их ставят там, где проходит граница между частями, но сама граница определяется по таблице распределения отрезков, а не по позиции дефиса. Отсюда и правило очистки: перед любой проверкой разделители удаляются полностью.

Второе следствие — перераспределение. Когда отрезки укрупняются или переходят к другому владельцу, у одного и того же издания может появиться два номера: старый и новый. Оба корректны, оба могут быть записаны в разных каталогах, и ни один из них не является ошибкой. Об этом стоит помнить при сверке списков: расхождение номеров у одного названия не обязательно означает, что одно из значений неверно.

Зачем проверять оба номера, если издание перешло на новую систему?

Причина в том, что старые записи не исчезают. Каталоги, библиотечные фонды, складские системы и внутренние базы издательств содержат миллионы строк, накопленных за десятилетия. Переписывать их принудительно никто не станет: это дорого и не даёт ощутимой выгоды.

Поэтому реальная система обычно должна принимать обе формы. Это не компромисс, а нормальное состояние любой долгоживущей схемы идентификации. И здесь важно не смешивать два разных поведения: принимать старый номер как корректный и пытаться сопоставить его с новым — разные операции, и вторая требует таблицы соответствий, которой может и не быть.

Отсюда практическое правило: проверка определяет, какой системе принадлежит строка, и применяет правило именно этой системы. Отказ, вызванный тем, что строка не похожа на современный номер, недопустим, если она является корректным номером прежней системы.

Как правильно подготовить строку к проверке

Порядок действий здесь такой же, как и в других системах нумерации, но с двумя поправками.

Первое — определите систему по количеству знаков после очистки, а не до неё. Разделители легко сбивают с толку и меняют визуальную длину строки.

Второе — приведите регистр букв к одному виду. Для правила регистр неразличим, но для сравнения строк он значим, и без выравнивания вы получите ложное расхождение.

Третье — не превращайте строку в число. Знак может быть буквой, и любое числовое преобразование либо отбросит его, либо приведёт к ошибке разбора. Работать нужно посимвольно.

Четвёртое — показывайте пользователю, что именно осталось после очистки. Когда рядом видно исходную и очищенную строку, спор о правильности ввода заканчивается сразу. Общая логика такой подготовки описана в материале про устройство проверки номера.

Пятое — проектируйте сообщения с учётом двух систем. Пользователю важно понимать, что именно не сошлось: система определена неверно, знаков не хватает или проверочный знак не совпал. Одна общая формулировка «номер неверен» не позволяет ничего исправить.

Что делать дальше

Выпишите, какие формы номеров встречаются в ваших данных — только современные, только прежние или обе, — и убедитесь, что ваша проверка определяет систему до вычислений, а не после. Отдельно проверьте поведение на строке с буквой в последней позиции и на строке с дефисами в неожиданных местах.

Затем отправьте несколько вымышленных строк в инструмент проверки: он покажет очищенный вид строки и объяснит, какое правило к ней применимо. Все номера и примеры в этой статье построены для объяснения устройства проверки и не описывают ни одну действительную книгу или публикацию, а пройденная проверка говорит лишь о согласованности записи и ничего не сообщает о самом издании.

Читать дальше

Статьи: Проверка ИНН