世界上代碼量很少的經典算法是什麼樣的?

異步社區 發佈 2022-10-28T21:32:51.457069+00:00

代碼越少,能力越強的「潛規則」在程式設計師中廣為流傳,而那些代碼量極少的經典算法自然就是程式設計師們心嚮往之的了。今天異步君就給大家介紹幾個代碼量非常少的算法,不僅經典,還讓人拍案叫絕!

代碼越少,能力越強的「潛規則」在程式設計師中廣為流傳,而那些代碼量極少的經典算法自然就是程式設計師們心嚮往之的了。

今天異步君就給大家介紹幾個代碼量非常少的算法,不僅經典,還讓人拍案叫絕!

洗牌算法


僅需兩行代碼,即可高效「洗牌」

for(int i = n - 1; i >= 0 ; i -- )
swap(arr[i], arr[rand(0, i)]) // rand(0, i) 生成 [0, i] 之間的隨機整數

短短兩行代碼,但是卻可以實現這個功能:對於給定的 n 個元素,生成的那個排列,每一個元素都能等概率地出現在每一個位置。也就是說,每一個位置都能等概率地放置每個元素。

AI「核心」代碼

這可能就是人工智障的代碼

while True:
print(input('').replace('嗎','').replace('?','!'))

這兩行代碼能實現什麼效果呢?來看看這個示範:

問:在嗎?

AI:在!


問:在學習嗎?

AI:在學習!


問:真的嗎?

AI:真的!


no code


最厲害的代碼,是沒有代碼

GitHub 上有這樣一個項目,基於輕量級跨平台全自動不可描述工具,採用了不可描述的高級語言語法,不用寫一行代碼,即可部署運行,提供檢測、編譯、打包、安裝、運行一條龍服務。

項目地址:

https://github.com/kelseyhightower/nocode

看完代碼後,不少程式設計師紛紛留言誇獎。

心中有碼,無碼勝有碼。學到了,明天給業務方的代碼就準備以這個框架去實現了。

傳說中的無字天書

看山是山,看山不是山,看山還是山

其實,代碼量越少越好其實並不是編程界的鐵律。優秀的代碼一般具有執行效率高、代碼可讀性高的優點,其次才是代碼量儘可能的少。

執行效率的重要性不必多說,計算機行業發展至今始終在探尋能否更高效。而為什麼要求可讀性高呢?

畢竟,程式設計師工作中的溝通,不只是電子郵件或者面對面語言交流,代碼也是溝通方式之一。用代碼實現需求有時候並不是一個人能完成的,必須讓代碼表達自己的編碼思想。

如果代碼結構清晰、注釋合理,看代碼的人一目了然,不用頻繁的詢問代碼疑點,不用打斷你的工作。

就像老師看到字跡潦草的卷面會不由自主打低分一樣,大家都在追求高效,沒有人會喜歡凌亂不堪的代碼。寫出讓別人讀得懂的代碼,減少閱讀障礙,為整個團隊創造有價值代碼,是在當下大部分工作需要協作的情況下,最高效的解決辦法。

有很多率性的程式設計師會覺得追求整潔之道是不是有「潔癖」心理,見不得代碼里有累贅,有髒東西等。但他們寫出的代碼,確實可讀性更強,代碼可以發揮的價值更高。

在編程領域,關於整潔代碼操作實踐方面,Bob大叔的《代碼整潔之道》是一本不可多得的好書。這些實踐在本書中體現為一條條規則(或稱「啟示」),並輔以來自現實項目的正、反兩面的範例。只要遵循這些規則,就能編寫出乾淨的代碼,從而有效提升代碼質量。

同系列還有《代碼整潔之道:程式設計師的職業素養》,以自己以及身邊的同事走過的彎路、犯過的錯誤為例,告訴大家成為真正專業的程式設計師需要具備什麼樣的態度,需要遵循什麼樣的原則,需要採取什麼樣的行動。助其職業生涯邁上更高台階!

當然最新的《敏捷整潔之道:回歸本源》,是Bob大叔從一個真正熱愛構建高品質軟體的工程師和全力為團隊爭取尊重的敏捷先鋒人物的視角,帶著我們重溫敏捷初衷,同時又對如何能實現真正的敏捷提出犀利的見解。

關鍵字: