Nadesłany przez Stefan Pruszkiewicz, 01 marca 2018 16:45
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.Pobierz pełne rozwiązanie.
zlns_gramatyka.py:
# Zamiana liczby na slowa z polska gramatyka
# www.algorytm.org
def Slownie (Liczba):
Liczby = [
['' ,'' ,'' ,'' ],
['jeden ' ,'jedenascie ' ,'dziesiec ' ,'sto ' ],
['dwa ' ,'dwanascie ' ,'dwadziescia ' ,'dwiescie ' ],
['trzy ' ,'trzynascie ' ,'trzydziesci ' ,'trzysta ' ],
['cztery ' ,'czternascie ' ,'czterdziesci ' ,'czterysta ' ],
['piec ' ,'pietnascie ' ,'piecdziesiat ' ,'piecset ' ],
['szesc ' ,'szesnascie ' ,'szescdziesiat ' ,'szescset ' ],
['siedem ' ,'siedemnascie ' ,'siedemdziesiat ' ,'siedemset ' ],
['osiem ' ,'osiemnascie ' ,'osiemdziesiat ' ,'osiemset ' ],
['dziewiec ','dziewietnascie ','dziewiecdziesiat ','dziewiecset ']]
Grupy = [
['' ,'' ,'' ],
['tysiac ' ,'tysiace ' ,'tysiecy ' ],
['milion ' ,'miliony ' ,'milionow ' ],
['miliard ','miliardy ','miliardow '],
['bilion ' ,'biliony ' ,'bilionow ' ],
['biliard ','biliardy ','biliardow '],
['trylion ','tryliony ','trylionow ']]
J, N, D, S, G, K = 0, 0, 0, 0, 0, 0 #Jednostki,Nastki,Dziesiatki,Setki,Grupy,Koncowki
Ciag, Znak = "", ""
if Liczba < 0:
Znak = "minus "
Liczba = -Liczba
if Liczba == 0:
Ciag = "zero "
while not Liczba == 0:
S = Liczba % 1000 // 100
D = Liczba % 100 // 10
J = Liczba % 10
if D == 1 and J > 0: #Warunek do obsługi nastek
N = J
D = 0
J = 0
else:
N = 0
if J == 1: #Tu zawiera sie cała gramatyka, wybór końcówki
if S + D + N > 0:
K = 2
else:
K = 0;
elif J in [2,3,4]:
K = 1
else:
K = 2
if S + D + N + J > 0:
Ciag = Liczby[S][3] + Liczby[D][2] + Liczby[N][1] + Liczby[J][0] + Grupy[G][K] + Ciag
G = G + 1
Liczba = Liczba // 1000;
return Znak + Ciag
print(Slownie(9223372036854775807))

