f340. 4.俄羅斯方塊 (Tetris)
標籤 :
通過比率 : 41人/64人 ( 64% ) [非即時]
評分方式:
Tolerant

最近更新 : 2024-05-18 07:55

內容

2020年8月TOI新手同好會 (原題連結)

4-俄羅斯方塊 (Tetris)

問題敘述

小閔是個厲害的程式高手,在閒暇之餘他最喜歡做的事便是玩俄羅斯方塊。為求精進,他會將每局的操作側錄下來觀察自己的技巧有沒有進步。遊戲中有五種指令,代號為 0 到 4,以 T 字型方塊為例,指令效果如下表所示。

指令代號

指令前

指令後

0

(無指令)

⬜⬛❎⬛⬜⬜

⬜⬜⬛⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬛❎⬛⬜⬜

⬜⬜⬛⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

1

(右移)

⬜⬛❎⬛⬜⬜

⬜⬜⬛⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬛❎⬛⬜

⬜⬜⬜⬛⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

2

(左移)

⬜⬛❎⬛⬜⬜

⬜⬜⬛⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬛❎⬛⬜⬜⬜

⬜⬛⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

3

(置底)

⬜⬛❎⬛⬜⬜

⬜⬜⬛⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬛❎⬛⬜⬜

⬜⬜⬛⬜⬜⬜

4

(右旋)

⬜⬛❎⬛⬜⬜

⬜⬜⬛⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬛⬜⬜⬜

⬜⬛❎⬜⬜⬜

⬜⬜⬛⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

⬜⬜⬜⬜⬜⬜

 

每送出一個指令,方塊都會先往下移一格,再執行該指令之效果。指令執行方式為以中心點先移動再進行其餘方塊位置計算。若途中遇到不合法的指令操作使得方塊超出邊界,必須將該指令視為0號指令(請見範例2)。

請撰寫一個程式模擬操作結果之畫面。

 

評分說明

第一組(30分):測資只包含0~3號指令,並保證沒有不合法指令產生。

第二組(30分):測資包含所有指令,並保證沒有不合法指令產生。

第三組(40分):無特殊限制。

輸入說明

第一行為兩個整數,代表畫面大小為 x×y (x為橫軸大小,y為縱軸大小,3 ≤ x, y ≤ 100)。畫面最左下角座標為 (1, 1)。第二行由一個整數n構成 (1 ≤ n < y),代表遊戲內會出現的所有操作數目。第三行由n個整數構成,代表對方塊所下達之指令。

⬛❎⬛

⬜⬛⬜

錨點為旋轉時的參考點(上圖標記叉號所在位置),當該方塊旋轉時,以錨點作為基準點。除此之外,錨點亦為初始生成位置之參考點,初始方塊出現錨點座標為 (⌈x/2⌉ , y),且面對方向如上圖所示。(⌈x⌉ 代表為對x向上取整數值。)

輸出說明

輸出遊戲執行完所有指令後的畫面。以1代表有方塊之空間,0代表無方塊之空間。

範例3說明:已經置底後的指令皆為無效指令,不執行。

範例輸入 #1
6 6
3
0 1 3
範例輸出 #1
000000
000000
000000
000000
001110
000100
範例輸入 #2
6 6
4
1 1 1 1
範例輸出 #2
000000
000000
000000
000000
000111
000010
範例輸入 #3
5 5
5
1 4 3 1 1
範例輸出 #3
00000
00000
00010
00110
00010
範例輸入 #4
3 6
4
4 4 0 4
範例輸出 #4
000
000
000
010
011
010
測資資訊:
記憶體限制: 64 MB
提示 :
標籤:
出處:
TOI2020年8月新手同好會 [管理者: p3a_owhj (阿普二信) ]

本題狀況 本題討論 排行

編號 身分 題目 主題 人氣 發表日期
23146 yes51851823@ ... (wseds) f340
969 2020-10-25 21:12