Module:ολογράφως: Διαφορά μεταξύ των αναθεωρήσεων

Περιεχόμενο που διαγράφηκε Περιεχόμενο που προστέθηκε
Χωρίς σύνοψη επεξεργασίας
Χωρίς σύνοψη επεξεργασίας
Γραμμή 3:
divmod = function (num,divider)
return math.floor(num / divider), num % divider
end
 
function table_shallow_copy(t)
local t2 = {}
for k,v in pairs(t) do
t2[k] = v
end
return t2
end
 
Γραμμή 31 ⟶ 23 :
 
lektiko = {}
initall = function ()
lektiko['κατάληξη'] = {}
lektiko['κατάληξη'][0] = {'',''}
lektiko['κατάληξη'][1] = {'χιλιάδες','χίλιοι'}
lektiko['κατάληξη'][2] = {'εκατομμύρια','εκατομμύριο'}
lektiko['κατάληξη'][3] = {'δισεκατομμύρια','δισεκατομμύριο'}
lektiko['κατάληξη'][4] = {'τρισεκατομμύρια','τρισεκατομμύριο'}
lektiko['κατάληξη'][5] = {'τετράκις εκατομμύρια','τετράκις εκατομμύριο'}
lektiko['κατάληξη'][6] = {'πεντάκις εκατομμύρια','πεντάκις εκατομμύριο'}
lektiko['κατάληξη'][7] = {'εξάκις εκατομμύρια','εξάκις εκατομμύριο'}
lektiko['κατάληξη'][8] = {'επτάκις εκατομμύρια','επτάκις εκατομμύριο'}
 
lektiko['σκέτα1_19'] = {}
lektiko['σκέτα1_19'][0]= ''
lektiko['σκέτα1_19'][1]= 'ένας'
lektiko['σκέτα1_19'][2]= 'δύο'
lektiko['σκέτα1_19'][3]= 'τρεις'
lektiko['σκέτα1_19'][4]= 'τέσσερις'
lektiko['σκέτα1_19'][5]= 'πέντε'
lektiko['σκέτα1_19'][6]= 'έξι'
lektiko['σκέτα1_19'][7]= 'επτά'
lektiko['σκέτα1_19'][8]= 'οκτώ'
lektiko['σκέτα1_19'][9]= 'εννέα'
lektiko['σκέτα1_19'][10]= 'δέκα'
lektiko['σκέτα1_19'][11]= 'έντεκα'
lektiko['σκέτα1_19'][12]= 'δώδεκα'
lektiko['σκέτα1_19'][13]= 'δεκατρείς'
lektiko['σκέτα1_19'][14]= 'δεκατέσσερις'
lektiko['σκέτα1_19'][15]= 'δεκαπέντε'
lektiko['σκέτα1_19'][16]= 'δεκαέξι'
lektiko['σκέτα1_19'][17]= 'δεκαεπτά'
lektiko['σκέτα1_19'][18]= 'δεκαοκτώ'
lektiko['σκέτα1_19'][19]= 'δεκαεννέα'
 
lektiko['σκέτα20_99'] = {}
lektiko['σκέτα20_99'][0] = ''
lektiko['σκέτα20_99'][1] = ''
lektiko['σκέτα20_99'][2] = 'είκοσι'
lektiko['σκέτα20_99'][3] = 'τριάντα'
lektiko['σκέτα20_99'][4] = 'σαράντα'
lektiko['σκέτα20_99'][5] = 'πενήντα'
lektiko['σκέτα20_99'][6] = 'εξήντα'
lektiko['σκέτα20_99'][7] = 'εβδομήντα'
lektiko['σκέτα20_99'][8] = 'ογδόντα'
lektiko['σκέτα20_99'][9] = 'ενενήντα'
 
