如何合并和排列两个单词列表

如何合并和排列两个单词列表

我想将列表中的单词组合和/或排列最多 3 次。例如:

如果我有一个列表:

apple
orange
cafe

另一个列表如下:

11
22
33

它应该产生如下组合:

11appleorange22
33orange11cafe2211
orangecafe3333apple1133

逻辑是,任何列表中的单词最多可以重复 3 次,不能再多。但可以按任何顺序和任何排列。我该如何实现这一点?

答案1

命令行,等式cat test test test|shuf|head -n 18|grep -v ^$|paste -s -d"\0"

powershell $r=New-Object Random;1..3^|%{gc test}^|select -f 18^|%{[array]$A+=$_};1..$A.Count^|%{$A[$r.Next(0,$A.Count-1)]}^|?{$_.Length -ne 0}^|%{$S+=$_};$S

cat test test test近似对应关系 ``1..3^|%{gc test}`

shuf近似对应关系(PowerShell 在管道中随机排列字符串):

$r=New-Object Random; ... %{[array]$A+=$_};1..$A.Count^|%{$A[$r.Next(0,$A.Count-1)]}

head -n 18近似对应select -f 18

grep -v ^$近似对应?{$_.Length -ne 0}

paste -s -d"\0"近似对应%{$S+=$_};$S

当看到命令行时:

cat test test test|shuf|head -n 18|grep -v ^$|paste -s -d"\0"

想象文件类型- test

1
2
3
5

7
8

使用文件test

apple
orange
cafe
11
22
33

洗牌1.ps1:

$r=New-Object Random;1..3|%{gc test}|select -f 18|%{[array]$A+=$_};1..$A.Count|%{$A[$r.Next(0,$A.Count-1)]}|?{$_.Length -ne 0}|%{$S+=$_};$S

为了从模板生成文本的目的,另一种语言更为合适。

它需要 Common Lisp 和 C 方面的专家。也可能是 Haskell 专家。

如果需要数学符号计算那么它很可能是 Maxima。

但是您总是可以使用任何非为特定任务设计的工具)))。

如果您能从架构上完整地描述您的问题,那就太好了。

答案2

如果您手边有一台 Linux 计算机(或者 Mac OS X 也可以),请创建一个名为的文件,test内容如下:

apple
orange
cafe
11
22
33

后面跟着六个空行。然后运行以下命令:

cat test test test|shuf|head -n 18|grep -v ^$|paste -s -d"\0"

连接文件,舒夫打乱线路,检索前 18 行(这样您就可以获得最大的字符串),grep不包括空行和粘贴将线粘在一起。

编辑:抱歉,发帖后才注意到 windows 标签。您可以安装赛格威但你不妨把这个原则运用到其他事情上。

相关内容