Zpět

Soroban

Tradiční japonské počítadlo. Vzniklo někdy ve středověku vylepšením starověkého čínského suanpanu a používá se v podstatě dodnes, i když od vynalezení digitální kalkulačky už v menší míře. Od evropského počítadla nebo ruského sčotu se liší jinou orientací rámečku a úspornějším uspořádáním kuliček. S trochou cviku se na něm dá velice rychle sčítat a odčítat. Násobení a dělení je pomalejší, ale údajně pořád lepší než tužka a papír.

Takový zajímavý kousek historie výpočetní techniky stojí za praktické vyzkoušení, tak jsem přestavěl jedno školní počítadlo na tenhle patnácticiferný kompjůtr (zobrazuje číslo 000 000 123 456 789):

Hlavně mě zajímalo, co je pravdy na tom, že rychlostí může tahle primitivní věc konkurovat kalkulačce a že si po nějaké době člověk vystačí i bez fyzického počítadla, stačí si ho jenom představit. Počítání z hlavy mi nikdy nešlo a paměť na čísla taky moc nemám - ideální kandidát na pokusného králíka.

Kdyby vás to zaujalo taky, následuje stručný návod k použití.

Zobrazení čísel

Pracovní poloha počítadla je vodorovně na stole. Každá tyčka vyjadřuje jednu číslici od 0 do 9. Delší část tyčky obsahuje čtyři "zemské" kuličky s hodnotou 1, kratší část jednu "nebeskou" s hodnotou 5. Oddělené jsou vodorovnou počítací příčkou. Kuličky, které se jí dotýkají, jsou aktivní - mají hodnotu, vyjadřují číslo. Přebytečné kuličky odsunuté nahoru nebo dolů od příčky se nepočítají. Vyjádření číslic kuličkami je jednoznačné, pro každou existuje právě jedna kombinace:

0 1 2 3 4 5 6 7 8 9
+-+-+-+-+-+-+-+-+-+
O O O O O | | | | |
| | | | | O O O O O
+-+-+-+-+-+-+-+-+-+
| O O O O | O O O O
O | O O O O | O O O
O O | O O O O | O O
O O O | O O O O | O
O O O O | O O O O |
+-+-+-+-+-+-+-+-+-+

Každá třetí tyčka obvykle bývá označená tečkou na počítací příčce nebo jinak barevnými kuličkami. Čísla zarovnáváme obvykle tak, aby na označené tyčce byly jednotky; pak se v nich líp orientuje, hlavně v těch víceciferných. Celkový počet tyček je víceméně libovolný, záleží jenom na tom, kolik cifer potřebujeme a jak velký máme stůl.

Výchozí poloha před zahájením výpočtu jsou obvykyle samé nuly. K zadání nebo úpravě jedné číslice stačí jeden pohyb palce a ukazováčku, dá to míň práce než napsat číslo na papír.

Jakékoli počítadlo (abakus) je jenom mechanická paměť na čísla, samo o sobě počítat neumí. Veškeré výpočty provádí člověk, na počítadlo si jenom zapisuje operandy a výsledky.

Sčítání

Nejdřív na počítadlo nasázíme první číslo. Potom k jeho číslicím postupně přičítáme odpovídající číslice druhého čísla: k jednotkám jednotky, k desítkám desítky atd., jako když sčítáme dvě čísla pod sebou na papíře. Narozdíl od papíru nezáleží na směru, protože není problém měnit dříve napsané cifry, takže můžeme postupovat přirozeně zleva doprava.

Jak sečíst dvě cifry:

a) Pokud na tyčce máme dost volných kuliček, přisuneme je k počítací tyčce a jsme hotovi. Např.:

 1 + 6 = 7            3 + 3 = 3 + (5-2) = 6
-+-     -+-          -+-                 -+-
 O       |            O                   |
 |       O            |                   O
-+-     -+-          -+-                 -+-
 O       O            O                   O
 |       O            O                   |
 O       |            O                   O
 O       O            |                   O
 O       O            |                   O
-+-     -+-          -+-                 -+-

Pětková kulička je trochu záludná, často kvůli ní musíme zpětně odčítat nebo přičítat jedničkové. Tréninkem se to ale celkem rychle zautomatizuje, prsty si zapamatují jednotlivé kombinace a nakonec na to ani nemusíme myslet (třeba přičtení 2 ke 4 znamená souhlasný pohyb palcem a ukazováčkem směrem dolů, nahoře s jednou kuličkou, dole se třemi).

b) Pokud dost volných kuliček nemáme, odečteme tolik, kolik nám zbývá do deseti, a o cifru výš přičteme jedničku. Např.:

 0 8  +  7         =          1 5
-+-+-    ^do 10 zbývají 3    -+-+-
 O |             .            O |
 | O             .            | O
-+-+-            .           -+-+-
 | O                          O |
 O O <-ty odečteme odsud      | O
 O O         .                O O
 O |         .                O O
 O O         .                O O
-+-+-                        -+-+-
 ^a tady přičteme 1

