在LUA中生成星型图案
2020-10-19 13:30:47
收藏:0
阅读:256
评论:4
我是LUA编程的新手,不知道如何解决下面的问题。
给定一个数
N,生成一个星型图案,使得第一行有N个星星,随后的每一行星星的数量减少1个。
生成的图案应该有
N行。在每行中,每隔五个星号(*)就用一个#号代替。每行应该有所需的星号(*)和#号符号。
[示例输入和输出,其中第一行是测试用例的数量](https://i.stack.imgur.com/IwAw9.png)
这是我尝试的..但我无法继续
function generatePattern()
n = tonumber(io.read())
i = n
while(i >= 1)
do
j = 1
while(j<=i)
do
if(j<=i)
then
if(j%5 == 0)
then
print("#");
else
print("*");
end
print(" ");
end
j = j+1;
end
print("\n");
i = i-1;
end
end
tc = tonumber(io.read())
for i=1,tc
do
generatePattern()
end
点赞
用户11740758
根据 Lua 版本,元方法 __index 可以持有 rep 进行重复操作...
--- Lua 5.3
n=10
asterisk='*'
print(asterisk:rep(n))
-- 输出:**********
2020-10-19 13:04:12
用户4984564
首先,只有星号没有井号。 这部分很容易:
local function pattern(n)
for i=n,1,-1 do
print(string.rep("*", i))
end
end
要将每个第5个星号替换为井号,您可以通过以下替换扩展表达式:
local function pattern(n)
for i=n,1,-1 do
print((string.rep("*", i):gsub("(%*%*%*%*)%*", "%1#")))
end
end
模式中的星号需要用%转义,因为Lua模式中的*具有特殊含义。
请注意,string.gsub返回2个值,但可以通过添加额外的括号将它们截断为一个值,导致形式有些尴尬的方式print((..))。
2020-10-19 13:39:56
用户3342050
#! /usr/bin/env lua <!-- lua脚本环境声明-->
for n = arg[1], 1, -1 do <!--for循环,n为输入,从输入到1循环-->
local char = '' <!--定义字符串char-->
while #char < n do <!--while循环,当字符串长度小于n,继续循环-->
if #char %5 == 4 then char = char ..'#' <!--当字符长度对5取余为4时,在字符后加入#号-->
else char = char ..'*' <!--否则在字符后加入*号-->
end <!--结束if判断-->
end <!--结束while循环-->
print(char) <!--输出字符串char-->
end <!--for循环结束-->
chmod +x asterisk.lua
./asterisk.lua 15
2020-10-20 08:14:24
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

请不要使用这个答案,因为它不是良好的编程风格!我想删除它,但 SO 不会让我。请查看评论和其他答案,寻找更好的解决方案。
我的 Lua print 函数会为每个输出添加换行符,因此我将每个字符连接成一个字符串,并在之后打印出连接后的字符串。
function generatePattern() n = tonumber(io.read()) i = n while(i >= 1) do ouput = "" j = 1 while(j<=i) do if(j%5 == 0) then ouput=ouput .. "#"; else ouput=ouput .. "*"; end j = j+1; end print(ouput); i = i-1; end end此代码仅是您的代码作出少量改动以呈现正确输出。解决此任务的方法有很多种,有些比其他方法更快或更直观。