lektiko['σκέτα100'] = {}
lektiko['σκέτα100'][0] = ''
lektiko['σκέτα100'][1] = 'εκατόν'
lektiko['σκέτα100'][2] = 'διακόσιοι'
lektiko['σκέτα100'][3] = 'τριακόσιοι'
lektiko['σκέτα100'][4] = 'τετρακόσιοι'
lektiko['σκέτα100'][5] = 'πεντακόσιοι'
lektiko['σκέτα100'][6] = 'εξακόσιοι'
lektiko['σκέτα100'][7] = 'επτακόσιοι'
lektiko['σκέτα100'][8] = 'οκτακόσιοι'
lektiko['σκέτα100'][9] = 'εννιακόσιοι'
---- -----------------------------------
lektiko['χιλιάδες1_19'] = {}
lektiko['χιλιάδες1_19'] = table_shallow_copy(lektiko['σκέτα1_19'])
lektiko['χιλιάδες1_19'][1]= 'μία'
 
lektiko['χιλιάδες20_99'] = {}
lektiko['χιλιάδες20_99'] = table_shallow_copy(lektiko['σκέτα20_99'])
 
lektiko['χιλιάδες100'] = {}
lektiko['χιλιάδες100'][0] = ''
lektiko['χιλιάδες100'][1] = 'εκατόν'
lektiko['χιλιάδες100'][2] = 'διακόσιες'
lektiko['χιλιάδες100'][3] = 'τριακόσιες'
lektiko['χιλιάδες100'][4] = 'τετρακόσιες'
lektiko['χιλιάδες100'][5] = 'πεντακόσιες'
lektiko['χιλιάδες100'][6] = 'εξακόσιες'
lektiko['χιλιάδες100'][7] = 'επτακόσιες'
lektiko['χιλιάδες100'][8] = 'οκτακόσιες'
lektiko['χιλιάδες100'][9] = 'εννιακόσιες'
 
---- -----------------------------------
--lektiko['μύρια1_19'] = {}
lektiko['μύρια1_19'] = table_shallow_copy(lektiko['σκέτα1_19'])
 
lektiko['μύρια1_19'][1]= 'ένα'
lektiko['μύρια1_19'][2]= 'δύο'
lektiko['μύρια1_19'][3]= 'τρία'
lektiko['μύρια1_19'][4]= 'τέσσερα'
lektiko['μύρια1_19'][13]= 'δεκατρία'
lektiko['μύρια1_19'][14]= 'δεκατέσσερα'
 
lektiko['μύρια20_99'] = {}
lektiko['μύρια20_99'] = table_shallow_copy(lektiko['σκέτα20_99'])
 
lektiko['μύρια100'] = {}
lektiko['μύρια100'][0] = ''
lektiko['μύρια100'][1] = 'εκατόν'
lektiko['μύρια100'][2] = 'διακόσια'
lektiko['μύρια100'][3] = 'τριακόσια'
lektiko['μύρια100'][4] = 'τετρακόσια'
lektiko['μύρια100'][5] = 'πεντακόσια'
lektiko['μύρια100'][6] = 'εξακόσια'
lektiko['μύρια100'][7] = 'επτακόσια'
lektiko['μύρια100'][8] = 'οκτακόσια'
lektiko['μύρια100'][9] = 'εννιακόσια'
end
--export[''] = function ()
 
--end
init_nf = function()
lektiko['κατάληξη'][1][2] = "χίλιες"
lektiko['σκέτα1_19'][1] = "μία"
lektiko['σκέτα100'][2] = "διακόσιες"
lektiko['σκέτα100'][3] = "τριακόσιες"
lektiko['σκέτα100'][4] = "τετρακόσιες"
lektiko['σκέτα100'][5] = "πεντακόσιες"
lektiko['σκέτα100'][6] = "εξακόσιες"
lektiko['σκέτα100'][7] = "επτακόσιες"
lektiko['σκέτα100'][8] = "οκτακόσιες"
lektiko['σκέτα100'][9] = "εννιακόσιες"
 
