☆解題須知☆
本題是「駭客題」,與一般的競賽解題不同,
解題者不必根據題目撰寫解題的程式碼,
題目本身會提供一個存在問題的程式碼,
解題者的目標是構造出一個合理的輸入,
使得該程式執行後會導致錯誤(WA 或 RE 等等)。
Alice 和 Bob 是正在學習 Python 的學生,某一天 Snail 老師出了一份作業,要求學生實作一個函數 isNumber(s)
,其輸入參數 s
為一個字串,該函數需要回傳一個布林值用以判斷字串 s
是否為「數字」?若一個字串至少包含一個字元,且之中的每個字元皆為阿拉伯數字 0123456789
其中之一,則我們稱該字串為「數字」。
Alice 和 Bob 都在期限內完成作業,以下是他們答案:
Alice 的答案:
def isNumber(s: str) -> bool:
return s.isdecimal()
Bob 的答案:
def isNumber(s: str) -> bool:
return s != '' and all(48 <= c <= 57 for c in map(ord, s))
Snail 老師先是對於兩人皆在規定時間之內完成作業給予讚許,但在查看兩人的程式碼後卻表示 Alice 和 Bob 之中只有一個人的答案正確,不過 Snail 老師接著還有重要的會議要出席,於是在說完話之後就匆匆離開了。
由於 Snail 老師並沒有說誰的答案正確,Alice 和 Bob 都堅持自己才是正確的一方,兩人爭執不下,此時倒楣的你正好路過他們旁邊,你隨即被請來幫助他們。首先,你需要先判斷究竟誰才是正確的那一方,接著為了方便說明,你還需要準備一個字串,該字串作為輸入參數時,對於兩人所撰寫的函數會有不同的回傳值。
你能夠順利幫助 Alice 和 Bob 嗎?