【Lua】題目小練11

-- 題目1:-- 給定表 t = {"apple", "banana", "apple", "orange", "banana", "apple"}

-- 寫一個函數 countFreq(tbl) 返回一個新表,統計每個元素出現次數

-- 例如:返回 {apple=3, banana=2, orange=1}

local function countFreq(tbl)local result = {}for _, v in pairs(tbl) doresult[v] = (result[v] or 0) + 1endreturn result
end-- 測試題目1
local t1 = {"apple", "banana", "apple", "orange", "banana", "apple"}
local freq = countFreq(t1)
print("題目1結果:")
for key, value in pairs(freq) doprint(key .. ": " .. value)
end
print()

-- 題目 2:合并表

-- 給定兩個表 t1 = {1,2,3} 和 t2 = {4,5,6}

-- 寫一個函數 mergeTable(t1, t2) 返回一個合并后的表 {1,2,3,4,5,6}

local function mergeTable(t1, t2)local result = {}-- 復制t1的元素for i, v in ipairs(t1) doresult[i] = vend-- 添加t2的元素for i, v in ipairs(t2) dotable.insert(result, v)endreturn result
end-- 測試題目2
local table1 = {1,2,3}
local table2 = {4,5,6}
local merged = mergeTable(table1, table2)
print("題目2結果:")
for i, v in ipairs(merged) doprint(i .. ": " .. v)
end
print()

-- 題目3:惰性計數器

-- 寫一個函數 makeCounter(start)

-- 返回一個函數,每次調用返回計數器的下一個值

-- 例如:

-- c = makeCounter(10)

-- print(c()) --> 11

-- print(c()) --> 12

local function makeCounter(start)if type(start) ~= "number" thenerror("起始值必須是數字")endlocal count = startreturn function()count = count + 1return countend
end-- 測試題目3
print("題目3結果:")
local c = makeCounter(10)
print("第一次調用:", c()) --> 11
print("第二次調用:", c()) --> 12
print("第三次調用:", c()) --> 13
print()

-- 題目 4:高階函數 map

-- 寫一個函數 map(tbl, func)

-- 返回一個新表,每個元素是 func(原元素) 的返回值

-- 例如:map({1,2,3}, function(x) return x^2 end) 返回 {1,4,9}

local function map(tbl, func)local result = {}for i, v in ipairs(tbl) doresult[i] = func(v)endreturn result
end-- 測試題目4
print("題目4結果:")
local numbers = {1, 2, 3}
local squares = map(numbers, function(x) return x^2 end)
for i, v in ipairs(squares) doprint(i .. ": " .. v)
end
print()

-- 題目5:提取數字

-- 寫一個函數 extractNumbers(str)

-- 輸入:"a1b23c456"

-- 輸出表 {1,23,456}

local function extractNumbers(str)local result = {}for num in str:gmatch("%d+") do  -- gmatch會找到所有匹配的數字table.insert(result, tonumber(num))endreturn result
end-- 測試題目5
print("題目5結果:")
local numbers = extractNumbers("a1b23c456")
for i, v in ipairs(numbers) doprint(i .. ": " .. v)
end
print()

-- 題目6:郵箱驗證

-- 寫一個函數 isEmail(str)

-- 如果 str 是郵箱格式(xxx@yyy.zzz)返回 true,否則 false

-- 使用 Lua 模式匹配

local function isEmail(str)if type(str) ~= "string" thenreturn falseend-- 更合理的郵箱模式:至少一個字符@至少一個字符.至少一個字符local pattern = "^[%w%.%-_]+@[%w%.%-]+%.%w+$"return str:match(pattern) ~= nil
end-- 測試題目6
print("題目6結果:")
print("test@example.com:", isEmail("test@example.com"))
print("invalid.email:", isEmail("invalid.email"))
print("user@domain.co.uk:", isEmail("user@domain.co.uk"))
print()

-- 題目 7:學生成績表

-- 有學生表 students = {

-- ? ?{name="Tom", score={math=90, english=85}},

-- ? ?{name="Lucy", score={math=95, english=92}},

-- ? ?{name="Jack", score={math=85, english=88}}

-- }

-- 寫函數 averageMath(students) 返回數學平均分

local function averageMath(students)local sum = 0local count = 0for _, student in ipairs(students) dosum = sum + student.score.mathcount = count + 1endreturn sum / count
end-- 測試題目7
print("題目7結果:")
local students = {{name="Tom", score={math=90, english=85}},{name="Lucy", score={math=95, english=92}},{name="Jack", score={math=85, english=88}}
}
print("數學平均分:", averageMath(students))
print()

-- 題目 8:去重并排序

-- 給定表 t = {5,2,7,2,3,5,8,1}

