开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 422|回复: 16
收起左侧

[已解决] 字符串轮询或者罗列,有没有优雅的写法?

 关闭 [复制链接]
结帖率:64% (25/39)
发表于 2024-8-13 20:01:14 | 显示全部楼层 |阅读模式   辽宁省大连市
12精币
举个例子,我想要列出从“aaaaaa”到“zzzzzz”的所有字符串,除了6层循环嵌套的写法之外,有没有其他更加优雅的写法了?


补充内容 (2024-8-14 16:38):
可能原题没有解释清楚,不是输出aaaa,bbbb,cccc这几个字符串,而是aaaa,aaab,aaac....yzzz,zzzz这样的,每个位置上都循序增长轮换。

最佳答案

查看完整内容

[e=0] .版本 2 .子程序 子程序2分裂法, 字节集 .参数 参数1_起始, 文本型 .参数 参数2_结尾, 文本型 .局部变量 模板_起始, 字节集 .局部变量 模板_结尾, 字节集 .局部变量 位长度, 整数型 .局部变量 i1写入位置, 整数型 .局部变量 i2进制, 整数型 .局部变量 i3位, 整数型 .局部变量 结果, 字节集 .局部变量 分裂上一个结果, 字节集 模板_起始 = 到字节集 (参数1_起始) 模板_结尾 = 到字节集 (参数2_结尾) 位长度 = 取字节集长 ...

点评

记得开启 白银大佬的内存加速优化 速度可以飞快   贵州省毕节市  发表于 2024-8-13 20:18

评分

参与人数 1精币 +2 收起 理由
小逸老师 + 2 直接用26进制即可,新建个26个字母的map对应26进制

查看全部评分


回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳

签到天数: 1 天

发表于 2024-8-13 20:01:15 | 显示全部楼层   广西壮族自治区柳州市
  
子程序名返回值类型公开备 注
子程序2分裂法字节集 
参数名类 型参考可空数组备 注
参数1_起始文本型
参数2_结尾文本型
变量名类 型静态数组备 注
模板_起始字节集 
模板_结尾字节集 
位长度整数型 
i1写入位置整数型 
i2进制整数型 
i3位整数型 
结果字节集 
分裂上一个结果字节集 
模板_起始 = 到字节集 (参数1_起始)
模板_结尾 = 到字节集 (参数2_结尾)
位长度 = 取字节集长度 (模板_起始)
结果 = 模板_起始 + { 13, 10 }
变量循环首 (0, 位长度 - 1, 1, i3位)
分裂上一个结果 = 结果
变量循环首 (模板_起始 [1] + 1, 模板_结尾 [1], 1, i2进制)
变量循环首 (1 + i3位, 取字节集长度 (分裂上一个结果), 位长度 + 2, i1写入位置)
分裂上一个结果 [i1写入位置] = i2进制
变量循环尾 ()
结果 = 结果 + 分裂上一个结果
变量循环尾 ()
变量循环尾 ()
返回 (结果)

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

发表于 2024-8-13 20:14:53 | 显示全部楼层   四川省宜宾市
回复

使用道具 举报

结帖率:80% (4/5)
发表于 2024-8-13 20:51:27 | 显示全部楼层   上海市上海市
  
变量名类 型静态数组备 注
循环标整数型 
循环标 = 97
计次循环首 (26, )
编辑框1.加入文本 ( #换行符到文本 (到字节集 (循环标)) + 到文本 (到字节集 (循环标)) + 到文本 (到字节集 (循环标)) + 到文本 (到字节集 (循环标)))
循环标 = 循环标 + 1
计次循环尾 ()

捕获.PNG       不是很明白啥意思,是这个效果吗,一行代码的事啊,不用六层叠加啊

回复

使用道具 举报

结帖率:80% (4/5)
发表于 2024-8-13 20:56:20 | 显示全部楼层   上海市上海市
  
变量名类 型静态数组备 注
A整数型 
B文本型 
A = 97
计次循环首 (26, )
计次循环首 (4, )
B = B + 到文本 (到字节集 (A))
计次循环尾 ()
编辑框1.加入文本 ( #换行符 + B)
B = “”
A = A + 1
计次循环尾 ()




更简洁一点?????
回复

使用道具 举报

结帖率:100% (53/53)
发表于 2024-8-14 00:47:45 | 显示全部楼层   福建省宁德市
帮你写了个汇编递增字节序的命令,这样就可以将字符串像整数一样从0开始递增
在ascii表中,小写字母a=97,z=122
依次往上递增就可以了


  
子程序名返回值类型公开备 注
子程序1  
变量名类 型静态数组备 注
起始字母文本型 
终止字母文本型 
字母长度整数型 
起始字母指针整数型 
字节下限整数型 
字节上限整数型 
i整数型 
' aaaaaa-aaaaaz
起始字母 = “aaaaaa”
终止字母 = “aaaaaz”
字母长度 = 取文本长度 (起始字母)
起始字母指针 = 取变量数据地址 (起始字母)
字节下限 = 97  ' 97=a 122=z
字节上限 = 122
判断循环首 (起始字母 ≠ 终止字母)
指针_递增字节序 (起始字母指针, 字母长度, 字节下限, 字节上限)
i = i + 1
判断循环尾 ()
调试输出 (起始字母, 终止字母, i)
' aaaaaa-zzzzzz
起始字母 = “aaaaaa”
终止字母 = “zzzzzz”
字母长度 = 取文本长度 (起始字母)
起始字母指针 = 取变量数据地址 (起始字母)
字节下限 = 97  ' 97=a 122=z
字节上限 = 122
循环判断首 ()
i = 指针_递增字节序 (起始字母指针, 字母长度, 字节下限, 字节上限)
' 当i返回1时,表示所有字母都已归位为aaaaaa。
循环判断尾 (i = 0)
调试输出 (起始字母, 终止字母, i)
子程序名返回值类型公开备 注
指针_递增字节序整数型 递增字节序,与递增整数一样道理。当返回1时,表示所有字节序归位。返回0表示未归为。
参数名类 型参考可空数组备 注
数据地址整数型数据起始地址
数据长度整数型数据长度
字节值下限整数型0-255之间
字节值上限整数型0-255之间
' __asm{
' ; mov esi,dword [ebp+8]  ;字节集数据起始地址
' ; mov edi,dword [ebp+12]
' ; add edi,esi            ;字节集数据终止地址
' ; mov bl,byte [ebp+16]   ;字节值下限97
' ; mov bh,byte [ebp+20]   ;字节值上限122
' ; xor eax,eax             ;清空eax返回值,0=未到终点,1=已到终点
' ; next_byte:
' ;    cmp esi,edi         ;比较起始指针和终止指针
' ;    je zero             ;如果相等则结束。当符合相等条件,表示进位到终止指针
' ;    mov dh,byte [esi]   ;加载当前字节到dh
' ;    cmp dh,bh           ;检查是否超过上限
' ;    jge yes_carry       ;如果大于等于上限,则跳到进位处理
' ;    inc byte[esi]       ;否则当前字节递增+1
' ;    jmp done            ;跳出循环
' ; yes_carry:
' ;    mov byte[esi],bl    ;当前字节设置为下限
' ;    inc esi             ;当前指针递增+1
' ;    jmp next_byte       ;开始下一个字节
' ; zero:
' ;    mov eax,1
' ; done:
' ;    leave
' ;    retn 16
' }
置入代码 ({ 139, 117, 8, 139, 125, 12, 1, 247, 138, 93, 16, 138, 125, 20, 49, 192, 57, 254, 116, 15, 138, 54, 56, 254, 125, 4, 254, 6, 235, 10, 136, 30, 70, 235, 237, 184, 1, 0, 0, 0, 201, 194, 16, 0 })
返回 (0)


i支持库列表   支持库注释   
spec特殊功能支持库

点评

我认识一个人 老是喜欢用模块的各种低效率的命令 他认为代码看起来少 效率就高 完全不想想 看不见的部分具体是怎么实现的~~~   贵州省毕节市  发表于 2024-8-14 19:43
你所谓的优雅 无法就是封装之后的套娃 编译之后的汇编代码不可能比这些代码更少 保守估计 代码量多10倍   贵州省毕节市  发表于 2024-8-14 19:41
神奇!您这个不是优雅,是Amazing!立即收藏了!不过请原谅我暂时不结贴,妄想再等一个能看懂的写法。汇编很神奇,只是我不懂,无法继续修改完善   辽宁省大连市  发表于 2024-8-14 17:00

评分

参与人数 1好评 +1 精币 +2 收起 理由
dangerace + 1 + 2 感谢大神提供如此牛逼的代码!

查看全部评分

回复

使用道具 举报

结帖率:80% (4/5)
发表于 2024-8-14 13:53:44 | 显示全部楼层   上海市上海市
帅气与大侠 发表于 2024-8-14 00:47
帮你写了个汇编递增字节序的命令,这样就可以将字符串像整数一样从0开始递增
在ascii表中,小写字母a=97,z ...

6 复杂化了

点评

这位大神绝对没有复杂化,他才是真正理解了我的意图,给出的写法堪称牛逼plus。只是因为我不懂汇编,无法继续修改完善,所以想再蹲一个能看懂的   辽宁省大连市  发表于 2024-8-14 17:02
回复

使用道具 举报

结帖率:64% (25/39)
 楼主| 发表于 2024-8-14 16:35:03 | 显示全部楼层   辽宁省大连市

不是这个意思,而是轮训啊,比如
aaaa
aaab
aaac
aaad
.....
zzzy
zzzz
回复

使用道具 举报

结帖率:80% (4/5)
发表于 2024-8-14 17:10:55 | 显示全部楼层   上海市上海市
dangerace 发表于 2024-8-14 16:35
不是这个意思,而是轮训啊,比如
aaaa
aaab

试了试,数学不好的好像只有嵌套,咱不懂了
回复

使用道具 举报

签到天数: 1 天

发表于 2024-8-14 17:51:11 | 显示全部楼层   广西壮族自治区柳州市
  
变量名类 型静态数组备 注
q整数型 
q = 取启动时间 ()
写到文件 (“a:\aa-zz.txt”, 子程序1 (“aaaa”, “zzzz”))
调试输出 (取启动时间 () - q)
子程序名返回值类型公开备 注
子程序1字节集 
参数名类 型参考可空数组备 注
参数1文本型
参数2文本型
变量名类 型静态数组备 注
a字节集 
b字节集 
i1整数型 
aa字节集 
cd整数型 
wjh整数型 
b = 到字节集 (参数2)
a = 到字节集 (参数1)
aa = a
cd = 取字节集长度 (aa)
wjh = 打开内存文件 ()
写出字节集 (wjh, a, { 13, 10 })
循环判断首 ()
计次循环首 (cd, i1)
a [i1] = a [i1] + 1
判断 (a [i1] > b [i1])
a [i1] = aa [i1]
跳出循环 ()

计次循环尾 ()
写出字节集 (wjh, a, { 13, 10 })
循环判断尾 (a ≠ b)
移到文件首 (wjh)
aa = 读入字节集 (wjh, 取文件长度 (wjh))
关闭文件 (wjh)
返回 (aa)


i支持库列表   支持库注释   
spec特殊功能支持库

点评

哇,很巧妙,大开眼界,原来还可以这样写。   辽宁省大连市  发表于 2024-8-14 22:17
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表