ข้ามไปเนื้อหา

มอดูล:number list/data/hrx

จาก วิกิพจนานุกรม พจนานุกรมเสรี

This module contains data on various types of numbers in ฮุนสริก.

จำนวน เชิงการนับ เชิงอันดับที่ เชิงกริยาวิเศษณ์ เชิงรวบรวม เศษส่วน (⅟…) Fractional prefix
0 null nullt nie
1 een, enns eerst eenmol ganz
2 zweu zwett Doppel halleb halleb-
3 drei dritt
4 fier fiert
5 finnef finneft
6 sechs sechst
7 sieve sibt
8 acht acht Achtel
9 nein neint
10 zehn zehnt
11 ellef elleft
12 zwellef zwelleft Dutzend
13 dreizen dreizent
14 ferzen ferzent
15 fufzen fufzent
16 sechzen sechzent
17 sibzen sibzent
18 achtzen achtzent
19 neinzen neinzent
20 zwanzich zwanzichst
21 enn-un-zwanzich enn-un-zwanzichst
22 zweu-un-zwanzich zweu-un-zwanzichst
23 drei-un-zwanzich drei-un-zwanzichst
24 fier-un-zwanzich fier-un-zwanzichst
25 finnef-un-zwanzich finnef-un-zwanzichst
26 sechs-un-zwanzich sechs-un-zwanzichst
27 sieve-un-zwanzich sieve-un-zwanzichst
28 acht-un-zwanzich acht-un-zwanzichst
29 nein-un-zwanzich nein-un-zwanzichst
30 dreisich dreisichst
31 enn-un-dreisich enn-un-dreisichst
32 zweu-un-dreisich zweu-un-dreisichst
33 drei-un-dreisich drei-un-dreisichst
34 fier-un-dreisich fier-un-dreisichst
35 finnef-un-dreisich finnef-un-dreisichst
36 sechs-un-dreisich sechs-un-dreisichst
37 sieve-un-dreisich sieve-un-dreisichst
38 acht-un-dreisich acht-un-dreisichst
39 nein-un-dreisich nein-un-dreisichst
40 ferzich ferzichst
41 enn-un-ferzich enn-un-ferzichst
42 zweu-un-ferzich zweu-un-ferzichst
43 drei-un-ferzich drei-un-ferzichst
44 fier-un-ferzich fier-un-ferzichst
45 finnef-un-ferzich finnef-un-ferzichst
46 sechs-un-ferzich sechs-un-ferzichst
47 sieve-un-ferzich sieve-un-ferzichst
48 acht-un-ferzich acht-un-ferzichst
49 nein-un-ferzich nein-un-ferzichst
50 fufzich fufzichst
51 enn-un-fufzich enn-un-fufzichst
52 zweu-un-fufzich zweu-un-fufzichst
53 drei-un-fufzich drei-un-fufzichst
54 fier-un-fufzich fier-un-fufzichst
55 finnef-un-fufzich finnef-un-fufzichst
56 sechs-un-fufzich sechs-un-fufzichst
57 sieve-un-fufzich sieve-un-fufzichst
58 acht-un-fufzich acht-un-fufzichst
59 nein-un-fufzich nein-un-fufzichst
60 sechzich sechzichst
61 enn-un-sechzich enn-un-sechzichst
62 zweu-un-sechzich zweu-un-sechzichst
63 drei-un-sechzich drei-un-sechzichst
64 fier-un-sechzich fier-un-sechzichst
65 finnef-un-sechzich finnef-un-sechzichst
66 sechs-un-sechzich sechs-un-sechzichst
67 sieve-un-sechzich sieve-un-sechzichst
68 acht-un-sechzich acht-un-sechzichst
69 nein-un-sechzich nein-un-sechzichst
70 sibzich sibzichst
71 enn-un-sibzich enn-un-sibzichst
72 zweu-un-sibzich zweu-un-sibzichst
73 drei-un-sibzich drei-un-sibzichst
74 fier-un-sibzich fier-un-sibzichst
75 finnef-un-sibzich finnef-un-sibzichst
76 sechs-un-sibzich sechs-un-sibzichst
77 sieve-un-sibzich sieve-un-sibzichst
78 acht-un-sibzich acht-un-sibzichst
79 nein-un-sibzich nein-un-sibzichst
80 achtzich achtzichst
81 enn-un-achtzich enn-un-achtzichst
82 zweu-un-achtzich zweu-un-achtzichst
83 drei-un-achtzich drei-un-achtzichst
84 fier-un-achtzich fier-un-achtzichst
85 finnef-un-achtzich finnef-un-achtzichst
86 sechs-un-achtzich sechs-un-achtzichst
87 sieve-un-achtzich sieve-un-achtzichst
88 acht-un-achtzich acht-un-achtzichst
89 nein-un-achtzich nein-un-achtzichst
90 neinzich neinzichst
91 enn-un-neinzich enn-un-neinzichst
92 zweu-un-neinzich zweu-un-neinzichst
93 drei-un-neinzich drei-un-neinzichst
94 fier-un-neinzich fier-un-neinzichst
95 finnef-un-neinzich finnef-un-neinzichst
96 sechs-un-neinzich sechs-un-neinzichst
97 sieve-un-neinzich sieve-un-neinzichst
98 acht-un-neinzich acht-un-neinzichst
99 nein-un-neinzich nein-un-neinzichst
100 hunnerd, een-hunnerd hunnerdst
101 hunnerd-enn, een-hunnerd-een hunnerd-erst, een-hunnerd-erst
200 zweu-hunnerd zweu-hunnerdst
300 drei-hunnerd drei-hunnerdst
400 fier-hunnerd fier-hunnerdst
500 finnef-hunnerd finnef-hunnerdst
600 sechs-hunnerd sechs-hunnerdst
700 sieve-hunnerd sieve-hunnerdst
800 acht-hunnerd acht-hunnerdst
900 nein-hunnerd nein-hunnerdst
1,000 tausend, een-tausend, mil tausendst
2,000 zweu-tausend zweu-tausendst
3,000 drei-tausend drei-tausendst
4,000 fier-tausend fier-tausendst
5,000 finnef-tausend finnef-tausendst
6,000 sechs-tausend sechs-tausendst
7,000 sieve-tausend sieve-tausendst
8,000 acht-tausend acht-tausendst
9,000 nein-tausend nein-tausendst
10,000 zehn-tausend zehn-tausendst
20,000 zwanzich-tausend zwanzich-tausendst
30,000 dreisich-tausend dreisich-tausendst
40,000 ferzich-tausend ferzich-tausendst
50,000 fufzich-tausend fufzich-tausendst
60,000 sechzich-tausend sechzich-tausendst
70,000 sibzich-tausend sibzich-tausendst
80,000 achtzich-tausend achtzich-tausendst
90,000 neinzich-tausend neinzich-tausendst
100,000 hunnerd-tausend, een-hunnerd-tausend hunnerd-tausendst, een-hunnerd-tausendst
200,000 zweu-hunnerd-tausend zweu-hunnerd-tausendst
300,000 drei-hunnerd-tausend drei-hunnerd-tausendst
400,000 fier-hunnerd-tausend fier-hunnerd-tausendst
500,000 finnef-hunnerd-tausend finnef-hunnerd-tausendst
600,000 sechs-hunnerd-tausend sechs-hunnerd-tausendst
700,000 sieve-hunnerd-tausend sieve-hunnerd-tausendst
800,000 acht-hunnerd-tausend acht-hunnerd-tausendst
900,000 nein-hunnerd-tausend nein-hunnerd-tausendst
1,000,000 (106) Million millionst
2,000,000 (2 × 106) zweu-Millione zweu-Millionst
10,000,000 (107) zehn-Millione zehn-Millionst
100,000,000 (108) hunnerd-Millione hunnerd-Millionst
1,000,000,000 (109) Billion billionst
2,000,000,000 (2 × 109) zweu-Billione zweu-Billionst
10,000,000,000 (1010) zehn-Billione zehn-Billionst
100,000,000,000 (1011) hunnerd-Billione hunnerd-Billionst