end
init_nn = function()
lektiko['κατάληξη'][1][2] = "χίλια"
lektiko['σκέτα1_19'][1] = "ένα"
lektiko['σκέτα1_19'][3] = "τρία"
lektiko['σκέτα1_19'][4] = "τέσσερα"
lektiko['σκέτα1_19'][13] = "δεκατρία"
lektiko['σκέτα1_19'][14] = "δεκατέσσερα"
lektiko['σκέτα100'][2] = "διακόσια"
lektiko['σκέτα100'][3] = "τριακόσια"
lektiko['σκέτα100'][4] = "τετρακόσια"
lektiko['σκέτα100'][5] = "πεντακόσια"
lektiko['σκέτα100'][6] = "εξακόσια"
lektiko['σκέτα100'][7] = "επτακόσια"
lektiko['σκέτα100'][8] = "οκτακόσια"
lektiko['σκέτα100'][9] = "εννιακόσια"
end
 
init_gm = function()
lektiko['κατάληξη'][1][1] = "χιλιάδων"
lektiko['κατάληξη'][2][1] = "εκατομμύριων"
lektiko['κατάληξη'][3][1] = "δισεκατομμυρίων"
lektiko['κατάληξη'][4][1] = "τρισεκατομμυρίων"
lektiko['κατάληξη'][5][1] = "τετράκις εκατομμυρίων"
lektiko['κατάληξη'][6][1] = "πεντάκις εκατομμυρίων"
lektiko['κατάληξη'][7][1] = "εξάκις εκατομμυρίων"
lektiko['κατάληξη'][8][1] = "τετράκις εκατομμυρίων"
 
lektiko['κατάληξη'][1][2] = "χίλιων"
lektiko['κατάληξη'][2][2] = "εκατομμυρίου"
lektiko['κατάληξη'][3][2] = "δισεκατομμυρίου"
lektiko['κατάληξη'][4][2] = "τρισεκατομμυρίου"
lektiko['κατάληξη'][5][2] = "τετράκις εκατομμυρίου"
lektiko['κατάληξη'][6][2] = "πεντάκις εκατομμυρίου"
lektiko['κατάληξη'][7][2] = "εξάκις εκατομμυρίου"
lektiko['κατάληξη'][8][2] = "τετράκις εκατομμυρίου"
 
lektiko['σκέτα1_19'][1] = "ενός"
lektiko['σκέτα1_19'][3] = "τριών"
lektiko['σκέτα1_19'][4] = "τεσσάρων"
lektiko['σκέτα1_19'][13] = "δεκατριών"
lektiko['σκέτα1_19'][14] = "δεκατεσσάρων"
lektiko['σκέτα100'][2] = "διακοσίων"
lektiko['σκέτα100'][3] = "τριακοσίων"
lektiko['σκέτα100'][4] = "τετρακοσίων"
lektiko['σκέτα100'][5] = "πεντακοσίων"
lektiko['σκέτα100'][6] = "εξακοσίων"
lektiko['σκέτα100'][7] = "επτακοσίων"
lektiko['σκέτα100'][8] = "οκτακοσίων"
lektiko['σκέτα100'][9] = "εννιακοσίων"
 
lektiko['χιλιάδες1_19'][1]= 'μίας'
lektiko['χιλιάδες1_19'][3]= 'τριών'
lektiko['χιλιάδες1_19'][4]= 'τεσσάρων'
lektiko['χιλιάδες1_19'][13]= 'δεκατριών'
lektiko['χιλιάδες1_19'][14]= 'δεκατεσσάρων'
local xcounter = 2
while xcounter <= 9 do
lektiko['χιλιάδες100'][xcounter] = lektiko['μύρια100'][xcounter]
lektiko['μύρια100'][xcounter] = lektiko['σκέτα100'][xcounter]
xcounter = xcounter + 1
 
end
lektiko['μύρια1_19'][1] = "ενός"
lektiko['μύρια1_19'][3] = "τριών"
lektiko['μύρια1_19'][4] = "τεσσάρων"
lektiko['μύρια1_19'][13] = "δεκατριών"
lektiko['μύρια1_19'][14] = "δεκατεσσάρων"
 
end
 
init_gf = function()
init_gm()
lektiko['σκέτα1_19'][1] = "μιάς"
end
 
init_gn = function()
init_gm()
end
 
init_am = function()
lektiko['κατάληξη'][1][2] = "χίλιους"
lektiko['σκέτα1_19'][1] = "έναν"
 
