From 218f566a543df38b73a0388e4db92dab0741ce1e Mon Sep 17 00:00:00 2001 From: Aaro Saila Date: Thu, 26 Feb 2026 22:58:59 +0200 Subject: [PATCH] ch06 exercises --- exercises/ch06/ex6_1.lua | 8 ++++++++ exercises/ch06/ex6_2.lua | 5 +++++ exercises/ch06/ex6_3.lua | 7 +++++++ exercises/ch06/ex6_4.lua | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 54 insertions(+) create mode 100644 exercises/ch06/ex6_1.lua create mode 100644 exercises/ch06/ex6_2.lua create mode 100644 exercises/ch06/ex6_3.lua create mode 100644 exercises/ch06/ex6_4.lua diff --git a/exercises/ch06/ex6_1.lua b/exercises/ch06/ex6_1.lua new file mode 100644 index 0000000..b015de6 --- /dev/null +++ b/exercises/ch06/ex6_1.lua @@ -0,0 +1,8 @@ +local function print_array(a) + for _, v in pairs(a) do + print(v) + end +end + +print_array({ 1, 2, 3 }) +print_array({ "a", 2, "hello", 99 }) diff --git a/exercises/ch06/ex6_2.lua b/exercises/ch06/ex6_2.lua new file mode 100644 index 0000000..6449623 --- /dev/null +++ b/exercises/ch06/ex6_2.lua @@ -0,0 +1,5 @@ +local function f(...) + return select(2, ...) +end + +print(f(1, 2, 3, 4)) diff --git a/exercises/ch06/ex6_3.lua b/exercises/ch06/ex6_3.lua new file mode 100644 index 0000000..57f2051 --- /dev/null +++ b/exercises/ch06/ex6_3.lua @@ -0,0 +1,7 @@ +local function f(...) + local t = table.pack(...) + return table.unpack(t, 1, t.n - 1) +end + +print(f(1, 2, 3, 4)) +print(f("a", "b", "c", "d")) diff --git a/exercises/ch06/ex6_4.lua b/exercises/ch06/ex6_4.lua new file mode 100644 index 0000000..7215df5 --- /dev/null +++ b/exercises/ch06/ex6_4.lua @@ -0,0 +1,34 @@ +local function shuffle(l) + for i = 1, #l do + local new_i = math.random(1, #l) + local tmp = l[new_i] + l[new_i] = l[i] + l[i] = tmp + end +end + +local function table_str(t) + local str = "{" + for _, v in pairs(t) do + if type(v) == "string" then + v = '"' .. v .. '"' + end + str = ("%s %s,"):format(str, v) + end + + str = str .. " }" + + return str +end + +local function test(l) + local str = ("%s -> "):format(table_str(l)) + shuffle(l) + str = str .. table_str(l) + print(str) +end + +math.randomseed(os.time()) + +test({ 1, 2, 3, 4 }) +test({ "a", "b", "c", "d" })