Jestli na té vyšší cifře byla devítka, jednička nám přeteče ještě výš. Hodí se používat obě ruce, abychom se v tom neztratili: pravá vyřeší tu základní cifru a zůstane na ní, levá potom postupuje doleva a vyřídí všechny přeteklé jedničky.

Odčítání

Funguje podobně jako sčítání. Postupujeme zase po jednotlivých cifrách zleva doprava (nebo obráceně, je to jedno).

Pokud máme na dané tyčce dost aktivních kuliček, odečteme je. Pokud ne, přičteme tolik, kolik nám zbývá do deseti, a na tyčce o pozici výš odečteme 1:

 8 - 2 = 6            3 2 - 4        =        2 8
-+-     -+-          -+-+-  ^do 10 zbývá 6   -+-+-
 |       |            O O           .         O |
 O       O            | |           .         | O
-+-     -+-          -+-+-          .        -+-+-
 O       O            O O <-to přičteme sem   O O
 O       |            O O                     O O
 O       O            O |         .           | O
 |       O            | O         .           O |
 O       O            O O         .           O O
-+-     -+-          -+-+-                   -+-+-
                      ^a odsud odečteme 1

Na záporná čísla není soroban stavěný. Kdyby mělo vyjít něco záporného, prohodíme operandy a pak si k výsledku v duchu připíšeme mínus:

a-b = -(b-a)

Násobení

Algoritmus je víceméně stejný jako při násobení pod sebou na papíře: pomocí malé násobilky pronásobíme jednotlivé cifry každou s každou a mezivýsledky posčítáme. Výhoda oproti papíru je, že ty mezivýsledky přičítáme rovnou do správných pozic ve finálním výsledku, nemusíme je psát na několik řádků ani sčítat víc než dvě cifry najednou.

Začneme tím, že si oba činitele zapíšeme vedle sebe někam do levé části počítadla (pro přehlednost pokud možno zarovnané pravými konci na jednotkových tyčkách). Napravo si připravíme místo na výsledek. Součin může mít tolik cifer, kolik mají oba činitelé dohromady. Možná se nám na počítadlo nevejde, ale to nevadí: jak postupně zprava vyřizujeme cifry druhého činitele, můžeme je průběžně mazat a tím si dělat místo.

Příklad: 23*56. Na papíře:

  23
  56
----
 138
115
----
1288

Na počítadle (pro přehlednost radši jenom číselně):

023 056  000 000

023 056  000 018
  ^   ^3*6=18  ^přičteme sem

023 056  000 138
 ^    ^2*6=12 ^přičteme sem

023 050  000 138
 ^    ^šestka je vyřízená, můžeme odmáznout

023 050  000 288
  ^  ^3*5=15  ^přičteme sem

023 050  001 288
 ^   ^2*5=10 ^přičteme sem

023 000  001 288
 ^   ^pětka je vyřízená, můžeme odmáznout

Hotovo, výsledek je 1288.

Tak, jak v příkladu značím číslice šipečkami, si je v reálu držím dvěma prsty levé ruky. Pravá ruka se mezitím stará o sčítání a hlídání pozice ve výsledku.

Celočíselné dělení

Na klasickém dělicím algoritmu ze základní školy mě štve, že vyžaduje dělení a násobení zpaměti mimo rozsah malé násobilky a že se všechny mezipodíly musí trefit napoprvé. Soroban umožňuje pracovat postupně ve více krocích, protože odčítání je rychlé a přepisování mezivýsledků není problém. A navíc jsem ten školní algoritmus vlastně pořádně pochopil až teď :-). Takže ho tu rozepíšu i s odvozením, ať z toho něco máte.

Triviální dělicí algoritmus je tupé odčítání dělitele od dělence tak dlouho, dokud to jde, a počet odečtení je hledaný výsledek:

podíl:=0
while dělenec>dělitel do
  begin
  dělenec:=dělenec-dělitel;
  podíl:=podíl+1;
  end;
zbytek:=dělenec;

Protože ale počítáme ručně, chce to optimalizovat, aby nám to netrvalo věčnost. Dělitele nebudeme odčítat po jednom a k výsledku přičítat jedničky, ale po xnásobcích a k výsledku přičítat x. Kolik má být x? Pro začátek třeba 10, 100, 1000 nebo něco takového, protože takové násobky se dělají jednoduchým dekadickým posouváním doleva.

050 / 004 = 000
        ^to by šlo posunout o 1 doleva, čili 40
010 / 004 = 010
 ^=50-40     ^odečetl se jednou dělitel posunutý o 1 doleva,
              takže k výsledku přičtu jedničku taky posunutou o 1 doleva
Tím jsme s posouváním skončili, 40>10.
Teď můžeme dvakrát odečíst neposunutou čtyřku
(nebo jednou dvojnásobek čtyřky, protože z hlavy víme, že 10/4=2 a něco):
006 / 004 = 011
002 / 004 = 012
Hotovo, podíl 12 a zbytek 2.

