回分類題庫
g013: G.裝備整理
關鍵字: NPSC 2005 國中組決賽

測資點 : 2 | Time Limit : 10000 ms | Memory Limit : 128000 KB
Accepted : 34 Times / 31 Users | Submit : 98 Times / 31 Users | Accepted rate : 100%
題目加入時間 : 2011-12-06 10:06

Content: 简体中文

楓之谷裡的角色是可以換裝備的,可以視心情、需要,在不同的場合穿不同的衣服鞋子、拿不同的武器等等。除了穿在身上的裝備以外,褪下來的都放在裝備欄裡面。裝備欄是一個表格,每一格可以放一件裝備,表格的寬度是4,而長度則不一定,要看那個角色的機緣……。

裝備欄裡的東西要如何排列,哪一件擺前面還是哪一件擺後面是不重要的,純粹就是爽度問題。一個暱稱是CindyWangXD的玩家有整理裝備的習慣,她喜歡把她的裝備作適當地擺列,使她自己覺得看起來賞心悅目。

遊戲本身有對裝備作分類,所以遊戲角色不可以「戴」鞋子,也不可以「穿」斧頭,還有弓箭手不能拿法杖、劍士不可以拿弓之類的規定,甚至劍士拿的武器還分有單手劍、雙手劍、單手斧、雙手斧……。這樣的規定太細太繁瑣了,現在只是要看起來順眼,不用分得那麼細,所以她自己把裝備作了如下的分類:

頭上的、手上的、上半身的、下半身的、腳上的,共五大類。而頭上的再細分,則有帽子頭巾(hat)、耳環(earring);手上的有刀劍斧(sword)、弓弩(bow)、棍棒杖(bastinado)、盾(targe)、手套(glove);上半身的有衣服(clothes)、披風(cape);下半身的有褲(pant)、裙(skirt);而腳上的就是鞋子(shoe)。

CindyWangXD希望所有的裝備就按照以上這五種大分類以及其中的小分類的順序來排列,而且她希望同一橫列裡的東西,都是同一個大分類。也就是說,她不希望戴在頭上的東西和穿在腳上的東西被放在同一個橫列裡,因為這樣感覺比較不衛生。除了偶爾為了避免把不同類的東西放在同一橫列而不得不留下的空格以外,她是以下圖的順序依序把東西放進去的 (盡可能放滿不留空):

1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
17 18 19 20
21 ... ... ...

然而除了這樣粗略的分類以外,當她空閒的時候,又更進一步地把同一類的東西排順序。就按照上面所列的,頭上的按帽子頭巾、耳環的順序排列;手上的按刀劍斧、弓弩、棍棒杖、盾、手套;上半身的按衣服、披風;下半身的按褲、裙排列;而腳上的只有一種。另外,帽子頭巾、耳環、手套、衣服、披風、褲、裙、鞋子都是有顏色的,所以當耳環、手套、衣服、…排在一起的時候 (一堆耳環排在一起、一堆手套排在一起、…),她希望能按照白(W)、紫(P)、藍(B)、紅(R)、黃(Y)、綠(G)、黑(K)的順序排列 (你可以假設遊戲中只會出現這幾種顏色)。這些裝備都有其屬性值,其中最重要的就是它們的「等級」。當遊戲角色等級足夠的時候,才可以裝備該項裝備所以她打算將刀劍斧、弓弩、棍棒杖、盾按照等級排序,等級小的排前面。如果有些裝備的類別、顏色、等級都完全一樣的話,那再按照它們的名字 (名字是由一串大寫或小寫的英文字母組成) 來排序:按照字典順序來排,先比較第一個字母,A在a前面、a在B前面、B在b前面、b在C前面……如果第一個字母一樣,就比較第二個字母,如果其中一個名字長度不到2、另一個長度至少有2,那就短的排前面,不然就比第二個字母;然後再比第三個、第四個……如果連名字也完全一樣,那就當它們是完全一樣的東西,就誰排前面都可以。

嘖,真是麻煩!不同類的東西不能放在一起,說是衛生問題還有點道理,然而為什麼還要化蛇添足地把同一種類的東西排順序呢?CindyWangXD說,不這樣排的話,心裡會不舒服……

為了不讓CindyWangXD因為裝備排不好而一直在心中有個陰影,請你寫一個程式可以幫忙依照以上規則,把她所有裝備好好地整理整理,並將排好的結果輸出告訴她吧!

Input:

輸入的第一行將有一個整數,表示有幾組測試資料,然後依序就是這幾組測試資料。每一組測試資料的第一行也是一個整數 N (0≦N≦40),表示這組測試資料裡有多少件裝備,接下來的N行,每一行代表一件裝備。這代表裝備的每一行,會有用空白格開的4個欄位:名字、種類、顏色、等級。其中名字是長度不超過30的大小寫英文字串,而且大寫字母至少會有2個,而不具備顏色屬性的裝備,在顏色那一欄會填U。

Output:

對於每一組測試資料,請輸出你排好順序的結果,應該會有若干行,每行有四個裝備 (或留空)。每一件裝備請輸出兩個字元,該裝備前兩個大寫字母;如果是空格的話,請輸出兩個底線字元。而在每一組測試資料的輸出之後,請輸出額外的一行分隔線,於此行印出8個減號以分隔輸出訊息 (請見範例)。

Sample Input:help

若題目沒有特別說明,則應該以多測資的方式讀取,若不知如何讀取請參考 a001 的範例程式。
2
4
HongChaoDuanQun skirt R 0
HongXianWuXiuShan clothes W 0
HongXiangJiaoChangXue shoe R 0
JiaN sword U 0
11
ZiYingPiQun skirt P 20
ZhanDouGong bow U 25
LanDaLieXie shoe B 30
ZiYingPiZhuang clothes P 20
LuYingPiXie shoe G 10
ChuiZhuErHuan earring B 20
GangTieGong bow U 20
HongPiZhiChangXue shoe R 25
HongXiangJiaoChangXue shoe R 0
HongYuMaoMao hat R 15
HuangJingLingXie shoe Y 40

Sample Output :

JN______
HX______
HC______
HX______
--------
HYCZ____
GTZD____
ZY______
ZY______
LDHPHXHJ
LY______
--------

Hint :

Author :

NPSC 2005 國中組決賽 (管理員:sagit)

  Solve it!   Status Forum