将文本文件中所有 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

问答搜集

https://stackoverflow.com/questions/59789836/how-to-convert-a-txt-file-into-array-in-java-so-i-can-deal-with-every-array-sepa