[20240807]數值累加的問題.txt

lfree發表於2024-08-07
[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

--//總之,只要解決問題計算正確就可以,不必在細節上下太大的功夫.

相關文章