Last active
August 29, 2015 14:05
-
-
Save renyuanL/d11c169d37cf05b8f704 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
''' | |
ryOlmp2013_01.py | |
呂仁園,2014/08/27 | |
---------------------------- | |
第一題:拼字問題 | |
執行時間: 1 秒 | |
有一位李先生從英文報紙上剪下 n 個大寫字母, | |
希望可以拼貼出一封由大寫字母與空白字元組成的賀年字串 L 寄給朋友。 | |
請問這 n 個字母能從 L 的第一個字排到第幾個字, | |
請將能拼出的部分顯示出來。 | |
例如,賀年卡 L 的內容為 HAPPY NEW YEAR, | |
而 n 個字母為 NAWPEHLP。則須顯示 HAPP。 | |
輸入說明 | |
第一行輸入字串 L,L 由大寫字母與空白字元組成,0 < |L| <= 100。 | |
第二行輸入 n 個連續大寫字母,其中 0 < n <= 100。 | |
輸出說明 | |
顯示所能拼出的文字(單字跟單字間要有一個空白字元)。 | |
假設至少可拼出一個字母。 | |
範例一 | |
輸入 | |
HAPPY NEW YEAR | |
AWPEHLPY | |
輸出 | |
HAPPY | |
說明: 在比對的過程中發現 n = 8 個大寫字母中沒有 N 這個字, | |
且在 N 之前的部分都有找到,因此輸出 HAPPY(Y 之後不需列印空白字元)。 | |
範例二 | |
輸入 | |
GOOD LUCK IN THE YEAR AHEAD | |
OMKLDLMONNG | |
輸出 | |
GOOD L | |
說明: 在比對的過程中發現 n = 11 個大寫字母中沒有 U 這個字, | |
而在 U 之前的部分都有找到, | |
且因為 L 是屬於下一個單字 LUCK 的字母, | |
因此輸出為 GOOD L,D 和 L 間必須有一個空白字元。 | |
''' | |
範例= [ | |
#原題目所給的測試 | |
{'L':'HAPPY NEW YEAR', # 賀卡字串 | |
'I':'AWPEHLPY', # 輸入字串 | |
'T':'HAPPY'}, # 【人工預計】的正確輸出字串 | |
{'L':'GOOD LUCK IN THE YEAR AHEAD', | |
'I':'OMKLDLMONNG', | |
'T':'GOOD L'}, | |
#我們自己的測試 | |
{'L':'SINCERELY RENYUAN LYU', | |
'I':'NCERYENSIRELYXXAABUAUNL', | |
'T':'SINCERELY RENYUAN L'}, | |
{'L':'恭賀 新喜', | |
'I':'賀大家恭可不新', | |
'T':'恭賀 新'}, | |
{'L':'呂仁園 敬賀', | |
'I':'仁一二三進園敬呂', | |
'T':'呂仁園 敬'} | |
] | |
# | |
# 主要的演算法在此。 | |
# | |
def 拼貼賀年字串(L, I): | |
O= '' | |
for x in L: | |
if (x in I): | |
O += x | |
I= I.replace(x,'_',1) | |
elif (x == ' '): | |
O += x | |
else: | |
break | |
O= O.strip() | |
return O | |
# | |
# 把演算法在 範例中 測試一番, | |
# 包括別人給的例子,以及自己創造的例子。 | |
# | |
def 主測試(): | |
for e in 範例: | |
L= e['L'] | |
I= e['I'] | |
O= 拼貼賀年字串(L,I) | |
print('拼貼賀年字串= ',O) | |
# 以下這行可測試程式的「邏輯」正確性 | |
assert (O==e['T']), (O,e) | |
if __name__=='__main__': | |
主測試() | |
''' | |
# 執行結果 | |
>>> | |
拼貼賀年字串= HAPPY | |
拼貼賀年字串= GOOD L | |
拼貼賀年字串= SINCERELY RENYUAN L | |
拼貼賀年字串= 恭賀 新 | |
拼貼賀年字串= 呂仁園 敬 | |
>>> | |
''' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment