亦新是PTT的重度使用者,身為一個專業鄉民,註冊450天便有逾千篇廢文是再正常不過的事了。
PTT是全臺灣最大的BBS(電子布告欄系統)平台。既然是BBS,那麼全部的畫面就都是由文字所組成的了。不少看板的進版畫面利用長方形及各種幾何圖形的彩色色塊就能拼出各式各樣的圖片及花樣,相當厲害。不過,若是只有黑白方塊,那就太不夠看了,PTT當然也有為文字上色的方法,但是,BBS系統沒有所謂的對話方塊或視窗,上色的方法自然也就麻煩了許多。舉例來說,要打出亮藍色加上綠色背景的「4th CSJH Problem Solving Contest」,必須要輸入「*[1;36;42m4th CSJH Problem Solving Contest*[m」。若每個單字又要分別加上不同的顏色或閃爍效果,就更麻煩了。例如輸入「*[42mC*[44mP*[0;35mS*[1;35mC*[m」,你會得到的依序是「淺藍色搭配綠色背景的C、淺藍色搭配藍色背景的P、深紫色搭配黑色背景的S、以及淺紫色搭配黑色背景的C」。
因為這樣的上色系統太複雜了,亦新決定自己設計一套上色教學系統,讓廣大的潛水鄉民勇敢站出來發文,給亦新一點「顏色」瞧瞧。亦新設計的系統很簡單,只要使用的鄉民打出一串含有色碼的文字,便會自動轉換為上色過的字串,幫助使用者了解剛剛自己打的那一串是亂碼,還是正確的色碼。
但會上色的亦新不是很會寫程式,因此,這支程式恐怕要交給你完成了。不過不用擔心,以下是亦新教你的PTT上色指令教學。
PTT的文字的上色範圍由「色碼」決定,上色效果主要分為「高低亮度」、「閃爍效果」「字型色彩」、「背景色彩」,四種,而預設為「高低亮度:暗;閃爍效果:無;字型色彩:灰;背景色彩:黑」。只要在這一個色碼之後的文字皆會被這一個色碼上色,直到遇到「回到預設值」色碼或者同樣種類的色碼為止。而色碼在顯示時是不會顯示出來的,只有編輯時看得見而已。而無論何種色碼皆是由「*[」(星號和左中括號,ASCII碼42和91)開頭,由「m」(ASCII碼109)結尾,兩者中間夾有一個數字,表示對後面字串所的上色效果,以下是各數字上色效果的對照表。
而比較特別的是,「*[0m」因為太常使用了,故可以直接簡化為「*[m」。下列表格最左方一欄的色碼皆會輸出「CPSC」四字元,而右方四欄則分別表示出四個字元其分別的顯示效果(「亮」表示高低亮度、「閃」表示是否有閃爍效果、「字」表示字型顏色、「背」表示背景顏色):
從表格中可以發現,每一次的色碼開頭都要打「*[」然後結尾都要打「m」實在是太麻煩了,只省略「*[0m」一點都不夠。因此,當多個色碼連續出現時,還有一種簡化方式:我們可以將色碼合併,只要有連續的色碼,只要輸入一次「*[」,接著依序輸入每一個色碼的數字編號,每個編號之間以一個「;」(分號,ASCII碼59)隔開。舉例來說,上方表格中的「*[34m*[1mCPSC*[m」可簡化為「*[34;1mCPSC*[m」,「*[41m*[1m*[34mCP*[5mSC*[m」可簡化為「*[41;1;34mCP*[5mSC*[m」,「*[42m*[5m*[31m*[40m*[mCPSC」可簡化為「*[42;5;31;40;0mCPSC」,「*[35m*[m*[41mCPSC」可簡化為「*[35;0;41mCPSC」。當然,上述的最後兩組色碼,因為中間出現過「*[0m」或「*[m」,有部分色碼其實是無效,可以直接省略的。
以上就是PTT色碼的簡單教學,其實還有不少神奇的小技巧,不過你應該會抱怨已經寫太多程式碼了,所以亦新決定放你一馬,簡化掉這一部分。而你要做的事情是幫助使用者將以類似表格的方式表現出色碼的預覽結果,多簡單啊!
輸入只有一行,包含使用者所希望顯示的字串s,且在字串s中,會有若干個色碼將字串s分隔成數個子字串。
請輸出五行,第一行為使用者欲輸出的字串內容s。
第二行請對齊第一行的字元,依序輸出該字元的「高低亮度」,若為高亮度請輸出「1」(ASCII碼49),若為低亮度請輸出「0」(ASCII碼48)。
第三行請對齊第一行的字元,依序輸出該字元的「閃爍效果」,若有閃爍效果請輸出「V」(ASCII碼86),若無閃爍效果請輸出「.」(小數點,ASCII碼46)。
第四行請對齊第一行的字元,依序輸出該字元的「字型色彩」,若字型色彩為黑色請輸出「b」(ASCII碼98),若字型色彩為紅色請輸出「r」(ASCII碼114),若字型色彩為綠色請輸出「g」(ASCII碼103),若字型色彩為黃色請輸出「y」(ASCII碼121),若字型色彩為藍色請輸出「s」(ASCII碼115),若字型色彩為紫色請輸出「p」(ASCII碼112),若字型色彩為藍綠色請輸出「c」(ASCII碼99),若字型色彩為灰色請輸出「.」(小數點,ASCII碼46)。
第五行請對齊第一行的字元,依序輸出該字元的「背景色彩」,若背景色彩為黑色請輸出「.」(小數點,ASCII碼46),若背景色彩為紅色請輸出「R」(ASCII碼82),若背景色彩為綠色請輸出「G」(ASCII碼71),若背景色彩為黃色請輸出「Y」(ASCII碼89),若背景色彩為藍色請輸出「S」(ASCII碼83),若背景色彩為紫色請輸出「P」(ASCII碼80),若背景色彩為藍綠色請輸出「C」(ASCII碼67),若背景色彩為灰色請輸出「A」(ASCII碼65)。
SAMPLE INPUT 1: *[30maa*[31maa*[32maa*[33maa*[34maa*[35maa*[36maa*[37maa*[47maa*[m SAMPLE INPUT 2: *[41;34mWe*[1ml*[0;30m*[36m*[0;35mcom*[5meToThe*[0;1mCPSC*[42;30m
SAMPLE OUTPUT 1: aaaaaaaaaaaaaaaaaa 000000000000000000 .................. bbrrggyyssppcc.... ................AA SAMPLE OUTPUT 2: WelcomeToTheCPSC 0010000000001111 ......VVVVVV.... sssppppppppp.... RRR.............
輸入中並無換行符號,範例輸入中出現換行為測資過長所致
編號 | 身分 | 題目 | 主題 | 人氣 | 發表日期 |
沒有發現任何「解題報告」
|