2010年8月20日 星期五

400 - Unix ls

你服務的電腦公司最近要導入一個新型號的電腦生產線,裡頭的作業系統選用的是你們公司開發的一種新的、類似Unix的作業系統,你的工作是要寫一個給 ls 用的輸出格式化工具。

你的程式會從管線(pipe)中讀取資料(不過現在是從輸入檔案中讀取測試資料),你的程式的輸入會取得一組未經過排列的檔名列表,程式要以檔名的ASCII字元大小順序輸出,輸出的格式要依照最長檔名的長度來計算要輸出幾個欄位。給你的檔名長度最小為1,最大到60個字元,輸出時請靠左對齊,每個欄位的寬度途了最右邊那一欄的寬度等於最長檔名長度以外,其他欄位寬度等於最長檔名長度加2,只要總長度不超過60個字元,則欄位數目並沒有限制,你的程式必須輸出最少的列數,每一列必須由左到右儘可能地填滿。

Input

輸入會有不定數量的檔名清單,每一份清單的一開始會有一個整數 ( tex2html_wrap_inline41 )告訴你清單上有幾個檔名,接下來的N列,每一列為一個靠左對齊的檔名,可能出現的字元包括大小寫字母與數字(a 到 z, A 到 Z, 與 0 到 9),以及 . _ - 這三個符號。檔名不會有不合法的字元,且不會有空的檔名。

最後一份清單之後會以EOF表示檔案結尾,你必須對每一份清單做格式化輸出。

Output

輸出格式化檔名之前,請先輸出60個 - 符號,換行後再接格式化的檔名,經排序後的檔名請由第一欄開始由上到下排好(1 ~ R),再換下一欄(R+1 ~ 2R),以此類推。

Sample Input

10
tiny
2short4me
very_long_file_name
shorter
size-1
size2
size3
much_longer_name
12345678.123
mid_size_name
12
Weaser
Alfalfa
Stimey
Buckwheat
Porky
Joe
Darla
Cotton
Butch
Froggy
Mrs_Crabapple
P.D.
19
Mr._French
Jody
Buffy
Sissy
Keith
Danny
Lori
Chris
Shirley
Marsha
Jan
Cindy
Carol
Mike
Greg
Peter
Bobby
Alice
Ruben

Sample Output

------------------------------------------------------------
12345678.123 size-1
2short4me size2
mid_size_name size3
much_longer_name tiny
shorter very_long_file_name
------------------------------------------------------------
Alfalfa Cotton Joe Porky
Buckwheat Darla Mrs_Crabapple Stimey
Butch Froggy P.D. Weaser
------------------------------------------------------------
Alice Chris Jan Marsha Ruben
Bobby Cindy Jody Mike Shirley
Buffy Danny Keith Mr._French Sissy
Carol Greg Lori Peter

原文出處

沒有留言:

張貼留言