內容 :
小明很喜歡棒球。某天晚上跟媽媽到家裡附近逛夜市,突然發現多了一個棒球九宮格的遊戲攤位(如圖一)。遊戲規則如下:一開始九宮格內會分別擺上一個木板,玩家站在距離九宮格板數公尺外,總共可以丟出九顆球。被命中的格子裡的木板會倒下;若球丟出範圍外,或是剛好丟在九宮格的框架上,則所有格子都會維持原樣。一旦將球丟出去,可用的球數就減少一,直到將九顆球丟完為止。
九顆球都丟完之後,夜市的老闆會根據倒下的格子來檢查連成幾條線,以決定獎品的好壞。依照老闆的規定,只要以下其中一組格子裡的木板同時倒下,則算連成一線:{1,2,3}、{4,5,6}、{7,8,9}、{1,4,7}、{2,5,8}、{3,6,9}。舉例來說,若2、3、5、7、8、9這六個格子中的木板都倒下,則2、5、8連成一線,且7、8、9也連成一線,總共連成兩條線。(請注意,依規則3、5、7不算連成一線。)此外,老闆也會根據丟到的格子號碼,計算"加碼積分",提供額外的獎賞,詳細規則如下:丟到5號得2分,丟到{2、4、6、8}中的任一號碼得5分,丟到{1、3、7、9}中的任一號碼得8分。例如若2、5、8、9這四格被丟中,則加碼積分為20分。請注意,重複丟到的號碼只算一次分數。
請寫一個程式來模擬玩棒球九宮格的遊戲。為了方便貣見,我們將用二維座標來定義九宮格的位置,如圖二所示。每一格都是相同大小的正方形,7號格左下角的座標為(0,0),3號格右上角座標為(30,30)。在模擬的過程中,會提供每一顆球丟在九宮格上的座標位置。為了簡化問題,若某顆球丟在九宮格上的座標位於某一格內,則判斷打到該格;如果座標位於某一格的邊上,則判斷為打到框架,沒有任何格子被打到。舉例來說,假設一顆球丟到座標位置為(7,13)的地方,由於落在4號格之內,判定打到4號格;假設有另一顆球打在(10,2)(或(10,20))的座標位置,則因為落在框架上,沒有任何格子被打到。當然如果座標落在九宮格外的區域,也沒有任何格子被丟中。
九顆球都丟完之後,夜市的老闆會根據倒下的格子來檢查連成幾條線,以決定獎品的好壞。依照老闆的規定,只要以下其中一組格子裡的木板同時倒下,則算連成一線:{1,2,3}、{4,5,6}、{7,8,9}、{1,4,7}、{2,5,8}、{3,6,9}。舉例來說,若2、3、5、7、8、9這六個格子中的木板都倒下,則2、5、8連成一線,且7、8、9也連成一線,總共連成兩條線。(請注意,依規則3、5、7不算連成一線。)此外,老闆也會根據丟到的格子號碼,計算"加碼積分",提供額外的獎賞,詳細規則如下:丟到5號得2分,丟到{2、4、6、8}中的任一號碼得5分,丟到{1、3、7、9}中的任一號碼得8分。例如若2、5、8、9這四格被丟中,則加碼積分為20分。請注意,重複丟到的號碼只算一次分數。
請寫一個程式來模擬玩棒球九宮格的遊戲。為了方便貣見,我們將用二維座標來定義九宮格的位置,如圖二所示。每一格都是相同大小的正方形,7號格左下角的座標為(0,0),3號格右上角座標為(30,30)。在模擬的過程中,會提供每一顆球丟在九宮格上的座標位置。為了簡化問題,若某顆球丟在九宮格上的座標位於某一格內,則判斷打到該格;如果座標位於某一格的邊上,則判斷為打到框架,沒有任何格子被打到。舉例來說,假設一顆球丟到座標位置為(7,13)的地方,由於落在4號格之內,判定打到4號格;假設有另一顆球打在(10,2)(或(10,20))的座標位置,則因為落在框架上,沒有任何格子被打到。當然如果座標落在九宮格外的區域,也沒有任何格子被丟中。
輸入說明 :
輸入總共有9行。每一行有兩個整數x和y (-20 <= x,y <= 50,x與y由一個空白隔開),代表球的座標。
輸出說明 :
請輸出丟出9顆球之後,根據夜市老闆的規則總共連成幾條線;另外請根據丟到的格子號碼,算出加碼積分。
範例輸入 :
輸入範例1:
7 13
10 2
5 8
-9 19
11 35
3 23
18 0
0 18
40 22
輸入範例2:
12 22
15 11
3 20
3 22
33 27
28 28
16 5
22 -5
35 35
範例輸出 :
輸出範例1:
1 21
輸出範例2:
2 28
Dim num(3, 3) As Integer
回覆刪除Public Sub Form_Load()
Open App.Path & "/in.txt" For Input As #1
Open App.Path & "/out.txt" For Output As #2
num(0, 2) = 8: num(1, 2) = 5: num(2, 2) = 8
num(0, 1) = 5: num(1, 1) = 2: num(2, 1) = 5
num(0, 0) = 8: num(1, 0) = 5: num(2, 0) = 8
For i = 1 To 9
Input #1, x, y
x = x / 10: y = y / 10
If Int(x) = x Or Int(y) = y Or x >= 3 Or y >= 3 Or x < 0 Or y < 0 Then
Else
x = Int(x): y = Int(y)
ans = ans + num(x, y)
num(x, y) = 0
End If
Next i
q = 0
For i = 0 To 2
kk = 0: k = 0
For j = 0 To 2
kk = kk + num(i, j)
k = k + num(j, i)
Next j
If kk = 0 Then q = q + 1
If k = 0 Then q = q + 1
Next i
Print #2, q, ans
Close #2
Close #1
End Sub
ㄚ揚
Dim Board(3, 3) As Integer
回覆刪除Private Sub Form_Load()
Me.Hide
Open App.Path & "\in.txt" For Input As #1
Open App.Path & "\out.txt" For Output As #2
Board(3, 1) = 8: Board(3, 2) = 5: Board(3, 3) = 8
Board(2, 1) = 5: Board(2, 2) = 2: Board(2, 3) = 5
Board(1, 1) = 8: Board(1, 2) = 5: Board(1, 3) = 8
For AL = 1 To 9
Input #1, X, Y
X = X / 10: Y = Y / 10
If X >= 0 And Y >= 0 And X <= 3 And Y <= 3 Then
If Int(X) <> X And Int(Y) <> Y And Board(X, Y) < 10 Then
X1 = Int(X) + 1: Y1 = Int(Y) + 1
Sum = Sum + Board(X1, Y1)
Board(X1, Y1) = Board(X1, Y1) + 10
End If
End If
Next AL
For I = 1 To 3
If Board(I, 1) > 10 And Board(I, 2) > 10 And Board(I, 3) > 10 Then sum1 = sum1 + 1
If Board(1, I) > 10 And Board(2, I) > 10 And Board(3, I) > 10 Then sum1 = sum1 + 1
Next I
Print #2, sum1 & " " & Sum
Close #2
Close #1
End
End Sub
BY小白