📜 ⬆️ ⬇️

A multiplying tool based on the Slonimsky theorem

In the XIX century there were interesting tools for multiplication, built on the basis of the Slonimsky theorem. This is the “Snonad for multiplication” of Slonim and loffe bars. It is impossible to read anything about these tools on the Internet, except for a meager description of the appearance, nothing of a good description of the method of work (in the style of “it worked like this”), borrowed from the book “The History of Computing Machinery” I.A. Apokin, L.E. Maistrov, "Science" 1990 Description does not disclose the principle of operation of devices. The literature referenced by the author of the book, is unacceptably difficult to get. I decided to open the algorithm of the device operation on my own, and for a demonstration - to make my own analogue.


Purpose of writing an article


This article is for those who, like me, are interested in the history of computing technology.
Theoretically, a good description of the specified tools should be in the book “Instruments and Machines for the Mechanical Production of Arithmetic Actions: Description of the Device and Score Score. devices and machines ”/ V.G. von bool. - Moscow: typ. t-va I.N. Kushnerev and Co., 1896. - 244 pp., Ill., Devil .; 24
But I did not get to the Lenin Library, where it is stored, however it does not matter. The main thing is that there is no information on the Internet, and I wanted it to be, because, I hope, I am not the only one who was puzzled by her search.

Why Habr was chosen as an article placement

The article is devoted, albeit ancient, but still computer technology. Therefore, suitable for Habr on topics.
Habr is well indexed, and I need the information provided in the article to be found. In addition, the community will help me to polish the article in terms of the quality of presentation.
')

The source data that I managed to find


On the Internet, I came across a description of an interesting mathematical tool developed by Z.Ya. Slonimsky .

In the middle of the last century, Z.Ya. Slonimsky (1810-1904) proposed a simple multiplying device based on a theorem proved by him. This device made it possible to produce works of any number (the width of which did not exceed the capacity of the device) by any single-digit number. In other words, it was something like a mechanical multiplication table of any number by 2, 3, 4, ..., 9. Later, Slonimsky's theorem was used to create another simple multiplying device (Ioffe countable bars).

On the basis of his theorem, Slonimsky created a table consisting of 280 columns — 9 numbers each. This table is applied to the cylinders, which are the main element of the device. Cylinders can move in two directions: along the axis and around it. There are also two mini-cylinders on the axis on which the cylinder is located. On the surface of one mini-cylinder there are numbers from 0 to 9, and on the surface of another - the letters a, b, c, d and numbers (from 1 to 7).

On the lid of the device are 11 rows of reading windows, in the first (bottom) row you can see the set number (multiplicand). Letters and numbers appear in the second and third rows of windows when setting a multiplicand. Their combination serves as a key for the operator. Thanks to him, he knows which screw and how much to turn. After that, numbers appear in the 4-11th row of the windows: in the 4th row - the product of the multiplicand by 2, in the 5th row - by 3, in 6 - by 4, etc. Thus, we have the work multiplier for all digits of the multiplier. It now remains in the usual way (on paper) to add up these results and obtain the desired product.


Reading this caused me, as probably you, a reaction: nothing is clear. But the description of the Ioffe bars already suggests some thoughts:

Counting bars were offered to Ioffe in 1881. In 1882, they received an honorable review at the All-Russian Exhibition. The principle of working with them is based on the Slonimsky theorem. Ioffe device consisted of 70 tetrahedral bars. This made it possible to place 280 columns of the Slonim table on 280 faces. Each bar and each column was labeled, which used Arabic and Roman numerals and letters of the Latin alphabet. Latin letters and Roman numerals served to indicate the order in which it was necessary to place the bars in order to obtain the product of a multiplicand by a one-bit factor. The resulting works (and there are as many as the digits in the multiplier) were added (just like when using the Slonimsky multiplier) using pencil and paper.


Those. it turns out that, having 280 columns with numbers, one can add up from them a table of products of any arbitrary number into a series of single-digit numbers.

From the same place:
Bool, in 1896, comes to the following conclusion: “Ioffe bars simplify the multiplication of numbers even more than the Napier sticks and their modifications. After the simple witty bars of Luc and Zhanoya, this is the best of the arithmetic multiplication instruments. ”

The bars of Luke and Zhanoya are also an interesting topic, about which there is even less information, but the article is not about them.

Some result was given by the search for the Slonimsky theorem.
Here is what the Bulletin of the Syktyvkar University writes . Ser.1. Issue 13.2011. UDC 512.6, 517.987 “On the 200th anniversary of the creators of computers submitted to the Demidov Prize, Kh.Z. Slonimsky and G. Kummer ". V.P. Odinets

1. Suppose we have a positive integer in the system J with the base r, written one by one a m a m-1 ... a 2 a 1 . Multiply it sequentially by 1, 2, 3, ..., r-1, and the resulting works will be signed one under the other in compliance with the rules of discharges. As a result, we get m + 1 columns (fill the empty spaces on the left with zeros), each of which contains r-1 digits. The location of the numbers in the column is called the column representation . Multiplying all possible numbers by 1, 2, ..., r-1 generates an infinite number of representations. However, the number of different representations is of course given by the formula


Where φ (n) is the Euler function defined on the set N of natural numbers, whose value (for any n ∈ N) is equal to the number of natural numbers not exceeding n and mutually prime with n.

2. Now let r = 10, i.e. J number system is decimal. Then the product of any fraction enclosed between two neighboring Farieva fractions p i / q i and p i + 1 / q i + 1 by the numbers 1, 2, 3, ..., 9 generates for the integral parts of the numbers obtained the same representation as and for integer parts of the sequence of products on the numbers 1, 2, 3, ... 9 of the Faroev fraction p i / q i

The full article is here .

The wording was not useful to me. I did not begin to search for the proof of the theorem, so to speak, I believed Slonimsky for the word. An important moment for my task of this theorem was that "the number of different representations is of course given by the formula ...". And, as follows from the theorem and from the design of the Slonimsky device, for the decimal system there are 280 column representations.

Slonimsky table


To recreate a device that operates on the basis of the same mathematical idea, I obtained the table of Slonimsky according to the algorithm described in the above article.
I armed myself with a firebug and began to calculate.
Further in the article there will be javascript fragments. This language is the basis of my professional activity, so I used it. Nevertheless, I believe that the formulas I used are simple enough so that the specificity of the language does not make them difficult to understand, and in some places I specifically used techniques that are not accepted in JavaScript to make the code more understandable for programmers in other languages.

According to the article, to construct the main Slonimsky table for the decimal number system, the Farey sequence was taken.
F (9) = {0, 1/9, 1/8, 1/7, 1/6, 1/5, 2/9, 1/4, 2/7, 1/3, 3/8, 2 / 5, 3/7, 4/9, 1/2, 5/9, 4/7, 3/5, 5/8, 2/3, 5/7, 3/4, 7/9, 4/5, 5/6, 6/7, 7/8, 8/9, 1}. The 28 numbers of the sequence F (9), except 1, were each multiplied by a series of numbers from 0 to 9 and only whole parts of the resulting works were taken. The resulting columns of numbers are numbered in ascending order of Farey numbers starting from 0.

The values ​​of the table are obtained by the formula
B[c][r] = Math.floor(F[c]*r); 

Here c is the column number, r is the row number.

Base Table of Slonim (B)
r \ c0one23fourfive67eight9teneleven12131415sixteen1718nineteen2021222324252627
00000000000000000000000000000
one0000000000000000000000000000
200000000000000oneoneoneoneoneoneoneoneoneoneoneoneoneone
3000000000oneoneoneoneoneoneoneoneoneone222222222
four0000000oneoneoneoneoneoneone22222223333333
five00000oneoneoneoneoneone222222333333fourfourfourfourfour
60000oneoneoneoneone2222233333fourfourfourfourfourfivefivefivefive
7000oneoneoneoneone22223333fourfourfourfourfivefivefivefivefive666
eight00oneoneoneoneone2223333fourfourfourfourfivefivefive6666677
90oneoneoneoneone2223333fourfourfivefivefivefive66677777eight

To obtain the complete Slonim table, an auxiliary table P was constructed, which is a multiplication table of numbers from 0 to 9 in the Pythagorean representation.
 P[c][r] = c*r; 
r \ c0one23fourfive67eight9
00000000000
one0one23fourfive67eight9
202four6eightten1214sixteen18
30369121518212427
four0foureight12sixteen2024283236
five0fiveten152025thirty354045
606121824thirty36424854
7071421283542495663
eight0eightsixteen24324048566472
9091827364554637281


Each column of table B is vectorially combined with each column of table P. Thus, an intermediate table DU containing 280 columns is obtained.
 DU[b*10+p][r] = B[b][r] + P[p][r]; 