lektiko['σκέτα100'][2] = "διακόσιους"
lektiko['σκέτα100'][3] = "τριακόσιους"
lektiko['σκέτα100'][4] = "τετρακόσιους"
lektiko['σκέτα100'][5] = "πεντακόσιους"
lektiko['σκέτα100'][6] = "εξακόσιους"
lektiko['σκέτα100'][7] = "επτακόσιους"
lektiko['σκέτα100'][8] = "οκτακόσιους"
lektiko['σκέτα100'][9] = "εννιακόσιους"
end
 
init_af = function()
lektiko['κατάληξη'][1][2] = "χίλιες"
lektiko['σκέτα1_19'][1] = "μία"
 
lektiko['σκέτα100'][2] = "διακόσιες"
lektiko['σκέτα100'][3] = "τριακόσιες"
lektiko['σκέτα100'][4] = "τετρακόσιες"
lektiko['σκέτα100'][5] = "πεντακόσιες"
lektiko['σκέτα100'][6] = "εξακόσιες"
lektiko['σκέτα100'][7] = "επτακόσιες"
lektiko['σκέτα100'][8] = "οκτακόσιες"
lektiko['σκέτα100'][9] = "εννιακόσιες"
end
 
init_an = function()
init_nn()
end
 
initthis = function(sex,case)
if (sex == 1 and case == 1) then lektiko = mw.loadData("Module:ολογράφως/αο")
initall()
ifelseif (sex == 2 and case == 1) then init_nflektiko = mw.loadData("Module:ολογράφως/θο")
elseif (sex == 3 and case == 1) then init_nnlektiko = mw.loadData("Module:ολογράφως/οο")
elseif (sex == 1 and case == 2) then init_gmlektiko = mw.loadData("Module:ολογράφως/αγ")
elseif (sex == 2 and case == 2) then init_gflektiko = mw.loadData("Module:ολογράφως/θγ")
elseif (sex == 3 and case == 2) then init_gnlektiko = mw.loadData("Module:ολογράφως/αγ") --ίδιο με το mw.loadData("Module:ολογράφως/ογ")
elseif (sex == 1 and case == 3) then init_amlektiko = mw.loadData("Module:ολογράφως/αα")
elseif (sex == 2 and case == 3) then init_aflektiko = mw.loadData("Module:ολογράφως/θα")
elseif (sex == 3 and case == 3) then init_anlektiko = mw.loadData("Module:ολογράφως/οο") --ίδιο με το mw.loadData("Module:ολογράφως/οα")
else --do nothing else
end
end
 
export.test2olografos = function(numstr, sexstr, casestr)
-- if sex <1 or sex > 3 or case <1 or case >3 then
-- return error_here("Δεν δόθηκαν σωστά το γένος και η πτώση")
-- end
sex = tonumber(sexstr)
case = tonumber(casestr)
if (sex ~= 1 or sex ~= 2 or sex ~= 3) then sex = 3 end--ουδέτερο
if (case ~= 1 or case ~= 2 or case ~= 3) then case = 1 end--ονομαστική
initthis(sex, case)
num = tonumber(numstr)
local deksia = {}
local ycounter = 1
local rest2, dyada
local rest, triada = divmod(num,1000)
if triada == 0 then
deksia[ycounter] = ''
else
rest2, dyada = divmod(triada, 100)
end
 
if dyada == 0 then
deksia[ycounter] = ''
elseif dyada < 20 then
deksia[ycounter] = lektiko['σκέτα1_19'][dyada]
else
deksia[ycounter] = lektiko['σκέτα1_19'][dyada % 10]
ycounter = ycounter+1
deksia[ycounter] = lektiko['σκέτα20_99'][math.floor(dyada / 10)]
end
if rest2 == 0 then
--pass
elseif rest2 == 1 then
if deksia[ycounter] == '' then
deksia[ycounter] = 'εκατό ' .. deksia[ycounter]
else
deksia[ycounter] = 'εκατόν ' .. deksia[ycounter]
end
else
deksia[ycounter] = lektiko['σκέτα100'][rest2] .. ' ' .. deksia[ycounter]
end
 
