[20240807]数值累加的问题.txt

lfree 2024-08-08 08:15:00 阅读 99

[20240807]数值累加的问题.txt

--//前几天遇到一位朋友聊天提到的问题,实际上主要讲现在要招熟悉linux,unix类的人很少,我接触国内大部分开发人员熟悉了解linux

--//很少,即使是数据库管理人员,熟悉linux类的人很少,顶多会一个安装就已经不错了,基本上许多操作系统命令是非常不熟练的.

--//遇到问题大部分都是百度,炒别人的家庭作业,这类事情我最近几年遇到的太多了.

--//正好提到数值累加的问题,这个问题我以前讲过,正好对方再次提及,我讲你们招聘的人不是可以百度找解决问题的答案吗?对方讲这样

--//肯定不行.实际上如果我做作为招聘人员并不会要求测试者使用什么方法,你算出来结果正确就ok了.

--//例子:

# cat -A aa.txt

1 2 3 4$

$

5^I^I6^I 7^I$

$

$

$

8 9 10$

--//上面的问题存在tab键,存在空格与空行.

--//使用我以前写的dc脚本:

# cat aa.txt | dc -f - -e "z [+ la 1 - sa la 1<r ]sr sa la 1<r pq"

55

# (cat aa.txt ; dc -f aa.txt -e "z [43P 32P la 1 - sa la 1<r ]sr sa la 1<r 10P"; echo pq ) | dc -f -

55

--//哈哈,我现在看我自己写的代码,自己也看不懂写的是什么.实际上如果不管多少数值相加,你只要输入+比实际多,一样可以算出来.

--//参考链接:[20230922]dc命令复杂学习3.txt =>https://blog.itpub.net/267265/viewspace-2987245/

# (cat aa.txt ;(seq 11 | xargs -IQ echo -n '+' );echo pq )| dc

dc: stack empty

dc: stack empty

55

--//多输入2个加号,一样计算出结果.

--//如果熟悉dc,只要算出里面有多少数值也可以写出比上面更好的算式.

# (cat aa.txt ;echo zpq)| dc

10

--//共有10个数值.

# (cat aa.txt ;(seq 9 | xargs -IQ echo -n '+' );echo pq )| dc

55

--//输入10-1个加号就可以了.

# (cat aa.txt ;seq $(echo $[$((cat aa.txt ;echo zpq)|dc) -1]) | xargs -IQ echo +;echo pq) |dc

55

--//注:当然从算法讲不是最好,毕竟要读取aa.txt两次.

--//随手写的使用bc计算的代码.

# cat aa.txt | tr '\t ' '\n\n'| tr -s '\n' | paste -sd"+" | bc -l

55

--//总之,只要解决问题计算正确就可以,不必在细节上下太大的功夫.



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。