DU
c0one23fourfive67eight9teneleven12131415sixteen1718nineteen
b0000000000oneoneoneoneoneoneoneoneoneone
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
202four6eightten1214sixteen1802four6eightten1214sixteen18
303691215182124270369121518212427
four0foureight12sixteen20242832360foureight12sixteen2024283236
five0fiveten152025thirty3540450fiveten152025thirty354045
606121824thirty3642485406121824thirty36424854
7071421283542495663071421283542495663
eight0eightsixteen243240485664720eightsixteen24324048566472
9091827364554637281onetennineteen28374655647382
Continuation
c20212223242526272829thirty313233343536373839
b22222222223333333333
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
202four6eightten1214sixteen1802four6eightten1214sixteen18
303691215182124270369121518212427
four0foureight12sixteen20242832360foureight12sixteen2024283236
five0fiveten152025thirty3540450fiveten152025thirty354045
606121824thirty3642485406121824thirty36424854
7071421283542495663oneeight1522293643505764
eightone91725334149576573one91725334149576573
9onetennineteen28374655647382onetennineteen28374655647382
Continuation
c4041424344454647484950515253545556575859
bfourfourfourfourfourfourfourfourfourfourfivefivefivefivefivefivefivefivefivefive
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
202four6eightten1214sixteen1802four6eightten1214sixteen18
303691215182124270369121518212427
four0foureight12sixteen20242832360foureight12sixteen2024283236
five0fiveten152025thirty354045one6elevensixteen212631364146
6one713nineteen253137434955one713nineteen253137434955
7oneeight1522293643505764oneeight1522293643505764
eightone91725334149576573one91725334149576573
9onetennineteen28374655647382onetennineteen28374655647382
Continuation
c6061626364656667686970717273747576777879
b66666666667777777777
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
202four6eightten1214sixteen1802four6eightten1214sixteen18
303691215182124270369121518212427
four0foureight12sixteen2024283236onefive913172125293337
fiveone6elevensixteen212631364146one6elevensixteen212631364146
6one713nineteen253137434955one713nineteen253137434955
7oneeight1522293643505764oneeight1522293643505764
eightone917253341495765732ten1826344250586674
92eleven20293847566574832eleven2029384756657483
Continuation
c8081828384858687888990919293949596979899
beighteighteighteighteighteighteighteighteighteight9999999999
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
202four6eightten1214sixteen1802four6eightten1214sixteen18
30369121518212427onefour7ten13sixteennineteen222528
fouronefive913172125293337onefive913172125293337
fiveone6elevensixteen212631364146one6elevensixteen212631364146
6one713nineteen2531374349552eight1420263238445056
729sixteen23thirty374451586529sixteen23thirty3744515865
eight2ten18263442505866742ten1826344250586674
92eleven202938475665748331221thirty394857667584
Continuation
c100101102103104105106107108109110111112113114115116117118119
btentententententententententeneleveneleveneleveneleveneleveneleveneleveneleveneleveneleven
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
202four6eightten1214sixteen1802four6eightten1214sixteen18
3onefour7ten13sixteennineteen222528onefour7ten13sixteennineteen222528
fouronefive913172125293337onefive913172125293337
fiveone6elevensixteen212631364146271217222732374247
62eight14202632384450562eight1420263238445056
729sixteen23thirty374451586529sixteen23thirty3744515865
eight3elevennineteen273543515967753elevennineteen27354351596775
931221thirty39485766758431221thirty394857667584
Continuation
c120121122123124125126127128129130131132133134135136137138139
b1212121212121212121213131313131313131313
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
202four6eightten1214sixteen1802four6eightten1214sixteen18
3onefour7ten13sixteennineteen222528onefour7ten13sixteennineteen222528
fouronefive913172125293337onefive913172125293337
five271217222732374247271217222732374247
62eight14202632384450562eight1420263238445056
73ten17243138455259663ten1724313845525966
eight3elevennineteen273543515967753elevennineteen27354351596775
931221thirty394857667584four132231404958677685
Continuation
c140141142143144145146147148149150151152153154155156157158159
b1414141414141414141415151515151515151515
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
2one3five79eleven131517nineteenone3five79eleven131517nineteen
3onefour7ten13sixteennineteen222528onefour7ten13sixteennineteen222528
four26ten14182226thirty343826ten14182226thirty3438
five271217222732374247271217222732374247
6391521273339455157391521273339455157
73ten17243138455259663ten1724313845525966
eightfour122028364452606876four122028364452606876
9four132231404958677685five142332415059687786
Continuation
c160161162163164165166167168169170171172173174175176177178179
bsixteensixteensixteensixteensixteensixteensixteensixteensixteensixteen17171717171717171717
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
2one3five79eleven131517nineteenone3five79eleven131517nineteen
3onefour7ten13sixteennineteen222528onefour7ten13sixteennineteen222528
four26ten14182226thirty343826ten14182226thirty3438
five2712172227323742473eight1318232833384348
6391521273339455157391521273339455157
7foureleven1825323946536067foureleven1825323946536067
eightfour122028364452606876four122028364452606876
9five142332415059687786five142332415059687786
Continuation
c180181182183184185186187188189190191192193194195196197198199
b18181818181818181818nineteennineteennineteennineteennineteennineteennineteennineteennineteennineteen
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
2one3five79eleven131517nineteenone3five79eleven131517nineteen
3onefour7ten13sixteennineteen2225282fiveeighteleven141720232629
four26ten14182226thirty343826ten14182226thirty3438
five3eight13182328333843483eight1318232833384348
6391521273339455157fourtensixteen22283440465258
7foureleven1825323946536067foureleven1825323946536067
eightfive132129374553616977five132129374553616977
9five1423324150596877866152433425160697887
Continuation
c200201202203204205206207208209210211212213214215216217218219
b2020202020202020202021212121212121212121
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
2one3five79eleven131517nineteenone3five79eleven131517nineteen
32fiveeighteleven1417202326292fiveeighteleven141720232629
four26ten14182226thirty343837eleven15nineteen2327313539
five3eight13182328333843483eight1318232833384348
6fourtensixteen22283440465258fourtensixteen22283440465258
7five12nineteen26334047546168five12nineteen26334047546168
eightfive13212937455361697761422thirty384654627078
961524334251606978876152433425160697887
Continuation
c220221222223224225226227228229230231232233234235236237238239
b2222222222222222222223232323232323232323
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
2one3five79eleven131517nineteenone3five79eleven131517nineteen
32fiveeighteleven1417202326292fiveeighteleven141720232629
four37eleven15nineteen232731353937eleven15nineteen2327313539
five3eight1318232833384348four914nineteen242934394449
6fourtensixteen22283440465258fourtensixteen22283440465258
7five12nineteen26334047546168five12nineteen26334047546168
eight61422thirty38465462707861422thirty384654627078
97sixteen25344352617079887sixteen2534435261707988
Continuation
c240241242243244245246247248249250251252253254255256257258259
b2424242424242424242425252525252525252525
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
2one3five79eleven131517nineteenone3five79eleven131517nineteen
32fiveeighteleven1417202326292fiveeighteleven141720232629
four37eleven15nineteen232731353937eleven15nineteen2327313539
fivefour914nineteen242934394449four914nineteen242934394449
6fiveeleven1723293541475359fiveeleven1723293541475359
7five12nineteen263340475461686132027344148556269
eight61422thirty38465462707861422thirty384654627078
97sixteen25344352617079887sixteen2534435261707988
Continuation
c260261262263264265266267268269270271272273274275276277278279
b2626262626262626262627272727272727272727
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
2one3five79eleven131517nineteenone3five79eleven131517nineteen
32fiveeighteleven1417202326292fiveeighteleven141720232629
four37eleven15nineteen232731353937eleven15nineteen2327313539
fivefour914nineteen242934394449four914nineteen242934394449
6fiveeleven1723293541475359fiveeleven1723293541475359
761320273441485562696132027344148556269
eight71523313947556371797152331394755637179
97sixteen2534435261707988eight172635445362718089


On its basis, two tables U and D were constructed, containing, respectively, the digits of the units and the tens of the amounts received.
 U[c][r] = DU[c][r] % 10; D[c][r] = Math.floor(DU[c][r]/10); 