if rest > 0 then --χιλιάδες
ycounter = ycounter+1
rest2 = 0
dyada = 0
rest, triada = divmod(rest, 1000)
if triada == 0 then --έχει μηδενικές χιλιάδες π.χ. 1000256
deksia[ycounter] = ''
else
rest2, dyada = divmod(triada, 100)--rest2=πόσες εκατοντάδες χιλιάδας έχει
if dyada == 0 then
deksia[ycounter] = ''
elseif dyada == 1 then --αν τα δύο δεξιά ψηφία είναι 01
if rest2 > 0 then --αν δεν έχει εκατοντάδα χιλιάδας
deksia[ycounter] = lektiko['χιλιάδες1_19'][1] .. ' ' .. lektiko['κατάληξη'][1][1]
else
deksia[ycounter] = lektiko['κατάληξη'][1][2]
end
elseif dyada < 20 then --τα δύο δεξιά ψηφία είναι μεταξύ 2 και 19
deksia[ycounter] = lektiko['χιλιάδες1_19'][dyada] .. ' ' .. lektiko['κατάληξη'][1][1]
else--μεταξύ 20 και 99
--μονάδες
deksia[ycounter] = lektiko['χιλιάδες1_19'][dyada % 10] .. ' ' .. lektiko['κατάληξη'][1][1]
--δεκάδες
deksia[ycounter] = lektiko['χιλιάδες20_99'][math.floor(dyada / 10)] .. ' ' .. deksia[ycounter]
end
end
if rest2 == 0 then
--pass
elseif rest2 == 1 then
if deksia[ycounter] == '' then --έχει ακριβώς 100 χιλιάδες
deksia[ycounter] = 'εκατό ' .. lektiko['κατάληξη'][1][1]
else --είχε και κάποιες χιλιάδες π.χ. 132
deksia[ycounter] = 'εκατόν ' .. deksia[ycounter]
end
else --έχει παραπάνω από 199 χιλιάδες...
if deksia[ycounter] == '' then --έχει ακέραιο αριθμό εκατοντάδων χιλιάδων
deksia[ycounter] = lektiko['χιλιάδες100'][rest2] .. ' ' .. lektiko['κατάληξη'][1][1]
else --έχει και κάτι ψιλά... που τα βρήκα πριν
deksia[ycounter] = lektiko['χιλιάδες100'][rest2] .. ' ' .. deksia[ycounter]
end
end
end
myria=1
while rest > 0 do
ycounter = ycounter+1
myria = myria + 1
rest2 = 0
dyada = 0
rest, triada = divmod(rest, 1000)
 
if triada == 0 then --έχει μηδενικά "εκατομμύρια" π.χ. 1000000256
deksia[ycounter] = ''
else
rest2, dyada = divmod(triada, 100)--rest2=πόσες εκατοντάδες από τα αντίστοιχα εκατομμύρια έχει
if dyada == 0 then
deksia[ycounter] = ''
elseif dyada == 1 then --αν τα δύο δεξιά ψηφία είναι 01
if rest2 > 0 then --αν δεν έχει εκατοντάδα χιλιάδας
deksia[ycounter] = lektiko['μύρια1_19'][1] .. ' ' .. lektiko['κατάληξη'][myria][1]
else
deksia[ycounter] = lektiko['κατάληξη'][1][1]
end
elseif dyada < 20 then --τα δύο δεξιά ψηφία είναι μεταξύ 2 και 19
deksia[ycounter] = lektiko['χιλιάδες1_19'][dyada] .. ' ' .. lektiko['κατάληξη'][myria][1]
else--μεταξύ 20 και 99
--μονάδες
deksia[ycounter] = lektiko['χιλιάδες1_19'][dyada % 10] .. ' ' .. lektiko['κατάληξη'][myria][1]
--δεκάδες
deksia[ycounter] = lektiko['χιλιάδες20_99'][math.floor(dyada / 10)] .. ' ' .. deksia[ycounter]
end
end
if rest2 == 0 then
--pass
elseif rest2 == 1 then
if deksia[ycounter] == '' then --έχει ακριβώς 100 χιλιάδες
deksia[ycounter] = 'εκατό ' .. lektiko['κατάληξη'][myria][1]
else --είχε και κάποιες χιλιάδες π.χ. 132
deksia[ycounter] = 'εκατόν ' .. deksia[ycounter]
end
else --έχει παραπάνω από 199 χιλιάδες...
if deksia[ycounter] == '' then --έχει ακέραιο αριθμό εκατοντάδων χιλιάδων
deksia[ycounter] = lektiko['χιλιάδες100'][rest2] .. ' ' .. lektiko['κατάληξη'][myria][1]
else --έχει και κάτι ψιλά... που τα βρήκα πριν
deksia[ycounter] = lektiko['χιλιάδες100'][rest2] .. ' ' .. deksia[ycounter]
end
end
 
 
end --do while rest
 
--return rest, triada, num, dyada,rest2,deksia[ycounter]
local theanswer = table.concat(ReverseTable(deksia)," ")
return ycounter,deksia[ycounter], "#" .. remove_extra_delim(theanswer, " ") .. "#"
end
 
export.test3 =function(numstr, sexstr, casestr)
-- if sex <1 or sex > 3 or case <1 or case >3 then
-- return error_here("Δεν δόθηκαν σωστά το γένος και η πτώση")
Γραμμή 471 ⟶ 94 :
deksia[ycounter] = ''
elseif dyada == 1 then --αν τα δύο δεξιά ψηφία είναι 01
if rest2 > 0 then --αν δεν έχει εκατοντάδα χιλιάδας
deksia[ycounter] = lektiko['χιλιάδες1_19'][1] .. ' ' .. lektiko['κατάληξη'][1][1]
else
Γραμμή 516 ⟶ 139 :
deksia[ycounter] = ''
elseif dyada == 1 then --αν τα δύο δεξιά ψηφία είναι 01
if rest2 > 0 then --αν δεν έχει εκατοντάδα χιλιάδας"μύριου"
deksia[ycounter] = lektiko['μύρια1_19'][1] .. ' ' .. lektiko['κατάληξη'][myria][1]
else
Γραμμή 522 ⟶ 145 :
end
elseif dyada < 20 then --τα δύο δεξιά ψηφία είναι μεταξύ 2 και 19
deksia[ycounter] = lektiko['χιλιάδες1_19μύρια1_19'][dyada] .. ' ' .. lektiko['κατάληξη'][myria][1]
else--μεταξύ 20 και 99
--μονάδες
deksia[ycounter] = lektiko['χιλιάδες1_19μύρια1_19'][dyada % 10] .. ' ' .. lektiko['κατάληξη'][myria][1]
--δεκάδες
deksia[ycounter] = lektiko['χιλιάδες20_99μύρια20_99'][math.floor(dyada / 10)] .. ' ' .. deksia[ycounter]
end
end
Γραμμή 533 ⟶ 156 :
--pass
elseif rest2 == 1 then
if deksia[ycounter] == '' then --έχει ακριβώς 100 χιλιάδες"μύρια"
deksia[ycounter] = 'εκατό ' .. lektiko['κατάληξη'][myria][1]
else --είχε και κάποιες χιλιάδες π.χ. 132
Γραμμή 539 ⟶ 162 :
end
else --έχει παραπάνω από 199 χιλιάδες...
if deksia[ycounter] == '' then --έχει ακέραιο αριθμό εκατοντάδων χιλιάδων"μυρίων"
deksia[ycounter] = lektiko['χιλιάδες100μύρια100'][rest2] .. ' ' .. lektiko['κατάληξη'][myria][1]
else --έχει και κάτι ψιλά... που τα βρήκα πριν
deksia[ycounter] = lektiko['χιλιάδες100μύρια100'][rest2] .. ' ' .. deksia[ycounter]
end
end
Γραμμή 555 ⟶ 178 :
return remove_extra_delim(theanswer, " ")
end
 
export.olografos = function (frame)
local args = frame.args
numstr = args[1] or ''
sexstr = args[2] or ''
casestr = args[3] or ''
b = export.test3 (numstr, sexstr, casestr)
return b
end
 
export.testdivmod = function(num,divider)
return math.floor(num / divider), num % divider
end
 
 
return export