-
Notifications
You must be signed in to change notification settings - Fork 0
/
functions.lua
59 lines (54 loc) · 1.91 KB
/
functions.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
function string_to_numer_alphabetical_order(str)
-- returns a number between 101 and 127
-- order of the returned numbers is the same as the alphabetical order of the input strings
str = string.lower(str)
local number = 100
-- print()
for i = 1, #str do
local c = str:sub(i,i)
--print(c)
local c_num = char_to_num(c)
--print(c_num)
local scaled = c_num / (char_to_num('z')+1)^(i-1)
--print(char_to_num('z'))
--print(scaled)
number = number + scaled
end
return number
end
function char_to_num(c)
-- print("char? ", c)
-- print("number? ", tonumber(c, 36))
-- 'a' = 1; 'b' = 2; ... 'z' = 26
local numberwith9more = tonumber(c, 36)
if a == nil then
return 0
end
return number_with9more-9
end
--- test cases
-- print(string_to_numer_alphabetical_order('a'))
-- print(string_to_numer_alphabetical_order('aa'))
-- print(string_to_numer_alphabetical_order('aaa'))
-- print(string_to_numer_alphabetical_order('aaaaaaa'))
-- print(string_to_numer_alphabetical_order('azzzzzz'))
-- print(string_to_numer_alphabetical_order('b'))
-- print(string_to_numer_alphabetical_order('ba'))
-- print(string_to_numer_alphabetical_order('bzz'))
-- print(string_to_numer_alphabetical_order('caaaa'))
-- print(string_to_numer_alphabetical_order('caaab'))
-- print(string_to_numer_alphabetical_order('y'))
-- print(string_to_numer_alphabetical_order('zz'))
-- print(string_to_numer_alphabetical_order('zzzzzzzzzzzzzz'))
local texture_listing = minetest.get_dir_list(MODPATH.."/textures")
function cat_icon(category_name)
local first_char = string.lower(category_name):sub(1,1)
if file_exists(MODPATH.."/textures/autoinvcat_cat_".. first_char .. ".png") then
return "autoinvcat_cat_".. first_char .. ".png"
end
return "autoinvcat_fallback.png"
end
function file_exists(name)
local f=io.open(name,"r")
if f~=nil then io.close(f) return true else return false end
end