local export = {numbers = {}}

local m_numutils = require("Module:number list/utils")
local map = m_numutils.map
local power_of = m_numutils.power_of

export.additional_number_types = {
	{key = "fractional_prefix", after = "fractional"},
}

local numbers = export.numbers

local lcfirst = function(text) return mw.getContentLanguage():lcfirst(text) end
local ucfirst = function(text) return mw.getContentLanguage():ucfirst(text) end

local function add_ordinal_suffix(num, term)
	term = lcfirst(term):gsub("e$", "")
	if type(num) == "number" and num < 20 then
		return term .. "t"
	else
		return term .. "st"
	end
end

local function add_suffix(numstr, term, suffix)
	term = lcfirst(term):gsub("e$", "")
	if #numstr >= 7 and not term:find("en$") then
		-- Million -> millionenmal, Milliarde -> milliardenmal
		term = term .. "en"
	end
	return term .. suffix
end

local function has_polygon(num)
	if type(num) == "string" then
		return false
	end
	return num >= 3 and num <= 22 or num == 24 or num == 27 or num == 28 or num == 30 or num == 31 or num == 32 or
		num == 34 or num == 36 or num == 40 or num == 48 or num == 50 or num == 51 or num == 60 or num == 70 or
		num == 80
end

local function make_number(num, props, card_base)
	local numstr = m_numutils.format_fixed(num)

	card_base = card_base or props.cardinal
	props.ordinal = props.ordinal or map(function(card) return add_ordinal_suffix(num, card) end, card_base)
	props.ordinal_abbr = ordinal_abbr
	if props.adverbial == true then
		props.adverbial = map(function(card) return add_suffix(numstr, card, "mol") end, card_base)
	end
	if props.adverbial and type(num) == "number" and num <= 100 then
		props.adverbial_abbreviation = num .. "-mol"
	end
	if props.sequence_adverb == true then
		props.sequence_adverb = map(function(ord) return ord .. "ns" end, props.ordinal)
	end

	numbers[num] = props
