前天傻蛋去面試,有一題智力測驗考題。
八個球,其中有一個比其他重,給一個秤,請問最少秤幾次可以找到那個比較重的球?
有在練習這類考題的大概可以直接回答兩次吧。
傻蛋的直覺是分兩半,這樣秤三次一定可以找到比較重的那個球。
可能,或者說很大機率是可以兩次就找出來,但廿分鐘考試寫一堆題目,傻蛋就沒有去想怎麼用小於三次的方式秤出來了。
反正是工程師的考題,與其用複雜的想法少秤一次,還不如簡單的秤三次。
喔,這次面試是傻蛋面試時間最短的一次。
因為沒想到這個公司也是那個菠菜產業的,這和傻蛋剛離職的離職原因是矛盾的,所以就不用多談了。
軟體產業真的是,到處都是菠菜,缺人缺得兇的也是這行業,真是不樂觀。
回來的路上,就順便再想想,想到了確保兩次以內秤出較重的球的方式。
八顆球先隨意選其中六顆球出來,分成兩半去秤一次。
如果兩邊一樣重,那要找的球一定是落在剩下兩顆球裡面,那兩顆球再秤一次一定可以找到較重的球。
如果有一邊比較重,那要找的球一定落在那三個球之中,選其中兩個再秤一次,如果一樣重,答案必是剩下那顆,如果有一邊比較重,同樣答案揭曉。
所以只要秤兩次,在秤是準確的且八顆球中七顆球重量完全相等只有一顆能確保被秤出較重,那確實兩次就夠了。
減少三分之一的次數,好像很不錯?
這樣的思考就沒有之前那樣無腦,要想一下才行。
但意義不大。
符合這種前提的情況較不實際,所以缺少實用價值。
而軟體程式,多比較一次的秤,那個成本通常很低,針對這種小細節小聰明的去優化,通常是不合適的。
變複雜,帶來的成本比不上實際效益,那就是不划算了。
不過拿來練習一下思考也是不錯。
而且可以進一步延伸思考。
如果同樣一堆球裡面只有一顆重量不一樣,要用秤找出來,球的個數不同,秤的最少次數又會如何?
如果是九顆球,最少要幾次?
九顆球,照上面的策略,其實也是兩次,因為三個球只要秤一次就能找到。
三顆是一次,稍微推理一下,四到九顆都可以兩次。
那十顆球呢?
兩次是沒辦法的,三次肯定夠。
分一顆球出來,剩下九顆只要兩次,所以三次一定夠。
同樣的推理,到十八顆之前三次都是夠的。
所以十八顆以內就是三次,這樣的話三十六顆以內應該就是四次。
等等喔,這會不會犯了和一開始簡單思考的對半分秤一樣的問題,忽略了可能還有更好的組合呢?
是有可能,不過直覺機率應該不大就是了。
而用無腦對半秤,八顆三次以內,十六顆是四次以內可以找到答案。
也就差那一次。
或許那些研究數學的人會發明個啥定理的,去證明某個數學公式,保證這個題目的答案的次數必符合某個公式。
估計這個題目的難度還不會算太高吧。
重點是,不實用。
如果拿來當演算法,實用的應該不會是最少次數,而是平均次數,如果兩個方法,一個確保最小的最多次數,但另一個在更多次數隨機執行中,平均秤出找到花費的次數比前者低,後者可能是更好的解答。
喔,如果題目再複雜一點,限制條件沒那麼理想化,如八顆球裡可能有零到兩顆球重量不一樣,條件稍微變化一下那個求解的複雜度就會爆炸性的變複雜了。
而現實世界往往沒有那麼理想化的條件,可以先讓你已知八顆球有七顆重量完全一樣只有一顆比較重而且是秤的精準度剛好足夠分辨的。
換句話說那種絞盡腦汁的小聰明很可能,毫無用武之地。
最終處理方式還是會定義目標價值為何,各個操作成本為何,最後其實大蓋抓個成本效益比不差的方案也就不錯了。
簡單無腦有時候反而更好。
不過抽象思考也是有一些價值。
就以上面的例子,我們就學到了找模式,抽取公式的方法。
三顆一次,九顆兩次,十八顆三次,三十六顆四次,七十二顆五次。
或許有更優解,但至少我們可以肯定,七十二顆五次肯定夠。
如果一開始題目就是七十二顆,或是來個六十八顆之類的,用無腦方式六十四顆六次,那簡單答案是七次,要從七降到五,這過程可能就會歪歪扭扭了。
而這正是函式與遞迴的觀念與其精華價值之所在。
所以別說七十二顆,就是七萬兩千顆也能套公式很快得到一個最小秤出答案的次數,後面基本上多一倍就多一次那樣。
當然啦,能秤那麼多球還精確的找出其中一顆比較重的秤在現實可能不太實際就是了。
但在程式邏輯的世界裡面,是沒有物理限制的。
讓思路有結構有條理,那個價值會比亂想亂試要好。
大問題拆解成更好處理的小問題,更是設計的精華所在。
就算是細節稍微複雜一點,如挑出幾顆球剩下的偶數球再拿去對分來秤,一但找到模式,之後就可以套公式,不用每次都去思考細節怎麼處理,這就是封裝的價值了。
所以呢,智力測驗,或者是某些名校的考試題目,那種陷阱很多很坑的,其實都是不切實際,用來打擊人的信心,把人的思考變得複雜扭曲用的。
不實用,甚至可能有害。
但,好好思考,還是可以從其中學到一些有用的實用的東西啦。
- 3樓. 台北2022/07/06 12:35題目已經明示,有秤;
因此只要用手感,就不是秤;
題目偏偏沒有明示圓球的外觀、重量都差不多;也就是可能其中一顆特別大以及重,
且問最少秤幾次可以找出最重的球,
答案當然是0次,不用秤。
我認為格主自己限縮問題條件。題目原文傻蛋當然不可能記那麼清楚
所以就只是認知的邏輯描述而已
這種題目本身就不現實所以不重要
所以你的答案0次也不能說你錯啦,不肯定也不否定就是了
畢竟題目本來就沒定義那麼細傻蛋也沒在出考題只是分享一下而已
...
不過啊,出題目時正確答案是啥,你說傻蛋說的都不重要
去吵誰對誰錯都沒意義
根據問題能給予實際報酬獎勵的人才是決定正確答案的人
就不用繼續爭論這個了啦,會把重點帶偏了
Q版傻蛋 於 2022/07/06 14:46回覆 - 2樓. frank0606062022/07/06 10:15
1f 台北弟,
您用手的感覺去試, 可能要試八次
如果一次都不用試就可找出那球,大概只有耶穌辦得到
(或者謝八立的師父宋七立)
- 1樓. 台北2022/07/06 05:49題目並沒有說明,最重的那顆球差別多大,
因此我認為用手去試,就可以找出最重的那顆球,
根本不必量,
答案應該為0次題目也沒說,最重的那顆的外觀和其他是否可以直接辨識,所以不能排除肉眼就能看出來。
加了更多假設進去,就會變得更複雜。
光是要精確到可以把各種例外都具體排除,題目的定義會需要大量的定義,冗長到讓人都懶得去讀,這貌似是法律這領域搞的事。
所以一般會有一些習俗慣例,允許某些簡化,不然學生的考試題目都用這個方式去解答考題就失去意義了,一個小問題要認真扯是可以越扯越複雜的。
...
不過能直覺的覺得這個題目的重量是人體能夠自己直接感覺出來的,這位看倌八成也是天賦異稟吧XD
Q版傻蛋 於 2022/07/06 08:11回覆