101工科技藝競賽電腦軟體設計術科試題

10  Download (0)

全文

(1)

全國高級中等學校 101 學年度工業類科學生技藝競賽電腦軟體設計

壹、試卷說明: 1. 請將寫好之程式原始檔依題號命名資料夾存檔,第一題取姓名_Q1,第二題取姓 名_Q2,依序命名存檔,並存於 C 碟之資料夾”姓名_Contest”中。 2. 競賽時間 4 小時。 3. 請將程式編譯成執行檔儲存在 C 碟之資料夾姓名_Contest 及隋身碟片中。 貳、評分說明:本試卷共六題,每題配分不一。

1.

每題評分只有對與錯兩種,對則給滿分,錯則不給分(即以零分計算) 。 2. 每解答完一題上傳,評審人員將針對該題進行測試,若解題正確則回應正確,若 解題錯誤則扣該題一分至該題零分為止,答錯之題目可繼續作答。 試題一:劃線乘法。(17分) 說明:乘法用畫斜平行線交叉的方式,可數算交叉點數,來算出兩數相乘的答案。 被乘數由左至右畫斜平行線,斜線角度約 45∘(誤差約  5∘),乘數由下至上畫 斜平行線線,斜線角度約 135∘(誤差約  5∘),十位數和個位數應有適當間隔, 直接觀察交叉點數可得相乘的答案,如圖 1-1 和 1-2 所示。請設計一程式能輸 入被乘數及乘數,被乘數的範圍:1~50. 乘數的範圍:1-50,能畫出交叉圖,被 乘數用紅色畫線,乘數用藍色畫線。若遇 0 時,以虛線取代實線如圖 1-2 所示。 虛線和虛線或虛線和實線交叉皆代表 0。 圖 1-1 圖 1-2 (20X25=500)

(2)

圖形介面參考如圖 1-3 所示。 圖 1-3圖形介面 試題二:使用層級分析法選才 (17 分) 有一企業選才時,為求兼顧人選的各項特質但輕重有別以找出最適合的人選,將採用層級分析 法以處理各項特質的權重分配。此法先由數個專家訂定準則及設定其比值,並檢驗所訂定比值 結果的一致性以確定其適用否?因各專家見解有同異,故要做各項特質的平均權重處理。選才 時,將各個人選的每項特質之分數乘以其相關平均權重,並相加得其總分,分數最高者為最佳 候選人。在此先完成所訂定比值結果的一致性的檢驗即可。 層級分析法的步驟: (一)建立層級結構 評選人才訂有三個特質指標,分別為專業能力、通識素養及合群性,接受評選的人選有 3 人。 (二)建立指標的比值矩陣 理想人才 合群性 通識素養 專業能力 候選人 1 候選人 2 候選人 3

(3)

此法採用專家的意見進行資料分析,專家在比較指標間重要程度時,採用九個評估 尺度,如表一,經由專家問卷,可獲得兩兩指標間之比值,例如第 i 項指標與第 j 項指標的比值為 p:1,則令aijp, aji 1/p,且令aii 1。所建立的比值矩陣為 (1) 表一:層級分析法的評估尺度 評估尺度 定義 說明 1 同等重要 兩個指標具有同等的重要性 3 稍微重要 經驗和判斷認為其中一個指標較另一個 稍微重要 5 頗為重要 經驗和判斷強烈傾向偏好某一指標 7 極為重要 顯示非常強烈傾向偏好某一指標 9 絕對重要 有證據確定絕對喜好某一指標 2、4、6、8 相鄰尺度間 的中間值 當折衷值需要時 (三)計算指標的權重 第 i 項指標的權重為 𝑤𝑖 = 1 𝑛∑ 𝑏𝑖𝑗, 𝑖 = 1,2, … , 𝑛 𝑛 𝑗=1 (2) 其中 𝑏𝑖𝑗 = 𝑎𝑖𝑗 𝑎𝑖𝑗 𝑛 𝑖=1 , 𝑖 = 1,2, … , 𝑛; 𝑗 = 1,2, … , 𝑛 (3) (四)檢驗指標的一致性 專家在「兩兩指標比較」時,檢驗其是否有一致性。定義最大特徵值為

 

   n j n i ij j a w 1 1 max ( )  (4) 一致性的比率為 CR(maxn)/((n1)RI) (5) 其中令 n=3 時,RI=0.58。當 CR 小於 0.1 時,表示具有一致性,為有效問卷。 範例:(一)建立指標的比值矩陣 第一位專家訂定「專業能力」對「通識素養」的比值為 4:1,「專業能力對「合 群性」的比值為 6:1,「通識素養」對「合群性」的比值為 3:1。所建立的比 值矩陣為 (二)計算指標的權重 A = 合群 通識 專業             1 3 1 6 1 3 1 4 1 6 4 1 合群 通識 專業 合群 通識 專業           33 32 31 23 22 21 13 12 11 a a a a a a a a a 合群 通識 專業 A =

(4)

