陳新龍
今天分享一道2020年藍橋杯選拔賽的數學思維編程題目——開關燈。題目如下:
有十盞燈,從1到10按順序依次編號,初始時全部燈處于開啟狀態。有十個人也從1到10依次編號。第一個人(1號)將燈全部關閉,第二個人(2號)將編號2的倍數的燈全部打開,第三個人(3號)將編號為3的倍數的燈做相反處理。即將打開的燈關閉,將關閉的燈打開。后面的人繼續按3號的操作方法依次操作,把對應編號倍數的燈做相反處理。那么當第10個人操作之后,哪幾盞燈是關閉的,哪幾盞燈是開啟的?
可能不少人讀完題目之后還處于一頭霧水的狀態,沒有任何思路,這里介紹個方法,我們可以利用Office的表格來梳理題目的流程。打開Excel軟件,進行簡單的布局操作,橫向列為第1盞燈到第10盞燈,縱向行為第1個人到第10個人。根據題目的要求填空,燈開啟的狀態用數字1代替,關閉的狀態用數字0代替。

依次按照規則填空,比如第二個人將2號、4號、6號、8號、10號位置的燈打開,第三個人將3、6、9位置的燈做相反的操作,將開著的燈關閉,將關閉的燈打開。以此類推,直至最后第十個人操作后,可以看到1號、4號、9號燈是關閉狀態,其余的燈開著。

在Scratch中編程,建立一個保存燈狀態的列表“十盞燈”,數字0代表燈的狀態為關,數字1代表燈的狀態為開。當綠旗被點擊后,列表添加10個元素,全部為1。
每點擊一次空格,小貓都會說:“第X個人來了”(X是人的序號),隨后將列表中的元素按照題目要求進行處理,燈的編號與列表項目編號一致,數字0代表關,數字1代表開。連續點擊10次后,列表中所有的元素值與表格演算一致。

通過循環重復執行將數字1添加入十盞燈列表中,并且增加兩個變量“第幾個人”和“倍數”。綠旗運行時,變量“第幾個人”設置為1。當按下空格鍵時,變量“倍數”設置為1,由于第一個人開始需要進行開關燈的設置,這里我們可以添加一個判斷語句,當滿足條件第幾個人×倍數不超過10時,將列表中的第幾個人×倍數的項進行替換,比如第二個人需要將列表第2號、4號、6號、8號、10號位置進行數字替換(數字1替換成數字0,數字0替換成數字1)。
數字轉換的兩種方法,一是拿數字1-項數【1-1=0;1-0=1】;第二種是拿項數乘-1加1【1*-1+1=0;0*-1+1=1】。
另外在循環中不要忘記對變量“倍數”和變量“第幾個人”進行累加。當第十個人進行開關燈后的結果為1號、4號、9號燈滅掉,其余燈為亮的。

通過簡單的Scratch編程,我們將數學思維游戲成功解答出來了,恭喜聰明的你又掌握了新的知識點,陳老師在后期也會和大家分享更多有趣的數學編程游戲,一起期待吧。