穆罕默德·S·安瓦爾 (Mohammad S. Anwar) 每週都會發出“每週挑戰”,讓我們所有人都有機會為每週兩次的任務提出解決方案。我的解決方案先用Python編寫,然後轉換為Perl。這對我們所有人來說都是練習編碼的好方法。
挑戰,我的解決方案
給你一個正整數 $int,有 3 位或更多位。
編寫一個腳本以傳回給定整數中的好整數,如果沒有找到則傳回 -1。一個好的整數是恰好三個連續的匹配數字。
我原本以為這個任務可以用正規表示式模式來完成,但看來我錯了。我會看看其他 TPW 成員是否可以這樣做。
對於這個任務,我有一個變數 pos,它從 0 迭代到小於字串長度的 3。然後我檢查四件事:
如果這些都是真的,我會回這三位數字。在 Python 中,這是作為字串完成的,因為「000」不是真正的整數。如果迭代器耗盡,我返回 -1。
def good_integer(n: int) -> str: value = str(n) length = len(value) for pos in range(length-2): if ( value[pos] == value[pos+1] and value[pos] == value[pos+2] and (pos == 0 or value[pos] != value[pos-1]) and (pos + 3 == length or value[pos] != value[pos+3]) ): return value[pos:pos+3] return '-1'
$ ./ch-1.py 12344456 444 $ ./ch-1.py 1233334 -1 $ ./ch-1.py 10020003 000
您將獲得一個由使用者輸入的字母字串 $str。
編寫一個腳本來尋找使用者必須更改鍵才能鍵入給定字串的次數。更改密鑰被定義為使用與上次使用的密鑰不同的密鑰。 “shift”和“caps lock”鍵不計算在內。
有趣的事實。當我得到一個新鍵盤(每隔幾年)時,我會看到我需要多長時間才能將大寫鎖定鍵撕下來。大多數鍵盤都撐不了一天!
對於此任務,我將字串轉換為小寫並從兩個變數開始。 current_key 值是目前按下的鍵,並使用輸入的第一個字母初始化。 Changes 變數是我所做的關鍵更改的數量,從 0 開始。
然後我循環遍歷輸入字串中的每個字母。如果該字母與 current_key 不同,我會用新字母更新它,並將更改增加 1。
def key_changes(s: str) -> int: s = s.lower() current_key = s[0] changes = 0 for letter in s: if letter != current_key: current_key = letter changes += 1 return changes
$ ./ch-2.py pPeERrLl 3 $ ./ch-2.py rRr 0 $ ./ch-2.py GoO 1
以上是好鑰匙的詳細內容。更多資訊請關注PHP中文網其他相關文章!