U
c0one23fourfive67eight9teneleven12131415sixteen1718nineteen
b0000000000oneoneoneoneoneoneoneoneoneone
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
202four6eight02four6eight02four6eight02four6eight
303692fiveeightonefour703692fiveeightonefour7
four0foureight260foureight260foureight260foureight26
five0five0five0five0five0five0five0five0five0five0five
6062eightfour062eightfour062eightfour062eightfour
707fouroneeightfive296307fouroneeightfive2963
eight0eight6four20eight6four20eight6four20eight6four2
909eight76fivefour32oneone09eight76fivefour32
q00fiveeighteleven1417nineteen23270onefiveeighteleven1417nineteen2327
Continuation
c20212223242526272829thirty313233343536373839
b22222222223333333333
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
202four6eight02four6eight02four6eight02four6eight
303692fiveeightonefour703692fiveeightonefour7
four0foureight260foureight260foureight260foureight26
five0five0five0five0five0five0five0five0five0five0five
6062eightfour062eightfour062eightfour062eightfour
707fouroneeightfive2963oneeightfive296307four
eightone97five3one97five3one97five3one97five3
9one09eight76fivefour32one09eight76fivefour32
q0onefiveeighteleven1417nineteen23270onefiveeighteleven1417202327
Continuation
c4041424344454647484950515253545556575859
bfourfourfourfourfourfourfourfourfourfourfivefivefivefivefivefivefivefivefivefive
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
202four6eight02four6eight02four6eight02four6eight
303692fiveeightonefour703692fiveeightonefour7
four0foureight260foureight260foureight260foureight26
five0five0five0five0five0fiveone6one6one6one6one6
6one739fiveone739fiveone739fiveone739five
7oneeightfive296307fouroneeightfive296307four
eightone97five3one97five3one97five3one97five3
9one09eight76fivefour32one09eight76fivefour32
q0onefiveeighteleven14172023270onefiveeighteleven1417202327
Continuation
c6061626364656667686970717273747576777879
b66666666667777777777
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
202four6eight02four6eight02four6eight02four6eight
303692fiveeightonefour703692fiveeightonefour7
four0foureight260foureight26onefive937onefive937
fiveone6one6one6one6one6one6one6one6one6one6
6one739fiveone739fiveone739fiveone739five
7oneeightfive296307fouroneeightfive296307four
eightone97five3one97five320eight6four20eight6four
92one09eight76fivefour32one09eight76fivefour3
q0one6eighteleven1417202327026eighteleven1418202327
Continuation
c8081828384858687888990919293949596979899
beighteighteighteighteighteighteighteighteighteight9999999999
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
202four6eight02four6eight02four6eight02four6eight
303692fiveeightonefour7onefour703692fiveeight
fouronefive937onefive937onefive937onefive937
fiveone6one6one6one6one6one6one6one6one6one6
6one739fiveone739five2eightfour062eightfour06
7296307fouroneeightfive296307fouroneeightfive
eight20eight6four20eight6four20eight6four20eight6four
92one09eight76fivefour332one09eight76fivefour
q026eight1214182023270269121418202427
Continuation
c100101102103104105106107108109110111112113114115116117118119
btentententententententententeneleveneleveneleveneleveneleveneleveneleveneleveneleveneleven
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
202four6eight02four6eight02four6eight02four6eight
3onefour703692fiveeightonefour703692fiveeight
fouronefive937onefive937onefive937onefive937
fiveone6one6one6one6one62727272727
62eightfour062eightfour062eightfour062eightfour06
7296307fouroneeightfive296307fouroneeightfive
eight3one97five3one97five3one97five3one97five
932one09eight76fivefour32one09eight76fivefour
q02691214182024270269121418202427
Continuation
c120121122123124125126127128129130131132133134135136137138139
b1212121212121212121213131313131313131313
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
202four6eight02four6eight02four6eight02four6eight
3onefour703692fiveeightonefour703692fiveeight
fouronefive937onefive937onefive937onefive937
five27272727272727272727
62eightfour062eightfour062eightfour062eightfour06
7307fouroneeightfive296307fouroneeightfive296
eight3one97five3one97five3one97five3one97five
932one09eight76fivefourfour32one09eight76five
q03691214182024270369131418202427
Continuation
c140141142143144145146147148149150151152153154155156157158159
b1414141414141414141415151515151515151515
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
2one3five79one3five79one3five79one3five79
3onefour703692fiveeightonefour703692fiveeight
four260foureight260foureight260foureight260foureight
five27272727272727272727
639fiveone739fiveone739fiveone739fiveone7
7307fouroneeightfive296307fouroneeightfive296
eightfour20eight6four20eight6four20eight6four20eight6
9four32one09eight76fivefivefour32one09eight76
q03791314182124270379131518212427
Continuation
c160161162163164165166167168169170171172173174175176177178179
bsixteensixteensixteensixteensixteensixteensixteensixteensixteensixteen17171717171717171717
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
2one3five79one3five79one3five79one3five79
3onefour703692fiveeightonefour703692fiveeight
four260foureight260foureight260foureight260foureight
five27272727273eight3eight3eight3eight3eight
639fiveone739fiveone739fiveone739fiveone7
7fouroneeightfive296307fouroneeightfive296307
eightfour20eight6four20eight6four20eight6four20eight6
9fivefour32one09eight76fivefour32one09eight76
q03791315182125270379131518212527
Continuation
c180181182183184185186187188189190191192193194195196197198199
b18181818181818181818nineteennineteennineteennineteennineteennineteennineteennineteennineteennineteen
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
2one3five79one3five79one3five79one3five79
3onefour703692fiveeight2fiveeightonefour70369
four260foureight260foureight260foureight260foureight
five3eight3eight3eight3eight3eight3eight3eight3eight3eight3eight
639fiveone739fiveone7four062eightfour062eight
7fouroneeightfive296307fouroneeightfive296307
eightfive3one97five3one97five3one97five3one97
9fivefour32one09eight766fivefour32one09eight7
q03791315182125270four791315nineteen212527
Continuation
c200201202203204205206207208209210211212213214215216217218219
b2020202020202020202021212121212121212121
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
2one3five79one3five79one3five79one3five79
32fiveeightonefour703692fiveeightonefour70369
four260foureight260foureight37onefive937onefive9
five3eight3eight3eight3eight3eight3eight3eight3eight3eight3eight
6four062eightfour062eightfour062eightfour062eight
7five296307fouroneeightfive296307fouroneeight
eightfive3one97five3one976four20eight6four20eight
96fivefour32one09eight76fivefour32one09eight7
q0four7913sixteennineteen2125270four7ten13sixteennineteen212627
Continuation
c220221222223224225226227228229230231232233234235236237238239
b2222222222222222222223232323232323232323
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
2one3five79one3five79one3five79one3five79
32fiveeightonefour703692fiveeightonefour70369
four37onefive937onefive937onefive937onefive9
five3eight3eight3eight3eight3eightfour9four9four9four9four9
6four062eightfour062eightfour062eightfour062eight
7five296307fouroneeightfive296307fouroneeight
eight6four20eight6four20eight6four20eight6four20eight
976fivefour32one09eight76fivefour32one09eight
q0four7ten13sixteennineteen2226270four7ten13sixteennineteen222627
Continuation
c240241242243244245246247248249250251252253254255256257258259
b2424242424242424242425252525252525252525
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
2one3five79one3five79one3five79one3five79
32fiveeightonefour703692fiveeightonefour70369
four37onefive937onefive937onefive937onefive9
fivefour9four9four9four9four9four9four9four9four9four9
6fiveone739fiveone739fiveone739fiveone739
7five296307fouroneeight6307fouroneeightfive29
eight6four20eight6four20eight6four20eight6four20eight
976fivefour32one09eight76fivefour32one09eight
q0four7ten13sixteennineteen2226270foureightten13sixteennineteen222627
Continuation
c260261262263264265266267268269270271272273274275276277278279
b2626262626262626262627272727272727272727
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one0one23fourfive67eight90one23fourfive67eight9
2one3five79one3five79one3five79one3five79
32fiveeightonefour703692fiveeightonefour70369
four37onefive937onefive937onefive937onefive9
fivefour9four9four9four9four9four9four9four9four9four9
6fiveone739fiveone739fiveone739fiveone739
76307fouroneeightfive296307fouroneeightfive29
eight7five3one97five3one97five3one97five3one9
976fivefour32one09eighteight76fivefour32one09
q0foureightten13sixteennineteen2226270foureightten13sixteennineteen222727

D
c0one23fourfive67eight9teneleven12131415sixteen1718nineteen
b0000000000oneoneoneoneoneoneoneoneoneone
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one00000000000000000000
200000oneoneoneoneone00000oneoneoneoneone
30000oneoneone2220000oneoneone222
four000oneone22233000oneone22233
five00oneone2233fourfour00oneone2233fourfour
600oneone233fourfourfive00oneone233fourfourfive
700one223fourfourfive600one223fourfourfive6
eight00one23fourfourfive6700one23fourfourfive67
900one23fourfive67eight0oneone23fourfive67eight
q00fiveeighteleven1417nineteen23270onefiveeighteleven1417nineteen2327
Continuation
c20212223242526272829thirty313233343536373839
b22222222223333333333
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one00000000000000000000
200000oneoneoneoneone00000oneoneoneoneone
30000oneoneone2220000oneoneone222
four000oneone22233000oneone22233
five00oneone2233fourfour00oneone2233fourfour
600oneone233fourfourfive00oneone233fourfourfive
700one223fourfourfive600one223fourfivefive6
eight00one23fourfourfive6700one23fourfourfive67
90oneone23fourfive67eight0oneone23fourfive67eight
q0onefiveeighteleven1417nineteen23270onefiveeighteleven1417202327
Continuation
c4041424344454647484950515253545556575859
bfourfourfourfourfourfourfourfourfourfourfivefivefivefivefivefivefivefivefivefive
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one00000000000000000000
200000oneoneoneoneone00000oneoneoneoneone
30000oneoneone2220000oneoneone222
four000oneone22233000oneone22233
five00oneone2233fourfour00oneone2233fourfour
600oneone233fourfourfive00oneone233fourfourfive
700one223fourfivefive600one223fourfivefive6
eight00one23fourfourfive6700one23fourfourfive67
90oneone23fourfive67eight0oneone23fourfive67eight
q0onefiveeighteleven14172023270onefiveeighteleven1417202327
Continuation
c6061626364656667686970717273747576777879
b66666666667777777777
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one00000000000000000000
200000oneoneoneoneone00000oneoneoneoneone
30000oneoneone2220000oneoneone222
four000oneone22233000oneone22233
five00oneone2233fourfour00oneone2233fourfour
600oneone233fourfourfive00oneone233fourfourfive
700one223fourfivefive600one223fourfivefive6
eight00one23fourfourfive670oneone23fourfivefive67
90one223fourfive67eight0one223fourfive67eight
q0one6eighteleven1417202327026eighteleven1418202327
Continuation
c8081828384858687888990919293949596979899
beighteighteighteighteighteighteighteighteighteight9999999999
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one00000000000000000000
200000oneoneoneoneone00000oneoneoneoneone
30000oneoneone222000oneoneoneone222
four000oneone22233000oneone22233
five00oneone2233fourfour00oneone2233fourfour
600oneone233fourfourfive00one2233fourfivefive
700one233fourfivefive600one233fourfivefive6
eight0oneone23fourfivefive670oneone23fourfivefive67
90one223fourfive67eight0one233fourfive67eight
q026eight1214182023270269121418202427
Continuation
c100101102103104105106107108109110111112113114115116117118119
btentententententententententeneleveneleveneleveneleveneleveneleveneleveneleveneleveneleven
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one00000000000000000000
200000oneoneoneoneone00000oneoneoneoneone
3000oneoneoneone222000oneoneoneone222
four000oneone22233000oneone22233
five00oneone2233fourfour00oneone2233fourfour
600one2233fourfivefive00one2233fourfivefive
700one233fourfivefive600one233fourfivefive6
eight0oneone23fourfivefive670oneone23fourfivefive67
90one233fourfive67eight0one233fourfive67eight
q02691214182024270269121418202427
Continuation
c120121122123124125126127128129130131132133134135136137138139
b1212121212121212121213131313131313131313
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one00000000000000000000
200000oneoneoneoneone00000oneoneoneoneone
3000oneoneoneone222000oneoneoneone222
four000oneone22233000oneone22233
five00oneone2233fourfour00oneone2233fourfour
600one2233fourfivefive00one2233fourfivefive
70oneone233fourfivefive60oneone233fourfivefive6
eight0oneone23fourfivefive670oneone23fourfivefive67
90one233fourfive67eight0one23fourfourfive67eight
q03691214182024270369131418202427
Continuation
c140141142143144145146147148149150151152153154155156157158159
b1414141414141414141415151515151515151515
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one00000000000000000000
200000oneoneoneoneone00000oneoneoneoneone
3000oneoneoneone222000oneoneoneone222
four00oneoneone2233300oneoneone22333
five00oneone2233fourfour00oneone2233fourfour
600one2233fourfivefive00one2233fourfivefive
70oneone233fourfivefive60oneone233fourfivefive6
eight0one223fourfive6670one223fourfive667
90one23fourfourfive67eight0one23fourfivefive67eight
q03791314182124270379131518212427
Continuation
c160161162163164165166167168169170171172173174175176177178179
bsixteensixteensixteensixteensixteensixteensixteensixteensixteensixteen17171717171717171717
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one00000000000000000000
200000oneoneoneoneone00000oneoneoneoneone
3000oneoneoneone222000oneoneoneone222
four00oneoneone2233300oneoneone22333
five00oneone2233fourfour00oneone2233fourfour
600one2233fourfivefive00one2233fourfivefive
70oneone233fourfive660oneone233fourfive66
eight0one223fourfive6670one223fourfive667
90one23fourfivefive67eight0one23fourfivefive67eight
q03791315182125270379131518212527
Continuation
c180181182183184185186187188189190191192193194195196197198199
b18181818181818181818nineteennineteennineteennineteennineteennineteennineteennineteennineteennineteen
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one00000000000000000000
200000oneoneoneoneone00000oneoneoneoneone
3000oneoneoneone222000oneoneone2222
four00oneoneone2233300oneoneone22333
five00oneone2233fourfour00oneone2233fourfour
600one2233fourfivefive0oneone223fourfourfivefive
70oneone233fourfive660oneone233fourfive66
eight0one223fourfive6670one223fourfive667
90one23fourfivefive67eight0one23fourfive667eight
q03791315182125270four791315nineteen212527
Continuation
c200201202203204205206207208209210211212213214215216217218219
b2020202020202020202021212121212121212121
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one00000000000000000000
200000oneoneoneoneone00000oneoneoneoneone
3000oneoneone2222000oneoneone2222
four00oneoneone2233300oneoneone22333
five00oneone2233fourfour00oneone2233fourfour
60oneone223fourfourfivefive0oneone223fourfourfivefive
70oneone23fourfourfive660oneone23fourfourfive66
eight0one223fourfive6670one233fourfive677
90one23fourfive667eight0one23fourfive667eight
q0four7913sixteennineteen2125270four7ten13sixteennineteen212627
Continuation
c220221222223224225226227228229230231232233234235236237238239
b2222222222222222222223232323232323232323
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one00000000000000000000
200000oneoneoneoneone00000oneoneoneoneone
3000oneoneone2222000oneoneone2222
four00oneoneone2233300oneoneone22333
five00oneone2233fourfour00oneone2233fourfour
60oneone223fourfourfivefive0oneone223fourfourfivefive
70oneone23fourfourfive660oneone23fourfourfive66
eight0one233fourfive6770one233fourfive677
90one23fourfive677eight0one23fourfive677eight
q0four7ten13sixteennineteen2226270four7ten13sixteennineteen222627
Continuation
c240241242243244245246247248249250251252253254255256257258259
b2424242424242424242425252525252525252525
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one00000000000000000000
200000oneoneoneoneone00000oneoneoneoneone
3000oneoneone2222000oneoneone2222
four00oneoneone2233300oneoneone22333
five00oneone2233fourfour00oneone2233fourfour
60oneone223fourfourfivefive0oneone223fourfourfivefive
70oneone23fourfourfive660one223fourfourfive66
eight0one233fourfive6770one233fourfive677
90one23fourfive677eight0one23fourfive677eight
q0four7ten13sixteennineteen2226270foureightten13sixteennineteen222627
Continuation
c260261262263264265266267268269270271272273274275276277278279
b2626262626262626262627272727272727272727
r \ p0one23fourfive67eight90one23fourfive67eight9
000000000000000000000
one00000000000000000000
200000oneoneoneoneone00000oneoneoneoneone
3000oneoneone2222000oneoneone2222
four00oneoneone2233300oneoneone22333
five00oneone2233fourfour00oneone2233fourfour
60oneone223fourfourfivefive0oneone223fourfourfivefive
70one223fourfourfive660one223fourfourfive66
eight0one233fourfive6770one233fourfive677
90one23fourfive677eight0one23fourfive67eighteight
q0foureightten13sixteennineteen2226270foureightten13sixteennineteen222727


