天天看點

123數字黑洞-第11屆藍橋杯Scratch選拔賽真題精選

[導讀]:超平老師計劃推出Scratch藍橋杯真題解析100講,這是超平老師解讀Scratch藍橋真題系列的第93講。

藍橋杯選拔賽每一屆都要舉行4~5次,和省賽、國賽相比,題目要簡單不少,再加上篇幅有限,是以我精挑細選了一部分題目進行解讀。

第11屆藍橋杯青少年組第6次選拔賽于原定于2020年2月15日舉行,因為疫情延期到5月31日,形式為線上考試。Scratch分為初級組和中級組,其中初級組面向7~10歲孩子,中級組面向11~14歲孩子。

123數字黑洞,本題是2020年2月15日舉行的第11屆藍橋杯Scratch選拔賽真題程式設計第4題,初級組和中級組都有此題,題目要求程式設計驗證123數學黑洞的計算過程。

先來看看題目的要求吧。

一.題目說明

背景資訊:

“123數學黑洞”,指的是對于任意一串數字串,按照一定規則經有限次重複後必得到“123”的結果,即任何數的最終結果都無法逃脫123黑洞。

其中的規則如下:

1). 對任何一串數字串統計出其中的偶數個數、奇數個數、總個數;

2). 按照“偶-奇-總”的方式進行排列,得到新的數字串;

再不斷循環這個算法,其最終結果一定會變成123。例如:12345,偶數個數2,奇數個數3,總個數5,我們得到235;235,偶數個數1,奇數個數2,總個數3,我們得到123;

程式設計實作:

1). 當綠旗被點選,請使用者輸入任意長度數字串,如圖例1;

123數字黑洞-第11屆藍橋杯Scratch選拔賽真題精選

2). 輸入數字串之後,說出這個數字串第一次計算的結果,第二次計算的結果,第三次......直到計算結果為123,如圖例2。

123數字黑洞-第11屆藍橋杯Scratch選拔賽真題精選
123數字黑洞-第11屆藍橋杯Scratch選拔賽真題精選
123數字黑洞-第11屆藍橋杯Scratch選拔賽真題精選

評判标準:

  • 20分:能夠正常輸入數字串;
  • 30分:小貓的第一次計算結果是正确的;
  • 30分:小貓每次計算結果正确并最後得到123;
  • 20分:小貓每次對次數的表述也完全正确,且完全符合題意。

二.思路分析

本題隻有1個角色,就是預設的小貓,如圖所示:

123數字黑洞-第11屆藍橋杯Scratch選拔賽真題精選

這是一道經典的遞歸算法題,那什麼是遞歸呢?

所謂遞歸,是指在函數的定義中使用函數自身的方法。通俗了解就是:我調用我自己。這是一種常用的解決問題的方法,它可以把”大事化小,小事化了“,進而輕松的解決問題。

看看下面這張圖,你立刻就能了解什麼是遞歸了:

123數字黑洞-第11屆藍橋杯Scratch選拔賽真題精選

構成遞歸需具備兩個條件:

1). 子問題須與原始問題為同樣的事,且更為簡單;

2). 不能無限制地調用本身,須有個出口。

對于本題而言,對于任何一個給定的數字串,先分别計算出偶數個數、奇數個數和總個數,然後組合得到一個新的數字,再重複這個操作,這就是一個典型的遞歸過程,遞歸的出口就是數字等于123。

在Scratch中,實作遞歸的方式就是定義一個自制積木,然後在自制積木中調用自己,自制積木必須帶有參數,同時要有結束條件。

算法的流程圖如下:

123數字黑洞-第11屆藍橋杯Scratch選拔賽真題精選

至于統計偶數和奇數就比較簡單了,使用循環逐個取出每個數字,再結合”a除以b的餘數“指令,就可以很輕松的判斷是偶數還是奇數了。

三.程式設計實作

根據題目描述和思路分析,我們可以分三步來編寫程式:

  • 定義自制積木
  • 使用自制積木
  • 完善代碼

1. 定義自制積木

建立一個自制積木,将其命名為”123數字黑洞“,并添加參數”數字“,如圖:

123數字黑洞-第11屆藍橋杯Scratch選拔賽真題精選

然後編寫代碼如下:

123數字黑洞-第11屆藍橋杯Scratch選拔賽真題精選

簡要說明如下:

1). 在代碼塊的最後,又使用用了自制積木,這就是遞歸的展現,即在函數中調用自己(在Scratch中,自制積木就是函數);

2). 在Scratch中,對于數字,可以作為字元串來使用,是以這裡擷取數字和連接配接數字,使用的都是字元串指令。

2. 使用自制積木

有了自制積木,接下來就容易了,當綠旗被點選時,使用問答指令,然後調用自制積木即可,對應的代碼如下:

123數字黑洞-第11屆藍橋杯Scratch選拔賽真題精選

3. 完善代碼

運作程式,當輸入888888時,第一次顯示的效果如下:

123數字黑洞-第11屆藍橋杯Scratch選拔賽真題精選

這和題目的要求有些不相符,我們可以增加一個變量“次數”,表示目前是第幾次,在綠旗下面,将其初始化為0,增加代碼如下:

123數字黑洞-第11屆藍橋杯Scratch選拔賽真題精選

對應的,在自制積木中,改動兩個小地方,如下:

123數字黑洞-第11屆藍橋杯Scratch選拔賽真題精選

在說話指令中,使用了4個連接配接運算符,編寫代碼的時候,一定要細心一點,避免出錯。

再次運作程式,這一次和題目要求就完全一緻了,你可以輸入任何長度的數字串來看看黑洞效果吧。

四.總結與思考

本題難度系數為4,積木塊數量45個左右 ,涉及到的知識點主要包括:

  • 遞歸的算法思想及其特點;
  • 自制積木及其參數的使用,重點是遞歸的實作;
  • 如何判斷奇偶數,使用取餘數指令看餘數是否等于0;
  • 字元串運算符,包括擷取總個數,擷取指定字元和連接配接操作;
  • 使用循環結合變量來周遊字元串;
  • 循環和條件的嵌套用法。

本題有一定難度,重點是了解遞歸算法的程式設計思想及其實作。要實作遞歸需要確定如下三個方面:

1). 必須有自制積木,并且是帶參數的自制積木,每次調用的參數都不一樣;

2). 在自制積木中調用自制積木;

3). 必須有結束條件,否則就陷入死循環。

你知道嗎,123數字黑洞還有一個名字,叫做西西弗斯黑洞,這又是為什麼呢?

西西弗斯的故事出自希臘神話,天神為了懲罰科林斯國王西西弗斯,将一塊巨石推到一座陡峭的山頂上,但無論他怎樣努力,這塊巨石總是在到達山頂時卻又不可避免地滾下來,于是他隻得重新再推,永無休止。

123數字黑洞-第11屆藍橋杯Scratch選拔賽真題精選

之是以把數字串123稱作西西弗斯串,意思是說對于任意一數字串按本程式進行計算,所得的結果都是123,而且一旦變成123後,無論再計算多少次,都會永無休止地重複着123。

如果你覺得文章對你有所幫助,别忘了點贊,你的鼓勵是我堅持繼續寫下去的最大動力,Thanks♪(・ω・)ノ。

需要素材和源碼的,可以聯系本人,或者移步至同名wx号。

繼續閱讀