-- 题目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…