It has been found that the table of units (U) contains non-repeating columns, whereas all columns of the table of tens (D) are found in table U and table B.

Thus, table U exhausts all generated columns. Therefore, it is the complete table of Slonim.

For the convenience of further work, I marked which column of table B each column of D coincides with, and with the same numbers I marked columns of the same table number U (row q of both tables), and for even more convenience I entered the Q array containing the specified values, under the numbers corresponding to the columns in tables D and U.
Q
 Q = [0, 0, 5, 8, 11, 14, 17, 19, 23, 27, 0, 1, 5, 8, 11, 14, 17, 19, 23, 27, 0, 1, 5, 8, 11, 14, 17, 19, 23, 27, 0, 1, 5, 8, 11, 14, 17, 20, 23, 27, 0, 1, 5, 8, 11, 14, 17, 20, 23, 27, 0, 1, 5, 8, 11, 14, 17, 20, 23, 27, 0, 1, 6, 8, 11, 14, 17, 20, 23, 27, 0, 2, 6, 8, 11, 14, 18, 20, 23, 27, 0, 2, 6, 8, 12, 14, 18, 20, 23, 27, 0, 2, 6, 9, 12, 14, 18, 20, 24, 27, 0, 2, 6, 9, 12, 14, 18, 20, 24, 27, 0, 2, 6, 9, 12, 14, 18, 20, 24, 27, 0, 3, 6, 9, 12, 14, 18, 20, 24, 27, 0, 3, 6, 9, 13, 14, 18, 20, 24, 27, 0, 3, 7, 9, 13, 14, 18, 21, 24, 27, 0, 3, 7, 9, 13, 15, 18, 21, 24, 27, 0, 3, 7, 9, 13, 15, 18, 21, 25, 27, 0, 3, 7, 9, 13, 15, 18, 21, 25, 27, 0, 3, 7, 9, 13, 15, 18, 21, 25, 27, 0, 4, 7, 9, 13, 15, 19, 21, 25, 27, 0, 4, 7, 9, 13, 16, 19, 21, 25, 27, 0, 4, 7, 10, 13, 16, 19, 21, 26, 27, 0, 4, 7, 10, 13, 16, 19, 22, 26, 27, 0, 4, 7, 10, 13, 16, 19, 22, 26, 27, 0, 4, 7, 10, 13, 16, 19, 22, 26, 27, 0, 4, 8, 10, 13, 16, 19, 22, 26, 27, 0, 4, 8, 10, 13, 16, 19, 22, 26, 27, 0, 4, 8, 10, 13, 16, 19, 22, 27, 27]; 


Autopsy algorithm



First, I noticed that the column group with b = 0 of the DU table is the same as the Pythagorean table.
c0one23fourfive67eight9
b0000000000
r \ p0one23fourfive67eight9
00000000000
one0one23fourfive67eight9
202four6eightten1214sixteen18
30369121518212427
four0foureight12sixteen2024283236
five0fiveten152025thirty354045
606121824thirty36424854
7071421283542495663
eight0eightsixteen24324048566472
9091827364554637281

