složenka

Ceske cislice slovy

Potreboval jsem automatizovat generovani slozenky. Formular slozenky vypada, ze byl navrzen v dobe, kdy byl Wattuv rozteznik horkou novinkou. Nektere informace obsahuje snad i trikrat, radky v ruznych sloupcich nejsou zarovnane, nelze vytisknout cely najednou, ale je potreba se strefit tiskarnou do predtisteneho papiru a navic vyzaduje castku napsanou slovy.

Skript cisla_cz umi popsat slovy kazde cele cislo od nuly do 999999. Rozsireni na vyssi cisla by bylo pomerne jednoduche, ale miliony jsem slozenkou posilat jeste nevidel. Je napsan v BASHi, ale v zasade jde jednoduse prepsat do jakehokoliv imperativniho jazyka, ktery podporuje ridke pole (sparse array). Staci nahradit retezcove operace se sed-em aritmetikou.

Popis funkce:

Jeho jedinym parametrem je cislo. Pokud najde ve vstupu jine znaky, nez 0-9, stezuje si, ze to neni cislo. To plati i pro zaporna, realna a komplexni cisla, ktera jsem na slozence resit nepotreboval. Zde je prostor pro vylepseni.

Je-li na vstupu 0, vypise nula.

Pro cisla vyssi, nez 9999 urizne posledni tri cislice, rekurzivne zavola skript na zbytek cislic a vypise za to tisic. Dale posle jen posledni tri cislice.

Pote vzdy porovna zbytek s cislem 999, 99 a 9, aby se nesnazil odecitat nulu, odecte prvni cislici, vyhleda ji v poli s prislusnym radem a vypise retezec. Kdyz dojde k nule, skonci.

Cele to bylo napsane bez smycky, protoze jsem ocekaval vice problemu s ceskym jazykem. Nakonec se ukazalo, ze by to slo napsat i ve smycce, ale to uz to bylo hotove a nechtelo se mi to psat znovu jinak.

Sekce zpracovavajici cisla mezi 999 a 9999 je tam kvuli spravnym tvarum slova tisic. Jsou i lide, kteri rikaji treba tricet dva tisice, misto tricet dva tisic, ale zda se, ze spravne jsou oba tvary.

A ted si muzete uzivat generovani cisel.

Posted by zelenohlav