intoweb
共有24個國家的球隊需要分成4組進行小組賽,現(xiàn)在請你用Scratch編寫一個分組程序,將24支球隊隨機分為4組。
24支球隊分別是:塞爾維亞、捷克、波蘭、立陶宛、意大利、希臘、俄羅斯、巴西、委內(nèi)瑞拉、波多黎各、多米尼加、德國、新西蘭、突尼斯、加拿大、土耳其、中國、菲律賓、斯洛文尼亞、克羅地亞、塞內(nèi)加爾、安哥拉、墨西哥、烏拉圭。
參賽隊伍一共有24支,如果編程時每次都需要重新輸入工作量可就太大了。Scratch的列表有導入和導出功能的,右鍵點擊列表就有“導入和導出”菜單,選擇文本文件即可導入。列表每項對應文本的一行,文本編碼為UTF-8,否則導入會是亂碼。
A:將1到24依次放入一個列表的隨機位置,這樣就獲得了24個數(shù)字隨機排列的“隊伍編號”列表。將“隊伍編號”的第一項對應的序號從參賽隊中抽取出來放入A分組,并刪除“隊伍編號”列表的第一項。接著不斷將“隊伍編號”列表的第一項對應球隊抽出放入B、C、D分組,重復6次,將所有球隊分配完畢。
B:另外一種解題思路與實際抽簽的操作一致,但是編寫難度稍高。將參賽的24支隊伍放入一個列表中,通過生成隨機數(shù)(1-24)就可以隨機地取出一支隊伍,存入第一小組里,把這個隊伍從列表中刪除,接下來參賽隊伍就只有23支了。接著生成(1-23)的隨機數(shù)再取出一支隊伍,并放入第A分組,從列表中刪除。以此類推,就如同我們抽簽一樣,取出一個少一個,A組取6個,然后其他組從剩下的里面再抽。
1) 建立列表“參賽隊伍”并右鍵導入24支隊伍名,建立“隊伍編號”列表記錄隨機順序,建立“ABCD”4個列表記錄分組結(jié)果。建立臨時變量“i”,i=0。點擊綠旗清空隊伍編號和ABCD列表。
2) 將1-24隨機填入“隊伍編號”列表。重復執(zhí)行24次:i=i+1,在隊伍編號的第1到隊伍編號的項目數(shù)之間取隨機數(shù)項前插入i。
3) 依次將“隊伍編號”列表的第1項序號從對應“參賽隊伍”列表中提取到A、B、C、D分組列表并刪除“隊伍編號”列表的第1項。
1) 建立列表“參賽隊伍”并右鍵導入24支隊伍名,建立“隊伍編號”列表順序存儲1-24個數(shù)字,建立“ABCD”4個列表記錄分組結(jié)果。建立臨時變量“i”,i=0。點擊綠旗清空隊伍編號和ABCD列表。
2) 從“隊伍編號”列表中隨機抽取1項i,將“參賽隊伍”的第i項加入A組,刪除“隊伍編號”的第i項。這樣就隨機抽取了1個隊伍到A組,下面依次從“參賽隊伍”列表中隨機抽取到BCD組中,然后開始下一次循環(huán)。
兩種解法都可以達到對隊伍隨機分組的目的,我將完整源代碼保存在阿爾法營(www.aerfaying.com),你可以搜索“Scratch對24隊隨機分組”下載后自行分析和改進。