The second observation: if you select columns with p = 0 from table U, the table composed of them coincides with table B.
c0ten20thirty405060708090100110120130
b0one23fourfive67eight9teneleven1213
r \ p00000000000000
000000000000000
one00000000000000
200000000000000
3000000000oneoneoneoneone
four0000000oneoneoneoneoneoneone
five00000oneoneoneoneoneone222
60000oneoneoneoneone22222
7000oneoneoneoneone222233
eight00oneoneoneoneone2223333
90oneoneoneoneone2223333four
q00000000000000
Continuation
c140150160170180190200210220230240250260270
b1415sixteen1718nineteen2021222324252627
r \ p00000000000000
000000000000000
one00000000000000
2oneoneoneoneoneoneoneoneoneoneoneoneoneone
3oneoneoneoneone222222222
four22222223333333
five222333333fourfourfourfourfour
633333fourfourfourfourfourfivefivefivefive
733fourfourfourfourfivefivefivefivefive666
eightfourfourfourfourfivefivefive6666677
9fourfivefivefivefive66677777eight
q00000000000000

So each column D [i] of table D is included in table U as a column for which b = Q [i], p = 0.

It is obvious that the last digit of the product of two numbers is equal to the last digit of the product of the last digits of these numbers. Therefore, if I take from the zero group of the table U a column with the number equal to the last digit of the multiplied, then this will be the last column of the compiled worksheet of the multiplied number by a series of single-digit numbers.

Then I assumed that q is the number of the group from which I must take a column for the next digit. I decided to start with group 0.
Conducted a computational experiment using FireBug - sort of how it turns out.

Take, for example, a random four-digit (so that the experiment was not too simple) number. When preparing the article, I did it like this:
 value = (100 + Math.floor(Math.random()*(999-100)))*10 + 1 + Math.floor(Math.random()*(9-1)); 

Such a formula guarantees that a number not less than 1000 will be obtained and that there will not be zero in the unit discharge.
At the extreme assembly of the article, randomly gave me value = 3212.
Take from group 0 of table U column 2:
c2
b0
r \ p2
00
one2
2four
36
foureight
five0
62
7four
eight6
9eight
qfive

We see that q = 5 for it. Now for the next digit we take from group 5 column 1:
c512
bfive0
r \ pone2
000
oneone2
22four
336
fourfoureight
five60
672
7eightfour
eight96
90eight
qonefive

For this column q = 1. We continue the table in a similar way, and we get:
c5312512
bfiveonefive0
r \ p32one2
00000
one32one2
26four2four
39636
four2eightfoureight
five6060
69272
72foureightfour
eightfive696
9eight90eight
qeightfiveonefive

The numbers have run out, the next q = 8. Obviously, it is necessary to take the zero column from group 8. We get:
c805312512
beightfiveonefive0
r \ p032one2
000000
one032one2
206four2four
309636
fourone2eightfoureight
fiveone6060
6one9272
722foureightfour
eight2five696
92eight90eight
q0eightfiveonefive

It is easy to see that in the rows of this table are the works of our number 3212 by 0, 1, 2, ... 9.

Parsing the experiment

It was harder to figure out why this works.
So, we have 28 groups (from 0 to 27) with 10 columns each. Groups are assigned the same numbers as the columns of table B.
Tables DU, U and D in row b contain the group number, in row p the number of the column in the group.

We introduce the functions:
The function of multiplying a number by a vector {0; one; 2; 3; four; five; 6; 7; eight; 9} (vector represented by an array)
 function mul(n){ var result = new Array(10); for(var i=0; i<10; ++i){ result[i]=n*i; } return result; } 

The function of vector addition of two arrays
 function sum(a, b){ var result = new Array(10); for(var i=0; i<10; ++i){ result[i]=a[i]+b[i]; } return result; } 

The function of obtaining an array containing the values ​​of the digit units of the values ​​of the original array
 function unit(a){ var result = new Array(10); for(var i=0; i<10; ++i){ result[i]=a[i] % 10; } return result; } 

The function of obtaining an array containing the discharge values ​​of tens of values ​​of the original array
 function deca(a){ var result = new Array(10); for(var i=0; i<10; ++i){ result[i]=Math.floor(a[i] / 10); } return result; } 

It is easy to compare the formulas and notice that each column of the table P is nothing but the result of the function mul for the column number;
columns of tables D and U are derived from columns of table DU using the functions unit and deca, respectively;
each column of the table DU is obtained by summing one column of table B and one column of table P, which corresponds to the use of the sum function.

Recall the multiplication algorithm in a column of a multi-digit number on a single-digit one:
Let be
a n a n-1 ... a 1 a 0 - multiplicable, written bitwise;
b is a one-bit multiplier;
with n + 1 c n ... c 1 c 0 - the result is written bitwise (we assume that the result is one digit longer than the multiplicand, in most cases it will be so, in the others - no one has yet died of the leading zero);
m 0 , m 1 , ... m n - values ​​transferred to the most significant digit (when calculating on paper, they are written “up”);
floor - rounding function down;
% - the operation of obtaining the remainder of the division.
The variable x will be used as local and recalculated for each digit.

1. Take from the multiplication table (it is in each of us in memory) the product of the zero digit of the multiplicative factor:
x = a 0 * b;
the digit of the units of the number x without changes is written to the result: c 0 = x% 10;
the tens digit of the number x is written “up”: m 0 = floor (x / 10).

2. From the multiplication table, take the product of the first digit multiplied by a factor and add the value “from above” to it:
x = a 1 * b + m 0
discharge of units - write to the result: c 1 = x% 10;
tens of digits - write “up”: m 1 = floor (x / 10).

3. We do the same for discharges from 2 to n:
x = a i * b + m i-1
c i = x% 10;
m i = floor (x / 10).

4. The value obtained during the calculation of discharge n will give us the last digit of the result:
c n + 1 = m n .


I guess everyone agrees? There are no errors in the description? Then we think further:

The Slonimsky table is used to obtain products of an arbitrary number by a series of numbers from 0 to 9.
If we decided to multiply in a column, then we would multiply the multiplicable number ten times and get on the set with n + 1 c n ... c 1 c 0 and m 0 , m 1 , ... m n for each of the ten multipliers.
Since we want to open the Slonimsky algorithm, we also introduce an array j 0 ... j n + 1 , in which we will store the column numbers of the table U corresponding to the columns of the multiplication result.

