臺北市 107 學年度高級中等學校
學生電腦軟體設計競賽 開放組決賽試題
題目一:我不是機器人
設計說明:驗證碼,是一種用來區分使用者是電腦或人的程式。其英文完整名稱為 Completely Automated Public Turing test to tell Computers and Humans Apart,簡稱 CAPTCHA。在進行 CAPTCHA 測試時,伺服器會自動生成一個問題請用戶來回答。 這個問題通常只有人類才能正確解答,所以能回答出正確答案的用戶就可以被認為 是人類。網頁服務中此一項測試常常是發送一張扭曲的圖片文字或是一段唸出此文 字的聲音,使用者必須輸入正確的文字內容才能通過測試。由於沒有圖片檔案,在 此我們用 ASCII art 的方式(如下表)來做個簡單的代替。注意:每一個 ASCII art 的都 有 5 列 6 行的字元(沒有符號的位置應該要有空白以便顯示上的一致)。
請設計一個前後台的系統來產生 CAPTCHA 並判斷輸入的正確與否。後台在收到前 台的 request 後會從 1~5 的數字之中隨機產生一組 4 位數的數字的 ASCII art 回傳給前 台,請前台把這四位數字的 ASCII art 字串顯示出來並提供一個輸入框讓使用者輸 入。當使用者按下輸入後會把輸入框的內容傳遞給後端,由後端判斷使用者輸入的 數字是否正確。 數字 1 2 3 4 5 ASCII art , /| | | | __ / ) / / /__ ___ * / \ * __/ * \ * \___/ * ***** * | | | | |___| | | _____ | |___ \ \___/
2 兩張 captcha 的範例圖: 評分標準: 1. 前台 ASCII art 的描繪(20%) 2. 前台顯示介面(10%) 3. 後台資料庫設計(10%) 4. 產生 captcha 的程式邏輯(30%) 5. 比對輸入數字與 captcha 是否一致的程式邏輯(30%)
題目二:網路彩卷對獎
請設計一個網路彩卷對獎程式,使用者可連接到伺服器對獎。 程式必須符合以下規則: 一、 規則: 1. 使用者在網頁畫面按開始對獎按鈕。 2. 開始時,伺服器隨機產生 3 組 6 位數中獎號碼並顯示於瀏覽器上。 3. 使用者在網頁輸入號碼(6 位數彩卷號碼),伺服器比對使用者輸入號碼與伺 服器產生號碼。 4. 另設計兩按鈕:對獎與離開。 5. 使用者輸入號碼後按「對獎」,號碼與伺服器產生的任一組號碼末三碼相同, 在瀏覽器顯示「恭喜!獲得四獎!」;末四碼相同,在瀏覽器顯示「恭喜!獲得 三獎!」; 末五碼相同,在瀏覽器顯示「恭喜!獲得二獎!」; 六碼皆相同, 在瀏覽器顯示「恭喜!獲得頭獎!」; 若未符合,則顯示「未中獎」。 6. 使用者按「離開」來結束程式。 二、 給分標準: 1. 畫面顯示 30% 2. 用戶端點選功能 20% 3. 用戶端與伺服器端的連線功能 20% 4. 伺服器邏輯判斷 30% 三、 參考畫面如右:4
題目三:雲端金融帳務服務
設計一符合如下需求的程式。 使用網路進行金融交易已經非常普及。若欲利用雲端進行個人金融帳務管理,鑒於 金融帳務屬於可靠、即時且可追蹤之紀錄,因此存取雲端金融帳務系統需利用伺服 器儲存帳號與金額資訊並以帳號密碼進行嚴格管制,另外需設計簡易的操作介面 (如 使用者轉帳交易、管理者帳管維護) 管理帳務的內容。請分別寫出用戶端與伺服端的 程式。 (a) 用戶端的程式能提供管理者 (1) 對伺服器端選擇管理者登入,可輸入管理者 內定帳號與密碼 (2) 成功登入後顯示帳戶管理操作選單:新增帳號與密 碼、增加帳號存款、重置帳號密碼、查詢帳號歷史交易。(3)選擇新增帳號與 密碼操作,顯示輸入帳號與密碼畫面,輸入帳號與密碼後,檢查未重複方可 新增 (4)選擇增加帳號存款操作,顯示輸入帳號與金額畫面,輸入帳號與金 額後,帳號存在方可增加存款 (5) 選擇重置帳號密碼操作,顯示輸入帳號與 密碼畫面,輸入帳號後,檢查帳號密碼輸入錯誤已達三次方可重置密碼 (6) 選擇查詢帳號歷史事件,顯示輸入帳號畫面,輸入帳號後顯示所有歷史事件 與發生時間。 (b) 用戶端的程式能提供使用者 (1) 對伺服器端選擇使用者登入,顯示輸入使用 者帳號與密碼畫面;若輸入帳號錯誤,顯示「查無此帳號」,若輸入密碼錯 誤,顯示連續密碼輸入錯誤次數,並提示「連續三次輸入密碼錯誤將鎖住帳 號」;若已發生連續三次密碼輸入錯誤,則顯示「帳號已被鎖住,請聯絡管 理者」,之後無法登入。(2) 成功登入後顯示帳戶管理操作選單:查詢餘額、 轉帳交易與查詢歷史交易。(3)選擇查詢餘額操作,顯示目前帳戶餘額資訊 (4) 選擇轉帳交易操作,顯示輸入轉帳對方帳號與金額畫面,若輸入對方帳號錯 誤,則顯示「查無對方帳號,轉帳失敗」,若輸入金額大於自己帳號餘額, 則顯示「帳號金額不足,轉帳失敗」,否則顯示「轉帳成功」(5) 若是查詢歷 史交易操作,顯示所有歷史事件與發生時間。 (c) 伺服端的程式能提供 (1)接收自用戶端傳入金融帳務的操作指令與資訊 (2) 依據指令處理金融帳務對應的事件 (3)回傳處理後結果。 【程式執行範例說明】 選擇「管理者」、「使用者」 選擇「管理者」後 管理者輸入帳號密碼顯示選擇「新增帳號與密 碼」、「增加帳號存款」、「重置帳號密碼」、「查詢帳號歷史交易」。 1. 選擇「新增帳號與密碼」後 顯示輸入帳號與密碼 顯示是否成 功新增 2. 選擇「增加帳號存款」後 顯示輸入帳號與金額 顯示是否成功 新增3. 選擇「重置帳號密碼」後 顯示輸入帳號與密碼 顯示是否成功 重置 4. 選擇「查詢帳號歷史交易」後 顯示輸入帳號 顯示所有事件 與時間 選擇「使用者」後 使用者輸入帳號密碼 顯示選擇「查詢餘額」、「轉 帳交易」、「查詢帳號歷史交易」。 1. 選擇「查詢餘額」後 顯示帳號餘額 2. 選擇「轉帳交易」後 顯示輸入帳號與金額 顯示是否成功轉帳 3. 選擇「查詢帳號歷史交易」後 顯示所有事件與時間 *註 : 時間資訊包含”年月日時分秒” (如 2018/10/19 08:20:30) 評分標準: 功能項目 佔分 得分 用戶端管理者介面 40% 用戶端使用者介面 40% 用戶端輸入介面是否完整 (介面) 20% 總分 100%
6
題目四:深度學習-運算感知機模型
人工智慧深度學習中,卷積神經網路(Convolutional Neural Network, CNN)是一種 頗具吸引力的深度學習神經網路結構。卷積神經網路由一個或多個卷積層、池化層 (Pooling layer)和全連通層組成,對於大型影像、圖片處理有出色表現。本題將實做 一個簡化的卷積層(Convolution layer)之卷積運算,輸入為一張 2 位元矩陣形式的圖 片與卷積過濾器(Filter),輸出為特徵地圖(Feature map),代表輸入圖片的重要辨識特 徵。 (a) 輸入圖片 (b)過慮器 (c)運算結果 圖一 卷積運算示例 一、卷積層的輸入有: 1.一個需要神經網路學習或辨識的圖片,大小為 N N,以二元像素矩陣表示黑白圖 片,白色為 1,黑色為 0﹐如圖一(a)為 7 7 矩陣。 2.一個預設的過濾器或滑動視窗(Slide window),以一個固定大小 m m 的二元矩陣 表示,如圖一(b)為 3 3 矩陣。 二、卷積運算為: 1.將兩個矩陣進行相對的點相乘後相加: (1) 相對的點相乘規則是,1 與 1 相乘為 1,代表同樣白色或黑色;1 與 0 相乘 為 0,代表不同顏色。 (2) 如圖一所示,(a) 中粗框 33 矩陣,與 (b)過濾器矩陣由左而右、由上而下, 所有相對的點相乘後得到 0 或 1,將這些值加總,(00+00+01) + (01+10 +00) + (00+01+01) =0。(注意,此非矩陣相乘)
(a) 輸入圖片 (b)過慮器 (c)運算結果為特徵地圖 圖二 萃取特徵地圖 2. 重複步驟 1 運算: (1) 過濾器每次移動一格,順序是由左至右、由上至下,共移動 (N-m+1) (N-m+1) 次,重複步驟 1 運算,可以萃取出圖形特徵地圖。 (2) 例如圖二(a)輸入圖片 7x7 矩陣,和圖二(b)3x3 過濾器,經過 (7-3+1) (7-3+1)=25 次的步驟 1 運算,可以得到圖二(c)5x5 的矩陣,即為輸入圖片的特 徵地圖(Feature map)。運算順序如圖二(a)的方框 33 矩陣,分別與(b)過濾器 運運算,結果為(c)特徵地圖。 三、題目功能,必須以網頁設計才給分: 1. 設計一個網頁輸入圖片矩陣大小 N,接著輸入 N x N 矩陣資料,資料限定 1 或 0; 並且將資料存到資料庫。 2. 設計一個網頁輸入過濾器矩陣大小 m,接著輸入 m x m 矩陣資料,資料限定 1 或 0;並且將資料存到資料庫。 3. 設計一個網頁,三個按鈕, (1) 輸入圖片矩陣,導引到第一項功能網頁頁面。 (2) 輸入過濾器矩陣,導引到第二項功能網頁頁面。 (3) 計算特徵地圖,導引到計算出特徵地圖結果的網頁頁面。