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

[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

--//总之,只要解决问题计算正确就可以,不必在细节上下太大的功夫.
posted @ 2024-08-07 20:17  lfree  阅读(23)  评论(0编辑  收藏  举报