Romek
27-09-2014 20:24:33
Niezależnie od języka programowania trzeba uwzględnić dwa problemy.
Pierwszy to pomyłki w pisaniu słownym liczb. Program musi rozpoznawać słowa z literówkami.
Do tego potrzebny jest algorytm Levenshteina. W pierwszym kroku musi rozpoznać, że "dwiescie" to to samo co "dwieście".
A więc cały napis słowny "dwiescie piecdzieiąt trzy" powinien być słowo po słowie "przypasowany" do słownika zawierającego prawidłowe formy: tysiąc dziewięćset osiemset siedemset sześćset pięćset czterysta trzysta dwieście sto dziewięćdziesiąt osiemdziesiąt itd.
Druga część to rozpoznawanie czy dany ciąg należy do grupy miliardów, milionów, tysięcy lub jednostek.
Reszta to - w grupie np tysięcy - proste dodawanie: dwiescie piecdzieiąt trzy = 200 + 50 + 3 = 253.
W rozwiązaniu kryje się jeszcze jeden kruczek; słowa oznaczające grupę miliard, milion, tysiąc może występować w trzech formach i algorytm powinien każdą z tych form prawidłowo rozpoznawać.
O czym tu mówimy? 1 tysiąc, 2 tysiące, 5 tysięcy. Te formy zależą od liczby jaka stoi przed słowem tysiąc.
To temat na osobny artykulik i funkcję na 7 linijek :-)