我们写了一个命令,通过stdin接受一个数字n。该命令必须将数字写入通过写入数字1、2、3....得到的标准输出中,连续n个,在任意两个连续数字之间交替使用-(减法)和+(加法)运算,计算得到的表达式。当n = 12时,我们得到:1-2+3-4+5-6+7-8+9-1+0-1+1-1+2 = 5
$ echo 12 | ...
5
$ echo 82 | ...
14
我们需要用代码改变(…)来得到答案。
就像这样。我用busyboxawk
来完成这个任务。
示例1:
echo 12 | awk '{ for(i=1;i<=$0;++i) { len=split(i,nums,""); for(j=1;j<=len;++j) arr[++n]=nums[j] }} END { for(i=1;i<=n;++i) if(i%2==0) { r-=arr[i]} else { r+=arr[i] } print r }'
输出:
5
示例2:
echo 82 | awk '{ for(i=1;i<=$0;++i) { len=split(i,nums,""); for(j=1;j<=len;++j) arr[++n]=nums[j] }} END { for(i=1;i<=n;++i) if(i%2==0) { r-=arr[i]} else { r+=arr[i] } print r }'
输出:
19