Desetinásobek se do dělence nevejde a jednonásobek by se musel odečítat mockrát? Nevadí, můžeme zkusit namátkou třeba pětinásobek - ten spočítáme snadno (stejně jako jakýkoli jiný násobek jednociferným číslem) a nejspíš se i vejde někam do zbylého volného místa na počítadle, aby byl na očích. Pak můžeme pohodlně odečítat jedno-, pěti-, deseti-, padesáti- a další -násobky a do výsledku postupně přičítat jedničky, pětky, desítky, padesátky atd.. Nakonec se dobereme k podílu a vůbec jsme při tom nemuseli dělit. Dobrý, ne?

Vypadá to moc amatérsky a je to pomalé? Tak nebudeme určovat násobky náhodně, ale dělením. Jak na to, aby se nemusela zpaměti dělit moc velká čísla? K tomu ve školním algoritmu slouží takové ty "skobičky" za jednotlivými ciframi. Představit se to ale dá i jinak: dělence a výsledek posuneme doprava a po zpětném pronásobení a odečtení zase zpátky (ve skutečnosti je to klasické vydělení nebo vynásobení obou stran rovnice desítkou). Třeba:

304 / 007 = 000
>30 / 007 = >00
Kolik je 30/7? 5*7=35, to je moc, 4*7=28, to je málo, ale lepší už to nebude, takže 4.
K výsledku přičteme 4 a od dělence odečteme 28:
>02 / 007 = >04
A posuneme to zpátky:
024 / 007 = 040
  ^vypadlou cifru sem zase vrátíme
24/7 je 3 a něco, 3*7=21, takže k výsledku přičteme 3 a od dělence odečteme 21:
003 / 007 = 043
Od 3 už 7 neodečteme, takže hotovo, podíl je 43 a zbytek 3.

Čísla na počítadle neposouváme fyzicky, to je zdlouhavé a náchylné k chybám. Posouváme jenom prsty, kterými si hlídáme pozice.

Reálné dělení

Nejdřív spočítáme celočíselný podíl a zbytek. Potom je posuneme o cifru doleva (desetinnou čárku si představíme taky posunutou o pozici doleva, i když na počítadle není vidět) a dělíme dál. Pokračování předchozího příkladu:

 003 / 007 =  043
0030 / 007 = 0430    (30/7, to máme zase 4*7=28)
0002 / 007 = 0434

Pořád něco zbývá? Tak druhý posun:

00020 / 007 = 04340     (2*7=14)
00006 / 007 = 04342

Výsledek je zatím 43,42 a stejným způsobem můžeme pokračovat tak dlouho, dokud nás to bude bavit. Respektive dokud nevyjde zbytek 0 (pak máme výsledek přesně) nebo dokud nemáme dostatečný počet desetinných míst.

Dělitel se během celého výpočtu nemění, dělenec nejdřív ubývá zleva a potom přibývá vpravo, výsledek nejdřív trochu bobtná vlevo a na závěr doprava. Na počítadle je proto vhodné rozmístit čísla poněkud napřeskáčku: dělitele co nejvíc doleva, dělence kus od pravého konce a výsledek někam doprostřed. Orientujte se podle jednotkových tyček, ať se v tom neztratíte.

Co s tím?

Po nějaké době občasného cvičení pozoruji několik efektů. Sčítání a odčítání se postupně zautomatizovalo tak, že stačí podívat se na tyčku s kuličkami a prsty už vědí, jaký pohyb na ní mají provést. Nemusím si postavení kuliček v duchu převádět na grafické nebo slovní vyjádření čísla, sčítat nebo odčítat a výsledek pak převádět zpátky na kuličky; operaci provedu přímo. Kalkulačku nepřekonám a nemyslím si, že by to vůbec šlo - zmáčknutí knoflíku není pomalejší než šoupnutí na počítadle. Možná by se dalo zpracovávat víc číslic paralelně, ale na to bych potřeboval vícejádrový mozek. Nad papírem a tužkou už ale vedu.

Při tréninku násobení jsem oprášil a rozhýbal dlouho nepoužívanou násobilku, ale protože ji mám naučenou z větší části ve slovní podobě, musím si reprezentaci čísel pořád ještě převádět sem a tam. Násobit přímo v kuličkách zatím neumím. Dělení je pomalé: buď mi dlouho trvá z hlavy odhadnout správný mezipodíl, nebo bez přemýšlení odčítám na víc kroků, než by bylo nutné. Představit si počítadlo v duchu a počítat na něm je pro mě zatím sci-fi, paměť na čísla mám nejspíš pro všechny reprezentace stejně mizernou. Ale uvidíme.

Poznámka na závěr: pro technickou praxi se hodí spíš logaritmické pravítko. Sice neumí sčítat a odčítat, ale násobí a dělí jednoduše a rychle a k tomu umí i goniometrické funkce a pár dalších fíglů, které ze sorobanu nevymáčkneme. Má jenom jednu nevýhodu: nedá se vyrobit jen tak na koleně bez logaritmických tabulek a přesných měřidel.

Zpět

Reklamy: