将文本文件中所有 9 位数处理成各位不重复
例题描述和简单分析
有文本文件 txt.txt,如下所示:
853617639 975336865
文本文件由多个数字串构成,每个数字串 9 位,数字串之间用空格分隔。现在要依次处理每个数字串并输出,规则是:如果某一位数重复出现,则将其改为(1-9 区间内)尚未重复的数,应按顺序依次找改成未重复的数,结果如下:
853617249 975316824
解法及简要说明
在集算器中编写脚本 p1.dfx,如下所示:
A |
|
1 |
=file("txt.txt").read() |
2 |
=A1.split(" ").(~.split@p()) |
3 |
>id=to(9) |
4 |
=A2.run(pos=~.group@p(~).(~.m(2:)).merge@u(),~(pos)=id\~) |
5 |
=A2.(~.concat()).concat(" ") |
6 |
=file("result.txt").write(A5) |
简要说明:
A1 文本文件读成串
A2 多个数字串用空格符分隔成序列,每个成员再拆成整数序列
A3 定义网格变量 id 为整数序列 1-9
A4 遍历 A2,定义网格变量 pos 为出现重复数字的位置序号,再把 1-9 中没有出现过的数字依次按位置顺序替换原数字
A5 序列的序列拼成串
A6 结果写到 result.txt
英文版