-- 寫一個函數 uniqueSort(tbl)

-- 返回一個新表,內容去重并從小到大排序 {1,2,3,5,7,8}

local function uniqueSort(tbl)if type(tbl) ~= "table" then  -- 這里原來寫錯了print("輸入錯誤")return nilend-- 用哈希表去重local seen = {}local unique = {}for _, v in ipairs(tbl) doif not seen[v] thenseen[v] = truetable.insert(unique, v)endend-- 排序table.sort(unique)return unique
end-- 測試題目8
print("題目8結果:")
local testArray = {5,2,7,2,3,5,8,1}
local result = uniqueSort(testArray)
for i, v in ipairs(result) doprint(i .. ": " .. v)
end
print()

-- 題目 9:嵌套表深度求和

-- 給定表 t = {1, {2, 3}, {4, {5, 6}}}

-- 寫函數 sumNested(tbl) 返回所有數字的和 1+2+3+4+5+6 = 21

local function sumNested(tbl)if type(tbl) ~= "table" thenreturn 0  -- 返回0而不是nil更好endlocal sum = 0for _, value in ipairs(tbl) doif type(value) == "number" thensum = sum + valueelseif type(value) == "table" thensum = sum + sumNested(value)endendreturn sum
end-- 測試題目9
print("題目9結果:")
local nestedTable = {1, {2, 3}, {4, {5, 6}}}
print("嵌套表總和:", sumNested(nestedTable))

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/94681.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/94681.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/94681.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ElementUI之菜單(Menu)使用

文章目錄項目創建創建項目運行項目整理目錄刪除src/assets中的所有logo.png刪除src/components中的所有文件修改src/route/index.js刪除src/views中所有文件修改src/app.vue整理完目錄如下引入ElementUI安裝ElementUI引入ElementUI測試是否安裝成功編寫src/app.vue運行結果編寫…

Python訓練營打卡Day44-通道注意力(SE注意力)

知識點回顧: 不同CNN層的特征圖:不同通道的特征圖什么是注意力:注意力家族,類似于動物園,都是不同的模塊,好不好試了才知道。通道注意力:模型的定義和插入的位置通道注意力后的特征圖和熱力圖 內…

shiro進行解密

目錄Shiro 解密的核心注意事項1. 密碼處理:堅決避免 “可逆解密”2.例子【自己模擬數據庫,未連數據庫】:Shiro 解密的核心注意事項 1. 密碼處理:堅決避免 “可逆解密” 禁用明文存儲:永遠不要將明文密碼存入數據庫,必須使用 Has…

更改 Microsoft Edge 瀏覽器的緩存與用戶數據目錄位置

Microsoft Edge瀏覽器默認會將緩存文件和用戶數據存儲在系統盤(通常是C盤),隨著使用時間的增長,這些文件可能會占用大量空間。本文將詳細介紹多種更改Edge瀏覽器緩存位置和用戶數據目錄位置的方法,幫助您更好地管理磁盤…

【傳奇開心果系列】Flet框架實現的圖形化界面的PDF轉word轉換器辦公小工具自定義模板

let框架實現的圖形化界面的PDF轉word轉換器辦公小工具自定義模板一、效果展示截圖二、PDF轉Word轉換器概括介紹三、功能特性四、安裝依賴五、運行程序六、使用說明七、注意事項八、技術棧九、系統要求十、源碼下載地址 一、效果展示截圖二、PDF轉Word轉換器概括介紹 一個基于Fl…

STM32 定時器(PWM輸入捕獲)

以下是基于STM32標準庫(以STM32F103為例)實現PWM輸入模式(自動雙沿捕獲)的完整代碼,通過配置定時器的PWM輸入模式,可自動捕獲外部PWM信號的周期(頻率)?和占空比,無需手動…

Web安全開發指導規范文檔V1.0

一、背景 團隊最近頻繁遭受網絡攻擊,引起了部門技術負責人的重視,筆者在團隊中相對來說更懂安全,因此花了點時間編輯了一份安全開發自檢清單,覺得應該也有不少讀者有需要,所以將其分享出來。 二、編碼安全 2.1 輸入驗證 說明 檢查項 概述 任何來自客戶端的數據,如URL和…

在Godot中為您的游戲添加并控制游戲角色的完整技術指南

