Разработка множительного инструмента на основе теоремы Слонимского

5 августа в 16:19

Множительный инструмент на основе теоремы Слонимского из песочницы

В XIX веке существовали интересные инструменты для умножения, построенные на основе теоремы Слонимского. Это «Снаряд для умножения» Слонимского и бруски Иоффе. Об этих инструментах в интернете невозможно ничего прочитать, кроме скудного описания внешнего вида, ни на что ни годного описания методики работы (в стиле «это работало как-то вот так»), заимствованного из книги «История вычислительной техники» И.А. Апокин, Л.Е. Майстров, «Наука» 1990 г. Описание не раскрывает принцип действия приборов. Литературу, на которую ссылается автор книги, достать неприемлемо сложно. Я решил вскрыть алгоритм работы прибора самостоятельно, а для демонстрации — изготовить собственный аналог.


Цель написания статьи


Эта статья для тех, кто, так же, как и я, интересуется историей вычислительной техники.
Теоретически, хорошее описание указанных инструментов должно быть в книге «Приборы и машины для механического производства арифметических действий: Описание устройства и оценка счет. приборов и машин» / В.Г. фон-Бооль. — Москва: типо-лит. т-ва И.Н. Кушнерев и К°, 1896. — 244 с.: ил., черт.; 24.
Но до Ленинской библиотеки, где она хранится, я так и не добрался, впрочем это и не важно. Главное, что в Интернете никакой информации, а я хотел, чтобы она была, потому что, надеюсь, не я один озадачился её поиском.

Почему местом размещения статьи выбран Хабр

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

Исходные данные, которые мне удалось найти


В интернете мне попалось описание интересного математического инструмента, разработанного З.Я. Слонимским.

В середине прошлого века З.Я. Слонимский (1810–1904) предложил простое множительное устройство, основанное на доказанной им теореме. Это устройство позволяло получать произведения любого числа (разрядность которого не превышала разрядности устройства) на любое однозначное число. Другими словами, это было нечто вроде механической таблицы умножения любого числа на 2, 3, 4,…, 9. Позднее теорема Слонимского была использована при создании другого простого множительного устройства (счетных брусков Иоффе).

На основе своей теоремы Слонимский составил таблицу, состоящую из 280 столбцов — по 9 чисел в каждом. Эта таблица нанесена на цилиндры, являющиеся основным элементом устройства. Цилиндры могут перемещаться в двух направлениях: вдоль оси и вокруг нее. На ось, на которой находится цилиндр, надеты также два мини-цилиндра. На поверхность одного мини-цилиндра нанесены числа от 0 до 9, а на поверхность другого — буквы a, b, c, d и цифры (от 1 до 7).

На крышке прибора находятся 11 рядов окошек считывания, в первом (нижнем) ряду видно устанавливаемое число (множимое). Во втором и третьем рядах окошек при установке множимого появляются буквы и цифры. Их сочетание служит ключом для оператора. Благодаря ему он знает, какой винт и насколько нужно повернуть. После этого в 4–11-м рядах окошек появляются числа: в 4-м ряду — произведение множимого на 2, в 5-м — на 3, в 6 — на 4 и т. д. Таким образом, в нашем распоряжении оказывается произведение множимого на все разряды множителя. Теперь остается обычным способом (на бумаге) сложить эти результаты и получить искомое произведение.


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

Счетные бруски были предложены Иоффе в 1881 г. В 1882 г. на Всероссийской выставке они получили почетный отзыв. Принцип работы с ними основан на теореме Слонимского. Прибор Иоффе состоял из 70 четырехгранных брусков. Это позволило разместить на 280 гранях 280 столбцов таблицы Слонимского. Каждый брусок и каждый столбец были помечены, для чего использовались арабские и римские цифры и буквы латинского алфавита. Латинские буквы и римские цифры служили для указания порядка, в котором нужно было размещать бруски, чтобы получить произведение множимого на одноразрядный множитель. Полученные произведения (а их столько, сколько разрядов во множителе) складывались (точно так же как и при использовании множительного устройства Слонимского) с помощью карандаша и бумаги.


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

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

Бруски Люка и Жанойя тоже интересная тема, о которой информации ещё меньше, но, статья не о них.

Некоторый результат дал поиск теоремы Слонимского.
Вот что пишет Вестник Сыктывкарского университета. Сер.1. Вып.13.2011. УДК 512.6, 517.987 «К 200-летию со дня рождения создателей вычислительных машин, представленных к демидовской премии, Х.З. Слонимского и Г. Куммера». В.П. Одинец

1. Пусть имеем натуральное число в системе J с основанием r, записанное поразрядно amam-1…a2a1. Умножим его последовательно на 1, 2, 3, …, r-1, и полученные произведения подпишем одно под другим с соблюдением правила разрядов. В результате получим m+1 столбцов (свободные места слева заполним нулями), каждый из которых содержит r-1 цифру. Расположение цифр в столбце назовём представлением столбца. Умножение всевозможных чисел на 1, 2, …, r-1 порождает бесконечное множество представлений. Однако при этом число различных представлений конечно и задаётся формулой


Где φ (n) — функция Эйлера, заданная на множестве N натуральных чисел, значение которой (для любого n ∈ N) равно количеству натуральных чисел, не превосходящих n и взаимно простых с n.

2. Пусть теперь r = 10, т.е. система счисления J десятичная. Тогда произведение любой дроби, заключённой между двумя соседними Фареевыми дробями pi/qi и pi+1/qi+1 на числа 1, 2, 3, …, 9 порождает для целых частей полученных чисел то же представление, что и для целых частей последовательности произведений на числа 1, 2, 3, … 9 Фареевой дроби pi/qi

Полная статья находится здесь.

Формулировка мне не пригодилась. Доказательство теоремы я искать не стал, так сказать, поверил Слонимскому на слово. Важным для моей задачи моментом этой теоремы было то, что «число различных представлений конечно и задаётся формулой …». И, как следует из теоремы и из конструкции прибора Слонимского, для десятичной системы существует 280 представлений столбцов.

Таблица Слонимского


Для воссоздания прибора, действующего на основе той же математической идеи, я получил таблицу Слонимского по алгоритму, описанному в вышеуказанной статье.
Я вооружился FireBug и начал вычислять.
Далее в статье будут встречаться фрагменты JavaScript. Этот язык — основа моей профессиональной деятельности, поэтому я использовал его. Тем не менее, я полагаю, что использованные мной формулы достаточно просты, чтобы специфика языка не затрудняла их понимания, а в некоторых местах я специально использовал не принятые в JavaScript приёмы, чтобы сделать код более понятным для программистов на других языках.

Согласно статье, для построения основной таблицы Слонимского для десятичной системы счисления, была взята последовательность Фарея
F (9) = {0, 1/9, 1/8, 1/7, 1/6, 1/5, 2/9, ¼, 2/7, ⅓, 3/8, 2/5, 3/7, 4/9, ½, 5/9, 4/7, 3/5, 5/8, 2/3, 5/7, ¾, 7/9, 4/5, 5/6, 6/7, 7/8, 8/9, 1}. 28 чисел последовательности F (9), кроме 1, были умножены каждое на ряд чисел от 0 до 9 и взяты только целые части полученных произведений. Полученные столбцы чисел пронумерованы в порядке возрастания чисел Фарея начиная с 0.

Значения таблицы получены по формуле
B[c][r] = Math.floor(F[c]*r);

Здесь c — номер столбца, r — номер строки.

Основная таблица Слонимского (B)
r \ c 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1
3 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2
4 0 0 0 0 0 0 0 1 1 1 1 1 1 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3
5 0 0 0 0 0 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 4 4 4 4 4
6 0 0 0 0 1 1 1 1 1 2 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5
7 0 0 0 1 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 5 6 6 6
8 0 0 1 1 1 1 1 2 2 2 3 3 3 3 4 4 4 4 5 5 5 6 6 6 6 6 7 7
9 0 1 1 1 1 1 2 2 2 3 3 3 3 4 4 5 5 5 5 6 6 6 7 7 7 7 7 8

