started ch05

This commit is contained in:
2026-02-22 17:52:08 +02:00
parent 2d9b2318a9
commit 53d5f2878c
3 changed files with 71 additions and 0 deletions

52
exercises/ch04/ex4_9.lua Normal file
View File

@@ -0,0 +1,52 @@
local function remove(str, start, _end)
-- print(start, _end, str:sub(start, start), str:sub(_end, _end))
local start_part = str:sub(1, start - 1)
local end_part = str:sub(_end + 1, -1)
return start_part .. end_part
end
local function remove_patterns(str, pattern)
while true do
local rem_start, rem_end, _ = str:find(pattern)
if rem_start == nil then
break
end
-- print(str, pattern, rem_start, rem_end)
str = remove(str, rem_start, rem_end)
-- print(str)
end
return str
end
local function ispali(str)
str = str:lower()
-- format
str = remove_patterns(str, "%s")
str = remove_patterns(str, "%p")
for i = 1, utf8.len(str) do
local idx = utf8.offset(str, i)
local idx_rev = utf8.offset(str, -i)
local ch_code = utf8.codepoint(str, idx)
local ch_code_rev = utf8.codepoint(str, idx_rev)
if ch_code ~= ch_code_rev then
return false
end
end
return true
end
local function test(str)
print(("%s: %q"):format(str, ispali(str)))
end
test("step ön nö pets")
test("bänänä")
print()
test("step. ön nö pets!")
test("bänänä??")

3
exercises/ch05/ex5_1.lua Normal file
View File

@@ -0,0 +1,3 @@
local sunday = "monday"; monday = "sunday"
local t = {sunday = "monday", [sunday] = monday}
print(t.sunday, t[sunday], t[t.sunday])

16
exercises/ch05/ex5_3.lua Normal file
View File

@@ -0,0 +1,16 @@
local escape_sequences = {
["\a"] = "bell",
["\b"] = "back space",
["\f"] = "form feed",
["\n"] = "newline",
["\r"] = "carriage return",
["\t"] = "horizontal tab",
["\v"] = "vertical tab",
["\\"] = "backslash",
["\""] = "double quote",
["\'"] = "single quote"
}
for k, v in pairs(escape_sequences) do
print(("k='%s', v='%s'"):format(k, v))
end