每週挑戰 285
穆罕默德·S·安瓦爾 (Mohammad S. Anwar) 每週都會發出“每週挑戰”,讓我們所有人都有機會為兩週的任務提出解決方案。我的解決方案先用Python編寫,然後轉換為Perl。這對我們所有人來說都是練習編碼的好方法。
挑戰,我的解決方案
任務 1:無連接
任務
您將獲得路線列表,@routes。
編寫一個腳本來找出目的地,而無需進一步的傳出連結。
我的解決方案
這非常簡單,因此不需要太多解釋。我計算兩個列表,出發地具有路線列表中的第一個值,而目的地具有第二個值。
然後,我使用清單理解來尋找不在起始清單中的目的地,並將其儲存為 dead_ends。如果此列表中不存在一項,我會發出錯誤。
def no_connection(routes: list) -> str: origins = [v[0] for v in routes] destinations = [v[1] for v in routes] dead_ends = [d for d in destinations if d not in origins] if len(dead_ends) > 1: raise ValueError( 'There are multiple routes with no outgoing connection') if len(dead_ends) == 0: raise ValueError('All routes have an outgoing connection') return dead_ends[0]
範例
$ ./ch-1.py B C C D D A A $ ./ch-1.py A Z Z
任務 2:做出改變
任務
計算給定金額(以美分為單位)找零的方式數量。透過使用硬幣,例如便士、鎳幣、一毛幣、四分之一美元和半美元,有多少種不同的方式可以使總價值等於給定金額?硬幣選擇順序並不重要。
- 一便士 (P) 等於 1 分。
- 一鎳 (N) 等於 5 分。
- 一毛錢 (D) 等於 10 美分。
- 四分之一 (Q) 等於 25 美分。
- 半美元 (HD) 等於 50 美分。
我的解決方案
由於我的程式碼中存在一個(現在已修復)錯誤,這比我希望的要花更長的時間才能完成。我知道 Python 和 Perl 都有調試器,但有時你無法擊敗列印語句:)
我們已經有一段時間沒有任務需要使用遞歸函數了。對於這個任務,我有一個名為making_change的遞歸函數,它取得剩餘的零錢和最後使用的硬幣。第一個呼叫將剩餘的變更值設為輸入,並將最後的硬幣值設為 None(Perl 中的 undef)。
每次呼叫都會迭代可能的硬幣,並執行以下三件事之一:
- 如果硬幣值大於last_coin值,我們會跳過它。這可以確保我們不會重複可能的組合。
- 如果硬幣值與剩餘零錢相同,我們就有一個有效的解決方案,所以我在組合值上加一。
- 如果硬幣價值小於剩餘價值,我會再次呼叫該函數,剩餘價值會減去所使用的硬幣。
組合值被傳遞到上游,因此最終回傳將具有正確的組合數量。
def making_change(remaining: int, last_coin: int | None = None) -> int: combinations = 0 for coin in [1, 5, 10, 25, 50]: if last_coin and last_coin <p>遞歸是有限制的。當遞歸達到(100 深度)時,Perl 會發出警告[https://perldoc.perl.org/perldiag#Deep-recursion-on-subroutine-%22%25s%22]。該值只能透過重新編譯 Perl 來更改。預設情況下,Python 將在 995 次遞歸後引發 (ResursionError)[https://docs.python.org/3/library/exceptions.html#RecursionError],儘管該值可以在運行時修改。 </p> <h3> 範例 </h3> <pre class="brush:php;toolbar:false">$ ./ch-2.py 9 2 $ ./ch-2.py 15 6 $ ./ch-2.py 100 292
以上是建立聯繫的詳細內容。更多資訊請關注PHP中文網其他相關文章!

SlicingaPythonlistisdoneusingthesyntaxlist[start:stop:step].Here'showitworks:1)Startistheindexofthefirstelementtoinclude.2)Stopistheindexofthefirstelementtoexclude.3)Stepistheincrementbetweenelements.It'susefulforextractingportionsoflistsandcanuseneg

numpyallowsforvariousoperationsonArrays:1)basicarithmeticlikeaddition,減法,乘法和division; 2)evationAperationssuchasmatrixmultiplication; 3)element-wiseOperations wiseOperationswithOutexpliitloops; 4)

Arresinpython,尤其是Throughnumpyandpandas,weessentialFordataAnalysis,offeringSpeedAndeffied.1)NumpyArseNable efflaysenable efficefliceHandlingAtaSetSetSetSetSetSetSetSetSetSetSetsetSetSetSetSetsopplexoperationslikemovingaverages.2)

列表sandnumpyArraysInpythonHavedIfferentMemoryfootprints:listSaremoreFlexibleButlessMemory-效率,而alenumpyArraySareSareOptimizedFornumericalData.1)listsStorReereReereReereReereFerenceStoObjects,with withOverHeadeBheadaroundAroundaround64byty64-bitsysysysysysysysysyssyssyssyssysssyssys2)

toensurepythonscriptsbehavecorrectlyacrycrosdevelvermations,分期和生產,USETHESTERTATE:1)Environment varriablesForsimplesettings,2)configurationfilesfilesForcomPlexSetups,3)dynamiCofforComplexSetups,dynamiqualloadingForaptaptibality.eachmethodoffersuniquebeneiquebeneqeniquebenefitsandrefitsandrequiresandrequiresandrequiresca

Python列表切片的基本語法是list[start:stop:step]。 1.start是包含的第一個元素索引,2.stop是排除的第一個元素索引,3.step決定元素之間的步長。切片不僅用於提取數據,還可以修改和反轉列表。

ListSoutPerformarRaysin:1)DynamicsizicsizingandFrequentInsertions/刪除,2)儲存的二聚體和3)MemoryFeliceFiceForceforseforsparsedata,butmayhaveslightperformancecostsinclentoperations。

toConvertapythonarraytoalist,usEthelist()constructororageneratorexpression.1)intimpthearraymoduleandcreateanArray.2)USELIST(ARR)或[XFORXINARR] to ConconverTittoalist,請考慮performorefformanceandmemoryfformanceandmemoryfformienceforlargedAtasetset。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器