24. Library tabel — Solusi PR
File solusi .lua ada di
exercises/24/homework/solutions/.
Soal 1 — Daftar belanja
Soal. Cetak daftar nama dalam satu baris, dipisahkan koma.
Solusi.
local items = {"milk", "bread", "eggs", "apples"}
print(table.concat(items, ", "))Keluaran:
milk, bread, eggs, apples
Kesalahan umum.
- Membuat baris secara manual dengan perulangan dan
... Bisa berhasil, tapitable.concatadalah alat satu baris yang tepat untuk ini.
Soal 2 — Dari besar ke kecil
Soal. Urutkan angka dari yang terbesar ke terkecil, lalu cetak semuanya.
Cara memikirkannya. Berikan table.sort
sebuah komparator yang mengembalikan true ketika angka
pertama lebih besar.
Solusi.
local nums = {30, 12, 7, 24}
table.sort(nums, function(a, b)
return a > b
end)
print(table.concat(nums, " "))Keluaran:
30 24 12 7
Kesalahan umum.
- Menulis
return a < b, yang menghasilkan urutan menaik. Komparator menjawab pertanyaan "apakahaharus berada lebih dulu?" — untuk urutan terbesar duluan,amenang ketika lebih besar.
Soal 3 — Papan peringkat
Soal. Urutkan nama secara alfabetis dan cetak sebagai daftar bernomor.
Cara memikirkannya. table.sort tanpa
komparator akan mengurutkan teks secara alfabetis. Lalu jalan dengan
ipairs, cetak posisi dan nama.
Solusi.
local players = {"Ben", "Ada", "Cara", "Dan"}
table.sort(players)
for i, name in ipairs(players) do
print(i .. ". " .. name)
endKeluaran:
1. Ada
2. Ben
3. Cara
4. Dan
Tantangan — Tiga teratas
Soal. Urutkan dari terbesar dan cetak tiga teratas.
Cara memikirkannya. Urutkan secara menurun, lalu
salin posisi 1, 2, dan 3 ke dalam tabel kecil dan concat
tabel itu.
Solusi.
local scores = {30, 12, 45, 7, 24, 50}
table.sort(scores, function(a, b)
return a > b
end)
local top = {scores[1], scores[2], scores[3]}
print(table.concat(top, " "))Keluaran:
50 45 30
Kesalahan umum.
- Mencetak
scores[1] .. scores[2] .. scores[3]tanpa spasi, menghasilkan504530. Tabel kecil ditambahconcatdengan" "menjaga jarak antar angka.
Selesai?
Sekarang kamu sudah punya alat-alat paling berguna dari library
tabel: insert, remove, concat,
sort, dan unpack. Bab terakhir Bagian 5 —
Modul dan require — menunjukkan cara memisahkan program
ke dalam beberapa file.