To simplify the form of the record, we will use the functions we have entered, and go through the same points of the above algorithm:
1. Calculate
x = mul (a 0 );
Obviously, x coincides with the column No. a 0 of the Pythagorean table (P) and, interestingly, with the column p = a 0 , b = 0 of the table DU. In the tables DU, U and D the column number is calculated as b * 10 + p, therefore
x = DU [a 0 ]
Now we need units to write in the result, and tens to write "up":
c 0 = unit (x);
m 0 = deca (x);
in this case, c 0 and m 0 are arrays.
Note that c 0 is obtained in the same way as column p = a 0 , b = 0 of table U, and m 0 as the corresponding column of table D.
We write:
j 0 = a 0 ;
c 0 = U [j 0 ];
m 0 = D [j 0 ].

2. Now we take the next level. We need to calculate the product of a 1 by the vector, and then vectorially add to the resulting array an array of m 0 :
x = sum (mul (a 1 ), m 0 );
Parse this formula:
mul (a 1 ) is the same as column P [a 1 ].

In step 1, it was calculated:
m 0 = D [j 0 ].
Recall now that for each column of table D, the number q was found under which this column is included in table B. For convenience, we recorded this number in the row q of the tables U and D and in the array Q.
Now we write:
m 0 = D [j 0 ] = B [Q [j 0 ]];
May programmers and mathematicians forgive me for such a mixture of styles.

Both items are dismantled. Now remember the amount. One of the terms is a member of table P, and the other is table B. We have calculated all sums for this case and are included in table DU.
Therefore, the required array must match the column of the table DU, for which p = a 1 , b = Q [j 0 ]:
x = DU [Q [j 0 ] * 10 + a 1 ].
Now we need units and tens of members x again:
c 1 = unit (x);
m 1 = deca (x);
and tables U and D will help us in this again.

Let's summarize the second step:
j 1 = Q [j 0 ] * 10 + a 1 ;
c 1 = U [j 1 ];
m 1 = D [j 1 ].

3. You can already notice the pattern:
x = sum (mul (a i ), m i-1 );
and since:
mul (a i ) = P [a i ],
m i-1 = D [j i-1 ] = B [Q [j i-1 ]];
then:
x = DU [Q [j i-1 ] * 10 + a i ].
Consequently:
j i = Q [j i-1 ] * 10 + a i ;
c i = U [j i ];
m i = D [j i ].

4. Now let's see what we do with m n .
The last carry of the discharge is the most significant bit of the result. But we need to select a column of the U table.
Let's analyze:
m n = D [j n ].
D [j n ] enters table U as a column b = Q [j n ], p = 0, i.e.
D [j n ] = U [Q [j n ] * 10].
Consequently:
j n + 1 = Q [j n ] * 10;
c n + 1 = U [j n + 1 ].
Since no product of one-digit numbers can give more than two-digit number, the array m n + 1 will contain only zeros. The calculation is complete.

Now let's pile together the equations for j i :
j 0 = a 0 ;
j i = Q [j i-1 ] * 10 + a i ;
j n + 1 = Q [j n ] * 10.
They come down to one equation.
j i = Q [j i-1 ] * 10 + a i ,
if you accept that
a n + 1 = 0 (which is equivalent to assigning a leading zero to a multiplicative number),
Q [j -1 ] = 0.

This means that in order to add the product table of the numbers a n a n-1 ... a 1 a 0 to single-digit numbers from the columns of the table U, each time you need to take the column p = a i from the group b = Q [j i-1 ] and the row q of the same table column will tell us which group of columns will be next, and we need to start working with the group of columns 0.

The algorithm demonstrated in the experiment is derived analytically.

I summarize:

The algorithm found can be described as automaton, where the input line is a multiplied number, readable from right to left (from low-order bits to high-order ones), and states are the numbers of column groups. At each stage of the work, we take from the group under the state number the column under the number of the next digit and move to the state under the number from the row q of this column.
For a correct completion of the algorithm, a leading zero must be added to the multiplier.

Material implementation

This section has no special significance for the article; I could not include it. But let it be for show.

Neither the “projectile” of Slonim, nor Ioffe’s bars were restored by me. Recreating authentic copies requires more information about the products themselves.

I created my own version of the instrument for the purpose of its operation on RI of live action for epochs for which the product would not be an anachronism, as well as a full-scale demonstration of the operation algorithm.
Authenticity to any historical model is not assumed. The focus was on ease of use.

From the point of view of operation, the columns should be placed on the carrier in such a way that they can be easily sorted both by groups and by numbers. Moreover, based on the algorithm of work, you first need to select the desired group, and then the desired column.

I must note that it is convenient to place the columns on the four-sided bars, like Ioffe, I did not succeed. I suspect that the loffe bars were not so comfortable.

28 groups of 10 columns are conveniently placed on double-sided rails. In addition, each group of columns was applied on its own five rails.

To reduce the amount of information applied to the slats, the zero line of the table was not applied to the slats, since it contains the number 0 in all columns. The number of the column was not applied separately, because it coincides with the number in the first row of the table. The number of the group to which the rake belongs was marked with Roman numerals on the side faces of the rake. It is needed only for sorting the rails in case of their random mixing (which should be avoided during operation).

The q value of the column is plotted on each rail below the horizontal dividing line.

The slats are made of 50x2 mm aluminum strip, which for this purpose was cut with an electric jigsaw about 4-6 mm each (too narrow were rejected, too wide either were eaten away by a grinding disc, or were also rejected).
Figures are engraved with a mill.
For storage of the rails, a wooden organizer, 50x40 mm, was drilled from pine timber. Yes, I know that you can think better, but there were 2 days left before the game, and after engraving, 2,800 digits were running out.
The numbers of groups and columns are printed on the organizer with a gel pen.

Because of the mysterious glitches with the disappearance of pictures, photos were added using the comment habrahabr.ru/post/232255/#comment_7940351

Sources


1. Bulletin of the University of Syktyvkar. Ser.1. Issue 13.2011. UDC 512.6, 517.987 “On the 200th anniversary of the creators of computers submitted to the Demidov Prize, Kh.Z. Slonimsky and G. Kummer ". V.P. Odinets ;
2. Slonimsky's theorem and simple computing devices based on it .

PS May the Spirit of the Machine bless your server, for it has survived sending almost 200kb of code, and taking into account escaping, all 500.

Source: https://habr.com/ru/post/232255/


All Articles