2019独角兽企业重金招聘Python工程师标准>>>

作者:crulat 永夜

#!/bin/bash
# permutation_combination.sharg0=-1
number=${2}
eval ary=({1..${1}})
length=${#ary[@]}
output(){ echo -n ${ary[${!i}]}; }
prtcom(){ nsloop i 0 number+1 output ${@}; echo; }
percom(){ nsloop i ${1} number${2} ${3} ${4} ${5}; }
detect(){ (( ${!p} == ${!q} )) && argc=1 && break 2; }
invoke(){ echo $(percom ${argu} nsloop -1) ${para} $(percom ${argu}); }
permut(){ echo -n "${1} arg${i} ${2} "; (( ${#} != 0 )) && echo -n " length "; }
nsloop(){ for((${1}=${2}+1; ${1}<${3}; ++${1})); do eval eval \\\$\{{4..${#}}\}; done; }
combin(){ (( ${#} != 0 )) && echo -n "${1} arg$((i+1)) arg${i} length " || echo -n "arg$((i+1)) "; }
prtper(){ argc=0; nsloop p 0 number+1 nsloop q p number+1 detect ${@}; (( argc == 1 )) && return; prtcom ${@}; }case ${3} inp)para=prtperargu="-0 +1 permut" ;;c)para=prtcomargu="-1 +0 combin" ;;
esac$(invoke)Invoke the script:
C 4 3
[root@node2 ~]# bash permutation_combination.sh 4 3 c
123
124
134
234P 4 3
[root@node2 ~]# bash permutation_combination.sh 4 3 p | xargs -n 6
123 124 132 134 142 143
213 214 231 234 241 243
312 314 321 324 341 342
412 413 421 423 431 432C 8 5
[root@node2 ~]# bash permutation_combination.sh 8 5 c | xargs -n 8
12345 12346 12347 12348 12356 12357 12358 12367
12368 12378 12456 12457 12458 12467 12468 12478
12567 12568 12578 12678 13456 13457 13458 13467
13468 13478 13567 13568 13578 13678 14567 14568
14578 14678 15678 23456 23457 23458 23467 23468
23478 23567 23568 23578 23678 24567 24568 24578
24678 25678 34567 34568 34578 34678 35678 45678P 5 5
[root@node2 ~]# bash permutation_combination.sh 5 5 p | xargs -n 12
12345 12354 12435 12453 12534 12543 13245 13254 13425 13452 13524 13542
14235 14253 14325 14352 14523 14532 15234 15243 15324 15342 15423 15432
21345 21354 21435 21453 21534 21543 23145 23154 23415 23451 23514 23541
24135 24153 24315 24351 24513 24531 25134 25143 25314 25341 25413 25431
31245 31254 31425 31452 31524 31542 32145 32154 32415 32451 32514 32541
34125 34152 34215 34251 34512 34521 35124 35142 35214 35241 35412 35421
41235 41253 41325 41352 41523 41532 42135 42153 42315 42351 42513 42531
43125 43152 43215 43251 43512 43521 45123 45132 45213 45231 45312 45321
51234 51243 51324 51342 51423 51432 52134 52143 52314 52341 52413 52431
53124 53142 53214 53241 53412 53421 54123 54132 54213 54231 54312 54321

python 有 itertools 排列组合包可以使用:

python的数学函数(1)-python组合函数模块itertools

http://shenguanpu.blogbus.com/logs/155452282.html

Python性能鸡汤

http://www.oschina.net/question/1579_45822

转载于:https://my.oschina.net/leejun2005/blog/63216

任意排列、组合终极Shell脚本相关推荐

  1. python实现不重复排列组合_Python实现输入字符串,返回其任意排列组合

    在脉脉上看到的一道算法题,要求如下图: 以下是用Python实现这一算法: def str_rank_combination(s=""): """输入 ...

  2. 数列的组合及排列方式java_java数组排列组合

    ⑥ 对于正面考虑太复杂的问题,可以考虑反面. ⑦ 对于一些排列数与组合数的问题,需要构造模型. 典例分析排列数组合数的简单计算 [例1] 对于满足 n ≥ 13 的正...... Java 实现排列组 ...

  3. 什么是脚本语言,shell脚本又是什么?

    脚本语言就是解释型语言: 脚本语言(Script language,scripting language,scripting programming language)是为了缩短传统的编写-编译-链接 ...

  4. Linux shell脚本按住任意键继续操作

    Linux shell脚本按住任意键继续操作 #!/bin/bashecho " 开始执行操作. ... " get_char() {SAVEDSTTY=`stty -g`stty ...

  5. linux命令编写四位数密码本,详解Linux Shell 实现一个获取任意位数的随机密码的脚本...

    Shell 命令行,实现一个获取任意位数的随机密码的脚本 每次我们想要获得一个密码的时候都很头疼,于是我之前自己用nodejs写了一个 Shell 脚本.这两天在学习 bash Shell 所以,想用 ...

  6. Tips--利用shell脚本批量提取txt文件中任意字段

    利用shell脚本批量提取txt文件中任意字段 前言 0. 一个例子 1. cat命令 2. '|'符号与'>'符号 3. grep命令 4. awk命令 前言 对于测试中出现的log,我们经常 ...

  7. shell脚本实现在任意虚拟机上 一键重启/关闭 多台虚拟机

    shell脚本实现在任意虚拟机上 一键重启/关闭 多台虚拟机 #!/bin/bash #实现在任意hadoop目录下重启三台虚拟机 case $(hostname) in "hadoop10 ...

  8. 任意数字序列“123456”之类,输出它们所有的排列组合

    作为一个菜鸟,难得动手,记录下.思路是:排列组合,高中数学解法是6个中选一个,然后5个中选一个,4选1,3选1..这样组合就完成了.假设需要排列组合的字符串为"123",先取&qu ...

  9. shell脚本编程大全

    文章目录 一.命令行 二.shell 三.文件系统 四.shell命令 五.shell的父子关系 六.内建命令 七.环境变量 八.文件系统权限 九.管理文件系统 十.构建基本shell脚本 十一.使用 ...

最新文章

  1. PTA 基础编程题目集 6-8 简单阶乘计算 C语言
  2. 按对象某属性排序的几种方法
  3. 讨论Linux目录结构
  4. mysql 5.7 备份innodb_mysql5.7 innodb数据库备份工具Xtrabackup的安装
  5. 使用隐式Intent打开系统内置拨号界面
  6. pipfile和pipfile.lock、virtualenv、pipenv、pip
  7. 朴素贝叶斯和贝叶斯估计
  8. 数据可视化【十四】交互式过滤地区分布图
  9. 比dropout更好的方法_比较自己的更好方法
  10. Gerrit代码Review入门实战 1
  11. 计算机工作应用工作简历,计算机应用专业工作简历范文
  12. 普通账户信息是SIEM的盲点
  13. 数据库管理软件的由来
  14. 不知道这十项Linux常识,就别说自己玩过Linux!
  15. 快码!数据可视化大屏设计必备步骤
  16. 让 Microsoft Office 下课!强烈推荐WPS2005!!
  17. centos7 备份系统
  18. c语言确定闰月的步骤,怎么判断是闰月,农历闰月是如何确定的?
  19. Unity方便查看日志的插件Reporter
  20. location.href和open的几种用法和区别

热门文章

  1. Mac OS X 下Node.js开发环境的搭建
  2. 007-迅雷定时重启AutoHotkey脚本-20190411
  3. clientdataset 用法
  4. 洛谷P1074 靶形数独(跳舞链)
  5. 《深度学习:Java语言实现》一一2.6小结
  6. 私有云管理-Windows Azure Pack
  7. oracle删除大表的数据的方法
  8. Spring Cloud应用开发(六:使用本地存储方式实现分布式配置管理 )
  9. mysql 删除 修改密码_Mysql数据库root密码忘记了,如何在不删除Mysql的情况下修改密码...
  10. 英语计算机作文初中.,初中英语作文:电脑游戏