ウィークリーチャレンジ 295
Mohammad S. Anwar は毎週、毎週 2 つのタスクに対する解決策を全員が考え出すチャンスであるウィークリー チャレンジを送信します。私のソリューションは最初に Python で書かれ、次に Perl に変換されます。これは、私たち全員がコーディングを練習するのに最適な方法です。
挑戦、私の解決策
タスク 1: ワードブレイク
タスク
文字列 $str と単語のリスト @words が与えられます。
指定された文字列を、指定されたリストの 1 つ以上の単語のスペースで区切られたシーケンスに分割できるかどうか、true または false を返すスクリプトを作成します。
私の解決策
TWC があると、月曜日の通勤中にどうやって解決するかを考えることが多くなります。 winwine の文字列と win と wine という単語、そして winewin の文字列の例を考えました。どの単語を最初に一致させる必要があるかを確認する決定的な方法はないようです。
数日後、私は実際には間違った問題を解決しているのではないかという天才的なアイデアを思いつきました。はるかに簡単な解決策は、正規表現を使用して、1 つ以上の単語が文字列 s に一致するかどうかを確認することでした。
そしてそれが私が書いたことです。 Python では re.escape を使用し、Perl では quotemeta を使用して、単語リスト内の特殊なメタ文字をエスケープします。
def word_break(s: str, words: list) -> bool: pattern = '^(' + '|'.join(map(re.escape, words)) + ')+$' return True if re.search(pattern, s) else False
例
$ ./ch-1.py weeklychallenge challenge weekly true $ ./ch-1.py perlrakuperl raku perl true $ ./ch-1.py sonsanddaughters sons sand daughters false
タスク 2: ジャンプ ゲーム
タスク
整数の配列 @ints が与えられます。
最後の要素に到達するための最小ジャンプ数を見つけるスクリプトを作成します。 $ints[$i] は、インデックス $i からの前方ジャンプの最大長を表します。最後の要素に到達できない場合は、-1 を返します。
私の解決策
これらのタスクを完了するとき、私は日常の仕事では行わない TDD も使用します。テストが失敗した場合は、通常、明らかなエラーか、もう少し厄介なエラーが発生しています。このタスクは後のタスクの 1 つです。多くのデバッグが続きました。
Python と Perl の両方に優れたデバッグ ツールが組み込まれていることは知っていますが、私は依然として大量の print ステートメントを使用する派です。
このタスクには、jump_game という再帰関数を使用します。これは 2 つのパラメータを取ります: ints は整数のリスト (完全なリストから始まります) と 1 から始まる move です。
最初の整数が 0 の場合、それ以上の移動は不可能であるため、None (Python では undef) を返します。次に、変数 i を使用して int[0] の値から 1 までを繰り返します。この値がリストの長さより 1 つ小さいかそれより大きい場合、解が得られ、手を返します。他の値については、最初の i 個の値を削除して関数を再度呼び出し、1 ずつ増やします。
すべての反復で最小移動数を確実に返すための min_moves 変数があります。
def word_break(s: str, words: list) -> bool: pattern = '^(' + '|'.join(map(re.escape, words)) + ')+$' return True if re.search(pattern, s) else False
私のバグは何だったのでしょうか? i >= len(ints)-1 ではなく i >= len(ints) をチェックしていました。
例
$ ./ch-1.py weeklychallenge challenge weekly true $ ./ch-1.py perlrakuperl raku perl true $ ./ch-1.py sonsanddaughters sons sand daughters false
以上がブレイクゲームの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

forhandlinglaredataSetsinpython、usenumpyArrays forbetterperformance.1)numpyarraysarememory-effictientandfasterfornumericaloperations.2)nusinnnnedarytypeconversions.3)レバレッジベクトル化は、測定済みのマネージメーシェイメージーウェイズデイタイです

inpython、listsusedynamicmemoryallocation with allocation、whilenumpyArraysalocatefixedmemory.1)listsallocatemorememorythanneededededinitivative.2)numpyArrayasallocateexactmemoryforements、rededicablebutlessflexibilityを提供します。

inpython、youcanspecthedatatypeyfelemeremodelernspant.1)usenpynernrump.1)usenpynerp.dloatp.ploatm64、フォーマーpreciscontrolatatypes。

numpyisessentialfornumericalcomputinginpythonduetoitsspeed、memory efficiency、andcomprehensivematicalfunctions.1)それは、performsoperations.2)numpyArraysaremoremory-efficientthanpythonlists.3)Itofderangeofmathematicaloperty

contiguousMemoryAllocationisucial forArraysは、ForeffienceAndfastelementAccess.1)iteenablesConstantTimeAccess、O(1)、DuetodirectAddresscalculation.2)itemprovesefficiencyByAllowingMultiblementFechesperCacheLine.3)itimplifieMememm

slicingapythonlistisdoneusingtheyntaxlist [start:stop:step] .hore'showitworks:1)startisthe indexofthefirstelementtoinclude.2)spotisthe indexofthefirmenttoeexclude.3)staptistheincrementbetbetinelements

numpyallows forvariousoperationsonarrays:1)basicarithmeticlikeaddition、減算、乗算、および分割; 2)AdvancedperationssuchasmatrixMultiplication;

Arraysinpython、特にnumpyandpandas、aresentialfordataanalysis、offeringspeedandeficiency.1)numpyarraysenable numpyarraysenable handling forlaredatasents andcomplexoperationslikemoverages.2)Pandasextendsnumpy'scapabivitieswithdataframesfortruc


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
