一道面試題引發的關於程式設計的想法

2022-03-01 07:08:23 字數 1244 閱讀 7566

申明:這是在看到園子裡兩個帖子關於兩道面試程式設計題之後個人的一點想法

面試題一:

大廳裡有100盞燈,每盞燈都編了號碼,分別為1-100。每盞燈由乙個開關來控制。(開關按一下,燈亮,再按一下燈滅。開關的編號與被控制的燈相同。)開始時,燈是全滅的。現在按照以下規則按動開關。

第一次,將所有的燈點亮。

第二次,將所有2的倍數的開關按一下。

第三次,將所有3的倍數的開關按一下。

以此類推。第n次,將所有n的倍數的開關按一下。

問第100次按完以後,大廳裡還有幾盞燈是亮的。

看到這道題後我馬上想怎樣程式設計去實現這個問題

這道題不複雜很快我就想到乙個實現的辦法,首先我寫了乙個winform程式,介面用來展示各個燈最後的狀態

第一版的**如下

private void form1_load(object sender, eventargs e)

//迴圈所有燈並在介面上展示

foreach (keyvaluepairparam in diclight)

txtlightstates.text += "第" + param.key + "盞燈狀態為:" + (param.value == 0 ? "滅" : "亮")+"\r\n";

}

以下是執行結果

所以這就完了? 當然不是,然後我想到如果燈的數量跟要操作的次數是可變的呢,然後我開始重構這個方法,把可變的引數提取出來作為方法引數

修改後的**如下

private void form1_load(object sender, eventargs e)

public dictionarychangelightstate(int lightnum, int changelightnum)

return diclight;

}private void btnstartcal_click(object sender, eventargs e)

下面是執行介面跟結果

看過《大話設計模式》的同學都知道到這裡肯定沒完,比果我要實現2的倍數亮,3的倍數不亮怎麼辦呢?

下面的留給各位自己想象去吧

一道面試題引發的pythonic

本文出自天外歸雲的 今天乙個朋友去面試,下面是一道測試工程師面試題 來自搜狗 自己寫了解法 coding utf 8 import redef filter log target,the log r target target dic for one in target target dic one...

一道面試題引發的思考

首先我們給出這道面試題的 以及題目 lista new arraylist list.add 1 list.add 2 for string item list 問 上段 執行會報錯嗎?如果把 1 換成 2 會報錯嗎?為什麼?首先給出答案 上面這段 執行不會報錯。把 1 換成 2 再執行就會報錯。為...

一道面試題引發的思考

好的面試官能夠能好的和面試者互動,而一場好的面試也能帶給面試者更多的思考 面試官給我出題後的 1 分鐘內,我給出了第一種思路 排序。將數字按公升序排序,去除最小的那個數即可。存在問題 時間複雜度高,只考慮了正數的情況。面試官給出了第一次提示時間複雜度過高,要求降低時間複雜度。於是在經過幾分鐘思考後,...