end

make_number(0, {
	cardinal = "null",
    adverbial = "nie",
})
make_number(1, {
	cardinal = {"een", "enns"},
	ordinal = "eerst",
	adverbial = "eenmol",
	fractional = "ganz",
}, "ein")
make_number(2, {
	cardinal = "zweu",
	ordinal = "zwett",
	collective = "Doppel",
	fractional = "halleb",
	fractional_prefix = "halleb-",
})

-- Do numbers 3 through 12.
for i, cardinal in ipairs { "drei", "fier", "finnef", "sechs", "sieve", "acht", "nein", "zehn", "ellef", "zwellef" } do
	local num = i + 2
	local ordinal
	if num == 3 then
		ordinal = "dritt"
	elseif num == 7 then
		ordinal = "sibt"
	elseif num == 8 then
		fractional = "Achtel"
		ordinal = "acht"
	elseif num == 9 then
		fractional = nil
	elseif num == 10 then
		fractional = nil
	elseif num == 11 then
		fractional = nil
	elseif num == 12 then
		fractional = nil
		collective = "Dutzend"
	else
		ordinal = cardinal .. "t"
	end
	make_number(num, {
		cardinal = cardinal,
		fractional = fractional,
		ordinal = ordinal,
		collective = collective,
	})
end

-- Do numbers 13 through 19.
for i, teen in ipairs {
	"dreizen", "ferzen", "fufzen", "sechzen", "sibzen", "achtzen", "neinzen"
} do
	local num = i + 12
	make_number(num, {
		cardinal = teen,
	})
end

-- Do numbers 20 through 99.
for i, tens_cardinal in ipairs {
	"zwanzich", "dreisich", "ferzich", "fufzich",
	"sechzich", "sibzich", "achtzich", "neinzich",
} do
	local tens = (i + 1) * 10
	for ones = 0, 9 do
		local num = tens + ones
		local ones_prefix
		if ones == 0 then
			ones_prefix = ""
		elseif ones == 1 then
			ones_prefix = "enn-un-"
		else
			ones_prefix = numbers[ones].cardinal .. "-un-"
		end
		local cardinal = map(function(tens_card) return ones_prefix .. tens_card end, tens_cardinal)
		make_number(num, {
			cardinal = cardinal,
		})
	end
end

make_number(100, {
	cardinal = {"hunnerd", "een-hunnerd"},
}, "hunnerd")

make_number(101, {
	cardinal = {"hunnerd-enn", "een-hunnerd-een"},
	ordinal = {"hunnerd-erst", "een-hunnerd-erst"},
})

-- Do numbers 200 through 900 by 100.
for i=200, 900, 100 do
	make_number(i, {
		cardinal = numbers[i / 100].cardinal .. "-hunnerd",
	})
end

make_number(1000, {
	cardinal = {"tausend", "een-tausend", "mil"},
}, "tausend")

local function make_large_number(num, cardinal)
	make_number(num, {
		cardinal = cardinal,
	})
end

-- Do numbers 2000 through 9000 by 1000.
for i=2000, 9000, 1000 do
	make_large_number(i, numbers[i / 1000].cardinal .. "-tausend")
end

-- Do numbers 10,000 through 90,000 by 10,000.
for i=10000, 90000, 10000 do
	make_large_number(i,
		-- Need to use map() because of 30.
		map(function(base_card) return base_card .. "-tausend" end, numbers[i / 1000].cardinal)
	)
end

-- Do numbers 100,000 through 900,000 by 100,000.
for i=100000, 900000, 100000 do
	make_large_number(i,
		-- Need to use map() because of 100.
		map(function(base_card) return base_card .. "-tausend" end, numbers[i / 1000].cardinal)
	)
end

make_large_number(1000000, "Million")
make_large_number(2000000, "[[zweu]]-[[Million]]e")
make_large_number(power_of(7), "[[zehn]]-[[Million]]e")
make_large_number(power_of(8), "[[hunnerd]]-[[Million]]e")
make_large_number(power_of(9), "Billion")
make_large_number(power_of(9, 2), "[[zweu]]-[[Billion]]e")
make_large_number(power_of(10), "[[zehn]]-[[Billion]]e")
make_large_number(power_of(11), "[[hunnerd]]-[[Billion]]e")

return export