突破遊戲

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-20 04:39:01844瀏覽

The Break Game

每週挑戰 295

穆罕默德·S·安瓦爾 (Mohammad S. Anwar) 每週都會發出“每週挑戰”,讓我們所有人都有機會為兩週的任務提出解決方案。我的解決方案先用Python編寫,然後轉換為Perl。這對我們所有人來說都是練習編碼的好方法。

挑戰,我的解決方案

任務 1:斷詞

任務

您將獲得一個字串 $str 和單字清單 @words。

編寫一個腳本,以傳回 true 或 false 是否可以將給定字串分割為由給定清單中的一個或多個單字組成的空格分隔序列。

我的解決方案

有了 TWC,我傾向於在周一回家的路上思考如何解決它。我想到了 winwine 字串和 win 和 wine 兩個字的例子,還有 winewin 字串。似乎沒有一種確定的方法來確定我應該先匹配哪個單字。

幾天后,我有了一個天才的想法,我實際上解決了錯誤的問題。一種更簡單的解決方案是使用正規表示式來查看一個或多個單字是否與字串 s 相符。

這就是我寫的。我在 Python 中使用 re.escape,在 Perl 中使用 quotemeta 來轉義單字清單中的任何特殊元字元。

範例

任務2:跳躍遊戲

任務

給你一個整數數組,@ints。

寫一個腳本來找出到達最後一個元素的最小跳轉次數。 $ints[$i] 表示從索引$i 向前跳轉的最大長度。如果最後一個元素無法訪問,則傳回 -1。

我的解決方案

在完成這些任務時,我還使用了 TDD,這是我在日常工作中不會做的事情。如果測試失敗,通常要么存在明顯的錯誤,要么存在一些更棘手的錯誤。這個任務是後來的任務之一。隨後進行了大量的調試。

我知道 Python 和 Perl 都有優秀的內建偵錯工具,但我仍然喜歡使用大量的列印語句。

對於這個任務,我有一個名為「jump_game」的遞歸函數。它需要兩個參數:ints 是整數列表(從完整列表開始),moves 從 1 開始。

如果第一個整數是 0,我將返回 None (Python 中的 undef),因為無法進一步移動。然後,我使用變數 i 從 int[0] 的值迭代到 1。如果該值大於或等於列表長度減一,我們就有了一個解決方案,並且我返回移動。對於其他值,我再次呼叫該函數,刪除第 i 個值,並將移動量遞增 1。

我有一個 min_moves 變數來確保我們傳回所有迭代的最小移動次數。

你問我的錯誤是什麼?我正在檢查 i >= len(ints) 而不是 i >= len(ints)-1。

範例

以上是突破遊戲的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn