- 论坛徽章:
- 2
|
回复 20# sequencing - {a[$1":"$2]=1;a[$2":"$1]=1}
- END{
- # 建一个数组,下标为1到12,值为对应的不兼容的值,如a[1]=3 5 8 10.
- for(i=1;i<=12;i++)
- {for(j=1;j<=12;j++)
- if(a[i":"j]&&i!=j)
- s=s?s FS j:j
- b[i]=s
- s=""
- }
- t="1 2 3 4 5 6 7 8 9 10 11 12 " #设置一个变量t, 包含所有的数字.
- {for(m=1;m<=12;m++){ # 从1 到 12, 逐个循环扫描, 除去不兼容的数字.
- x=t;
- l=split(b[m],c)
- {for(k=1;k<=l;k++)
- x=gensub(c[k] FS,"","1",x)} # 利用前面的数组b,删除不兼容的数字,比如m=1时,删除t中的3 5 8 10.
- for(n=1;n<=12;n++){ # 再作一个循环(从1-12,但不包括m), 仍然利用数组b,同样的道理删除不兼容数字.
- if(sub(n FS,n FS,x)&&m!=n){
- l=split(b[n],c)
- {for(k=1;k<=l;k++)
- x=gensub(c[k] FS,"","1",x)}
- }
- }
- print x}
- }
- }
复制代码 |
|