我想将列表中的单词组合和/或排列最多 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 标签。您可以安装赛格威但你不妨把这个原则运用到其他事情上。