Число байтов предполагает кодировку ISO 8859-1.
10$*
1
,1$`
,1+
$_¶
(?<=(¶?.+)+)1
$#1$*
1{10}1?
,(1*)
$.1
Попробуйте онлайн!
объяснение
Еще одна реализация алгоритма ...% 11% 10 . Забавная часть работы с регулярным выражением состоит в том, что мы можем позаботиться об обоих вычислениях по модулю одновременно.
10$*
Инициализируйте строку до десяти 1
с.
1
,1$`
Замените каждый из них запятой, единицей и префиксом перед ним. Это дает ,1,11,...,1111111111
, то есть одинарный диапазон.
,1+
$_¶
Теперь замените каждый из элементов диапазона всей строкой, за которой следует перевод строки. Это дает нам сетку унарных чисел 10х10, обозначающую текущий столбец.
(?<=(¶?.+)+)1
$#1$*
Сопоставьте каждый 1
и определите, в каком ряду он находится, повторяя одно и то же число раз. Замените на 1
то, что много 1
с. Это умножает значения в каждой строке на 1-й индекс строки.
1{10}1?
Теперь давайте сделаем мод 11, мод 10 за один шаг. Чтобы сделать мод 11 , мы обычно просто удаляем все 1{11}
из строки, оставленной с остатками. А потом мы удалим 1{10}
после этого. Но если мы просто удалим десять 1
с плюс другое, если это возможно, жадность движка регулярных выражений будет делать для нас мод 11 как можно дольше, а если нет, то он попробует хотя бы мод 10 .
,(1*)
$.1
Наконец, мы просто конвертируем каждое число в десятичное, заменяя его длиной.