17 12 6 1 4 1 1 1 31 21 11 11 11        a a a a b 4 3 3 1 1 4 4 32 22 12 12 12        a a a a b 5 3 1 3 6 6 33 23 13 13 13        a a a a b 17 3 6 1 4 1 1 4 1 31 21 11 21 21        a a a a b 16 3 3 1 1 4 1 32 22 12 22 22        a a a a b 10 3 1 3 6 3 33 23 13 23 23        a a a a b 17 2 6 1 4 1 1 6 1 31 21 11 31 31        a a a a b 16 1 3 1 1 4 3 1 32 22 12 32 32        a a a a b 10 1 1 3 6 1 33 23 13 33 33  a a a a b 685 . 0 3 5 3 4 3 17 12 ) ( 3 1 13 12 11 1        b b b w 221 . 0 3 10 3 16 3 17 3 ) ( 3 1 23 22 21 2        b b b w 0.093 3 10 1 16 1 17 2 ) ( 3 1 33 32 31 3        b b b w (三)檢驗指標的一致性: 085 . 3 10 * 093 . 0 3 16 * 221 . 0 24 34 * 685 . 0 * * * 3 1 3 3 3 1 2 2 3 1 1 1 max       

   i i i i i i w a w a a w  073 . 0 ) 58 . 0 * ) 1 3 (( ) 3 085 . 3 (     / CR CR=0.073,小於0.1,具有一致性,為有效問卷。 以相同的方式,第二位專家訂定「專業能力」對「通識素養」的比值為 1:2, 「專業能力對「合群性」的比值為 4:1,「通識素養」對「合群性」的比值為 6:1。獲得: w1 0.324,w2 0.587,w3 0.089; max 3.013, CR=0.011 CR=0.011,小於0.1,具有一致性,為有效問卷。 第三位專家訂定「專業能力」對「通識素養」的比值為 1:1,「專業能力對「合 群性」的比值為 4:1,「通識素養」對「合群性」的比值為 5:1。獲得 ; 101 . 0 , 466 . 0 , 433 . 0 2 3 1  www max 3.007, CR=0.006 CR=0.006,小於0.1,具有一致性,為有效問卷。 資料輸入輸出格式: (註:考慮比賽時間,在此僅使用 3 列 3 行之矩陣;程式設計須使用迴圈設計)

(5)

試題三:計算徑向多項式(radial polynomials) (17 分)

說明:徑向多項式(radial polynomials)常被用於計算 Zernike moments,其公 式如下:

 

 

 

 

n s m n s s m n

r

s

m

n

s

m

n

s

s

n

r

R

2 2 / 0 ,

!

2

/

!

2

/

!

!

1

  

(1) 其中,n 是非負的整數,是徑向多項式的次數。m 是正整數或是負整數,但是

要滿足nmeven(偶數)和m n,表示方位角的重複(repetition of the

azimuthal angle),r 是原點(0,0)到(x,y)座標之徑向距離, m 表示取 m 絕

對值,

s

!

表示s 的階乘,例如,3!之階乘為 321=6。

程式功能:請利用上述公式,寫一個程式,能完成以下功能要求:

(6)

查n 是非負的整數時,才可以計算徑向多項式。 (2) 能正確求出和顯示使用者輸入那個徑向距離(r)和次數(n)的所有徑向 多項式。 程式執行範例和要求: (1)假設使用者輸入徑向多項式的徑向距離(r)和次數(n)分別為 1 和 0.5。 (2)求出和顯示的所有徑向多項式,如下所示。 (3)假設使用者輸入徑向多項式的徑向距離(r)和次數(n)分別為 6 和 0.5。 (4)求出和顯示的所有徑向多項式,如下所示。 (5)若妳(你)的程式都完成上述功能和要求,才可以要求檢查功能。 試題四:判斷 2 線段是否有相交 (16 分) 在用電腦對積體電路進行自動佈局中,常需判斷兩條線段是否有相交,請考生撰 寫相關程式。 使用的基本演算法:先求出兩條線段的直線方程式,進而求出兩條直線的交點, 接著判斷交點是否在兩線段之上,若是就代表有相交。  線段的直線方程式:線段的兩端點座標為 (X1,Y1),(X2,Y2),其直線方程式為 (y-Y1) / (Y2-Y1) = (x-X1) / (X2-X1)

 兩條直線的交點:兩條直線的方程式ax+by=c及dx+ey=f,聯立求交點座標(N,O),

N=(ce-bf)/(ae-bd),

O=(cd-af)/(bd-ac)。(註:此式因打字錯誤,將 ae 誤植為 ac,經命題委員重新檢視

選手作品後,判定不影響評分)

 判斷交點(N,O)是否在線段(X1,Y1),(X2,Y2)之上:若 N 在X1 X2之間且 O 在

(7)

請寫一個程式能繪出 XY 坐標軸,並提供輸入兩線段端點座標,進而能判斷 2 線 段是否有相交,若有相交,請求出其交點。參考畫面如下: 試題五:8-Puzzle 智慧盤系統 (17 分) 說明:8-Puzzle 智慧盤為 3x3 二維陣列,由八個可移動的小方塊及一個空格所組成,其 中八個小方塊分別標示 1 至 8 等不同的數字,智慧盤上的八個數字小方塊可隨 機產生,如圖 5-1 左上角所示為一種初始狀態(Initial state),智慧盤的目標為八 個數字小方塊依循 1 至 8 順序成為環形排列,如圖 5-1 右下角所示為一種目標 (Goal)。使用者可以人工或自動方式而有智慧不斷地移動鄰近數字小方塊至空

(8)

格中,朝向其目標,如圖 5-1 所示由初始狀態(Initial state)起,需要 8 次移動步 驟(Step) 才能達到目標(Goal)。 1 6 2 3 8 7 5 4 Initial State 1 6 2 3 8 5 4 7 1 6 2 3 8 4 5 7 1 6 2 3 8 4 5 7 1 6 2 3 8 4 7 5 1 2 3 8 4 7 5 6 1 8 2 3 4 7 5 6 1 8 2 3 7 4 5 6 1 8 2 3 7 4 6 5 Goal

5-1 8-Puzzle 智慧盤由隨機初始狀態(Initial state)經過 8 次移動步驟(Step) 而達到 Goal

2. 請依說明 1,設計如圖 5-2 所示之 8-Puzzle 智慧盤,使其具有下列功能: (1) 系統執行初始狀態時或每當以滑鼠左鍵點一下 Random Set 鍵時,即能隨機產生八 個小方塊分別標示 1 至 8 等不同的數字之任一種初始狀態(Initial state),並且能以人 工方式修改此狀態。 (2) 每當滑鼠左鍵點一下 High-speed Running 鍵時,即能有智慧不斷地移動鄰近的數字 小方塊至空格中,並快速地達到八個數字小方塊依循 1 至 8 順序成為環形排列之目 標(Goal) 為止,且標示總計移動的步驟(Steps)。 (3) 每當滑鼠左鍵點一下 Low-speed Running 鍵時,即能有智慧不斷地移動鄰近的數字 小方塊至空格中,並能以肉眼明顯地看出每個數字小方塊移動至鄰近空格之一個步 驟接下一個步驟,最後達到八個數字小方塊依循 1 至 8 順序成為環形排列之目標(Goal) 為止,且標示總計移動的步驟(Steps)。 (4)上述可重複操作,直至滑鼠點一下 Exit 鍵,則自動離開此系統。 Steps:

8-Puzzle System 智慧盤系統

Exit Initial State

Random Set High-speed Running

36 2 5 1 6 4 8 7 3 Goal 4 5 6 3 7 2 1 8 Low-speed Running 圖 5-2 8-Puzzle 智慧盤系統

範例一:8-Puzzle 智慧盤設定如圖 5-1 所示之初始狀態(Initial state),經過 8 次移動步驟 (Step) 而達到其目標(Goal)。

(9)

範例二:8-Puzzle 智慧盤設定如圖 5-2 所示之初始狀態(Initial state),經過 36 次移動步 驟(Step) 而達到其目標(Goal)。 試題六:迷宮遊戲: (16 分) 說明:以二維陣列模擬的迷宮地圖存放在檔案(.txt)中,如圖 6-1 範例所示: 其大小為 8*8,其中”1”代表不通的路,”0”代表可通的路,此迷宮包含至少一條能夠從 入口到出口的路徑。將一老鼠放入迷宮入口處(0,0),令其尋找出口(7,7),程式須讀取使 用者指定之不同 8*8 迷宮地圖檔(xxx.txt),計算老鼠所有經過的路徑,並輸出在螢幕上。 老鼠的移動過程需依以下的規則進行: 1. 老鼠一次只能走一格,可以有八個不同的方向嘗試移動下一步,分別是北(N)、東北 (NE)、東(E)、東南(SE)、南(S)、西南(SW)、西(W)、西北(NW)。 2. 老鼠移動的方向,必須依照以下順序:北(N)、東北(NE)、東(E)、東南(SE)、南(S)、 西南(SW)、西(W)、西北(NW)。 3. 遇到無路可走時,需退回一步尋找其他可行的路徑。 4. 已走過的路不能再走第二次。 提示:當路徑走到盡頭卻不是迷宮出口時,則回到上一個叉路口,再選擇沒走過的路前 進。亦即,藉由不斷地的回溯(backtracking),也就是在錯誤發生時回到上一個狀態,以 嘗試另外一個選擇,直到找到出口。 範例:圖 6-1 是一個 8*8 迷宮,程式執行後,可以獲得老鼠所有經過的路徑為如圖 6-2: 圖 6-2 圖 6-1 第一次路徑(錯誤解) 經過第一次回溯後再嘗試 之路徑(錯誤解) 經過第二次回溯後再嘗試之 路徑(正確解) 入口→ 0 1 1 1 0 1 1 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 0 0 0 0 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 0 0 →出口 入口→0 1 1 1 0 1 1 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 0 0 0 0 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 0 0 →出口 入口→0 1 1 1 0 1 1 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 0 0 0 0 1 0 1 0 0 1 10 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 0 0 →出口 入口→ 0 1 1 1 0 1 1 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 1 1 1 1 0 0 0 0 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 0 0 →出口

(10)

數據

Updating...

參考文獻

相關主題 :