這是一個在Godot中為您的游戲添加并控制玩家角色的完整技術指南。這個過程分為三大步:?準備資源、構建場景、編寫控制腳本。道可道,非常道,名可名,非常名!第一步:準備資源(建模與動畫&#xff…

Flink 狀態 RocksDBListState(寫入時的Merge優化)

RocksDBListState<K, N, V> RocksDBListState 繼承自 AbstractRocksDBState<K, N, List<V>>&#xff0c;并實現了 InternalListState<K, N, V> 接口。繼承 AbstractRocksDBState: 這意味著它天然獲得了與 RocksDB 交互的底層能力&#xff0c;包括&…

zookeeper-保姆級配置說明

一. 基本配置&#xff1a;clientPort&#xff1a; 客戶端連接的服務器所監聽的tcp端口&#xff0c;默認2181dataDir&#xff1a;內存數據庫保存的數據路徑。myid也存放在這個目錄下&#xff0c;數據以異步方式寫入。dataLogDir&#xff1a;事務日志存放路徑。服務在確認一個事務…

半小時打造七夕傳統文化網站:Qoder AI編程實戰記錄

背景 最近七夕到了&#xff0c;恰逢Qoder上線&#xff0c;萌生了一個想法&#xff0c;寫一個以中國傳統七夕為主題的網站。 七夕中國傳統情人節 Qoder 介紹 Qoder 是阿里巴巴推出的一款旨在提升開發效率的 AI 編程平臺。它通過上下文工程技術和智能體輔助&#xff0c;幫助開…

常見的 Loader 和 Plugin?

Loader: babel-loader&#xff1a;將ES6的代碼轉換成ES5的代碼。css-loader&#xff1a;解析CSS文件&#xff0c;并處理CSS中的依賴關系。style-loader&#xff1a;將CSS代碼注入到HTML文檔中。file-loader&#xff1a;解析文件路徑&#xff0c;將文件賦值到輸出目錄&#xff0…

設計模式學習筆記-----抽象策略模式

抽象策略模式由五個核心組件組成策略接口定義所有策略的統一規范&#xff0c;是策略模式的 "契約"mark()&#xff1a;策略的唯一標識&#xff08;類似字典的 key&#xff09;&#xff0c;默認返回 null&#xff0c;需具體策略實現類重寫&#xff08;如InterviewSubje…

RabbitMQ面試精講 Day 30:RabbitMQ面試真題解析與答題技巧

【RabbitMQ面試精講 Day 30】RabbitMQ面試真題解析與答題技巧 開篇&#xff1a;系列收官之作&#xff0c;直擊面試核心 今天是“RabbitMQ面試精講”系列的第30天&#xff0c;也是本系列的收官之作。經過前29天對RabbitMQ核心概念、高級特性、集群架構、性能調優與開發運維的系…

Coze Studio開源版:AI Agent開發平臺的深度技術解析- 入門篇

Coze Studio開源版&#xff1a;AI Agent開發平臺的深度技術解析 引言 在人工智能快速發展的今天&#xff0c;AI Agent&#xff08;智能體&#xff09;已成為連接大語言模型與實際應用場景的重要橋梁。然而&#xff0c;構建一個功能完整、性能穩定的AI Agent開發平臺并非易事&am…

一文了解 DeepSeek 系列模型的演進與創新

近年來&#xff0c;DeepSeek 團隊在大語言模型&#xff08;LLM&#xff09;領域持續發力&#xff0c;圍繞模型架構、專家路由、推理效率、訓練方法等方面不斷優化&#xff0c;推出了一系列性能強勁的開源模型。本文對 DeepSeek 系列的關鍵論文進行了梳理&#xff0c;幫助大家快…

開源大模型本地部署

一、大模型 T5\BERT\GPT → Transformer的兒子→自注意力機制神經網絡 大模型&#xff0c; Large Model&#xff0c;是指參數規模龐大、訓練數據量巨大、具有強泛化能力的人工智能模型&#xff0c;典型代表如GPT、BERT、PaLM等。它們通常基于深度神經網絡&#xff0c;特別是T…

DAY 57 經典時序預測模型1

知識點回顧 序列數據的處理&#xff1a; 處理非平穩性&#xff1a;n階差分處理季節性&#xff1a;季節性差分自回歸性無需處理 模型的選擇 AR(p) 自回歸模型&#xff1a;當前值受到過去p個值的影響MA(q) 移動平均模型&#xff1a;當前值收到短期沖擊的影響&#xff0c;且沖擊影…

貪吃蛇游戲(純HTML)

一、游戲截圖二、源碼 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>離譜貪吃蛇</title>…

InnoDB詳解2

InnoDB詳解2一.行結構1.結構圖2.InnoDB支持的數據行格式1&#xff09;查看當前數據庫或表的行格式2&#xff09;指定行格式3&#xff09;DYNAMIC 格式的組成3.數據區存儲真實數據方式4.行的額外(管理)信息區5.頭信息區域1&#xff09;刪除一行記錄時在InnoDB內部執行的操作6.Nu…