Для получения полной таблицы Слонимского была построена вспомогательная таблица P, представляющая собой таблицу умножения чисел от 0 до 9 в представлении Пифагора.
P[c][r] = c*r;
r \ c 0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9
2 0 2 4 6 8 10 12 14 16 18
3 0 3 6 9 12 15 18 21 24 27
4 0 4 8 12 16 20 24 28 32 36
5 0 5 10 15 20 25 30 35 40 45
6 0 6 12 18 24 30 36 42 48 54
7 0 7 14 21 28 35 42 49 56 63
8 0 8 16 24 32 40 48 56 64 72
9 0 9 18 27 36 45 54 63 72 81


Каждый столбец таблицы B векторно сложен с каждым столбцом таблицы P. Таким образом получена промежуточная таблица DU, содержащая 280 столбцов.
DU[b*10+p][r] = B[b][r] + P[p][r];
DU
c 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
b 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1
r \ p 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
2 0 2 4 6 8 10 12 14 16 18 0 2 4 6 8 10 12 14 16 18
3 0 3 6 9 12 15 18 21 24 27 0 3 6 9 12 15 18 21 24 27
4 0 4 8 12 16 20 24 28 32 36 0 4 8 12 16 20 24 28 32 36
5 0 5 10 15 20 25 30 35 40 45 0 5 10 15 20 25 30 35 40 45
6 0 6 12 18 24 30 36 42 48 54 0 6 12 18 24 30 36 42 48 54
7 0 7 14 21 28 35 42 49 56 63 0 7 14 21 28 35 42 49 56 63
8 0 8 16 24 32 40 48 56 64 72 0 8 16 24 32 40 48 56 64 72
9 0 9 18 27 36 45 54 63 72 81 1 10 19 28 37 46 55 64 73 82
Продолжение
c 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
b 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3 3
r \ p 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
2 0 2 4 6 8 10 12 14 16 18 0 2 4 6 8 10 12 14 16 18
3 0 3 6 9 12 15 18 21 24 27 0 3 6 9 12 15 18 21 24 27
4 0 4 8 12 16 20 24 28 32 36 0 4 8 12 16 20 24 28 32 36
5 0 5 10 15 20 25 30 35 40 45 0 5 10 15 20 25 30 35 40 45
6 0 6 12 18 24 30 36 42 48 54 0 6 12 18 24 30 36 42 48 54
7 0 7 14 21 28 35 42 49 56 63 1 8 15 22 29 36 43 50 57 64
8 1 9 17 25 33 41 49 57 65 73 1 9 17 25 33 41 49 57 65 73
9 1 10 19 28 37 46 55 64 73 82 1 10 19 28 37 46 55 64 73 82
Продолжение
c 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
b 4 4 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 5 5
r \ p 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
2 0 2 4 6 8 10 12 14 16 18 0 2 4 6 8 10 12 14 16 18
3 0 3 6 9 12 15 18 21 24 27 0 3 6 9 12 15 18 21 24 27
4 0 4 8 12 16 20 24 28 32 36 0 4 8 12 16 20 24 28 32 36
5 0 5 10 15 20 25 30 35 40 45 1 6 11 16 21 26 31 36 41 46
6 1 7 13 19 25 31 37 43 49 55 1 7 13 19 25 31 37 43 49 55
7 1 8 15 22 29 36 43 50 57 64 1 8 15 22 29 36 43 50 57 64
8 1 9 17 25 33 41 49 57 65 73 1 9 17 25 33 41 49 57 65 73
9 1 10 19 28 37 46 55 64 73 82 1 10 19 28 37 46 55 64 73 82
Продолжение
c 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
b 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7
r \ p 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
2 0 2 4 6 8 10 12 14 16 18 0 2 4 6 8 10 12 14 16 18
3 0 3 6 9 12 15 18 21 24 27 0 3 6 9 12 15 18 21 24 27
4 0 4 8 12 16 20 24 28 32 36 1 5 9 13 17 21 25 29 33 37
5 1 6 11 16 21 26 31 36 41 46 1 6 11 16 21 26 31 36 41 46
6 1 7 13 19 25 31 37 43 49 55 1 7 13 19 25 31 37 43 49 55
7 1 8 15 22 29 36 43 50 57 64 1 8 15 22 29 36 43 50 57 64
8 1 9 17 25 33 41 49 57 65 73 2 10 18 26 34 42 50 58 66 74
9 2 11 20 29 38 47 56 65 74 83 2 11 20 29 38 47 56 65 74 83
Продолжение
c 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
b 8 8 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 9 9
r \ p 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
2 0 2 4 6 8 10 12 14 16 18 0 2 4 6 8 10 12 14 16 18
3 0 3 6 9 12 15 18 21 24 27 1 4 7 10 13 16 19 22 25 28
4 1 5 9 13 17 21 25 29 33 37 1 5 9 13 17 21 25 29 33 37
5 1 6 11 16 21 26 31 36 41 46 1 6 11 16 21 26 31 36 41 46
6 1 7 13 19 25 31 37 43 49 55 2 8 14 20 26 32 38 44 50 56
7 2 9 16 23 30 37 44 51 58 65 2 9 16 23 30 37 44 51 58 65
8 2 10 18 26 34 42 50 58 66 74 2 10 18 26 34 42 50 58 66 74
9 2 11 20 29 38 47 56 65 74 83 3 12 21 30 39 48 57 66 75 84
Продолжение
c 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119
b 10 10 10 10 10 10 10 10 10 10 11 11 11 11 11 11 11 11 11 11
r \ p 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
2 0 2 4 6 8 10 12 14 16 18 0 2 4 6 8 10 12 14 16 18
3 1 4 7 10 13 16 19 22 25 28 1 4 7 10 13 16 19 22 25 28
4 1 5 9 13 17 21 25 29 33 37 1 5 9 13 17 21 25 29 33 37
5 1 6 11 16 21 26 31 36 41 46 2 7 12 17 22 27 32 37 42 47
6 2 8 14 20 26 32 38 44 50 56 2 8 14 20 26 32 38 44 50 56
7 2 9 16 23 30 37 44 51 58 65 2 9 16 23 30 37 44 51 58 65
8 3 11 19 27 35 43 51 59 67 75 3 11 19 27 35 43 51 59 67 75
9 3 12 21 30 39 48 57 66 75 84 3 12 21 30 39 48 57 66 75 84
Продолжение
c 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
b 12 12 12 12 12 12 12 12 12 12 13 13 13 13 13 13 13 13 13 13
r \ p 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
2 0 2 4 6 8 10 12 14 16 18 0 2 4 6 8 10 12 14 16 18
3 1 4 7 10 13 16 19 22 25 28 1 4 7 10 13 16 19 22 25 28
4 1 5 9 13 17 21 25 29 33 37 1 5 9 13 17 21 25 29 33 37
5 2 7 12 17 22 27 32 37 42 47 2 7 12 17 22 27 32 37 42 47
6 2 8 14 20 26 32 38 44 50 56 2 8 14 20 26 32 38 44 50 56
7 3 10 17 24 31 38 45 52 59 66 3 10 17 24 31 38 45 52 59 66
8 3 11 19 27 35 43 51 59 67 75 3 11 19 27 35 43 51 59 67 75
9 3 12 21 30 39 48 57 66 75 84 4 13 22 31 40 49 58 67 76 85
Продолжение
c 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
b 14 14 14 14 14 14 14 14 14 14 15 15 15 15 15 15 15 15 15 15
r \ p 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
2 1 3 5 7 9 11 13 15 17 19 1 3 5 7 9 11 13 15 17 19
3 1 4 7 10 13 16 19 22 25 28 1 4 7 10 13 16 19 22 25 28
4 2 6 10 14 18 22 26 30 34 38 2 6 10 14 18 22 26 30 34 38
5 2 7 12 17 22 27 32 37 42 47 2 7 12 17 22 27 32 37 42 47
6 3 9 15 21 27 33 39 45 51 57 3 9 15 21 27 33 39 45 51 57
7 3 10 17 24 31 38 45 52 59 66 3 10 17 24 31 38 45 52 59 66
8 4 12 20 28 36 44 52 60 68 76 4 12 20 28 36 44 52 60 68 76
9 4 13 22 31 40 49 58 67 76 85 5 14 23 32 41 50 59 68 77 86
Продолжение
c 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179
b 16 16 16 16 16 16 16 16 16 16 17 17 17 17 17 17 17 17 17 17
r \ p 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
2 1 3 5 7 9 11 13 15 17 19 1 3 5 7 9 11 13 15 17 19
3 1 4 7 10 13 16 19 22 25 28 1 4 7 10 13 16 19 22 25 28
4 2 6 10 14 18 22 26 30 34 38 2 6 10 14 18 22 26 30 34 38
5 2 7 12 17 22 27 32 37 42 47 3 8 13 18 23 28 33 38 43 48
6 3 9 15 21 27 33 39 45 51 57 3 9 15 21 27 33 39 45 51 57
7 4 11 18 25 32 39 46 53 60 67 4 11 18 25 32 39 46 53 60 67
8 4 12 20 28 36 44 52 60 68 76 4 12 20 28 36 44 52 60 68 76
9 5 14 23 32 41 50 59 68 77 86 5 14 23 32 41 50 59 68 77 86
Продолжение
c 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199
b 18 18 18 18 18 18 18 18 18 18 19 19 19 19 19 19 19 19 19 19
r \ p 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
2 1 3 5 7 9 11 13 15 17 19 1 3 5 7 9 11 13 15 17 19
3 1 4 7 10 13 16 19 22 25 28 2 5 8 11 14 17 20 23 26 29
4 2 6 10 14 18 22 26 30 34 38 2 6 10 14 18 22 26 30 34 38
5 3 8 13 18 23 28 33 38 43 48 3 8 13 18 23 28 33 38 43 48
6 3 9 15 21 27 33 39 45 51 57 4 10 16 22 28 34 40 46 52 58
7 4 11 18 25 32 39 46 53 60 67 4 11 18 25 32 39 46 53 60 67
8 5 13 21 29 37 45 53 61 69 77 5 13 21 29 37 45 53 61 69 77
9 5 14 23 32 41 50 59 68 77 86 6 15 24 33 42 51 60 69 78 87
Продолжение
c 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219
b 20 20 20 20 20 20 20 20 20 20 21 21 21 21 21 21 21 21 21 21
r \ p 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
2 1 3 5 7 9 11 13 15 17 19 1 3 5 7 9 11 13 15 17 19
3 2 5 8 11 14 17 20 23 26 29 2 5 8 11 14 17 20 23 26 29
4 2 6 10 14 18 22 26 30 34 38 3 7 11 15 19 23 27 31 35 39
5 3 8 13 18 23 28 33 38 43 48 3 8 13 18 23 28 33 38 43 48
6 4 10 16 22 28 34 40 46 52 58 4 10 16 22 28 34 40 46 52 58
7 5 12 19 26 33 40 47 54 61 68 5 12 19 26 33 40 47 54 61 68
8 5 13 21 29 37 45 53 61 69 77 6 14 22 30 38 46 54 62 70 78
9 6 15 24 33 42 51 60 69 78 87 6 15 24 33 42 51 60 69 78 87
Продолжение
c 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
b 22 22 22 22 22 22 22 22 22 22 23 23 23 23 23 23 23 23 23 23
r \ p 0 1 2 3 4 5 6 7 8 9 0 1© Habrahabr.ru