アルゴリズムの問​​題を解決するための Python 3 コード フレームワーク

アルゴリズムの問​​題を解決するための Python 3 コード フレームワーク

序文

現在インターンシップをしており、仕事量はそれほど多くないので、空き時間を利用してPATのウェブサイトでPython 3を使った問題を練習し、Python 3の機能や関数型プログラミングの概念を活用することに注力しています。ほとんどの問題は、1行に複数の数値や文字列を読み込む、1行に一定数の文字列を出力するなど、入出力の形式が似ているため、繰り返しコードが多く生成されます。

Pythonコード

そこで、VS Code のコード スニペット機能を使用して、これらの入力と出力を処理するためのコード フレームワークを記述し、テスト関数を追加しました (関数を記述する前にテストを記述するのが正しい方法です)。コードは次のとおりです。

  1. データ入出力を備えたシンプルなコンソール プログラム  
  2. インポートシステム
  3. インポートio
  4.  
  5.  
  6. read_int() を定義します:
  7. 一連の数字を読んでください。」 「」  
  8. リストを返す(map( int , sys.stdin.readline().split()))
  9.  
  10.  
  11. test_read_int() を定義します:
  12. "" "read_int 関数をテストする" ""  
  13. test_file = io.StringIO( "1 2 3\n" )
  14. sys.stdin = テストファイル
  15. read_int() == [1, 2, 3] をアサートし、 「read_int エラー」  
  16.  
  17.  
  18. read_float() を定義します:
  19. "" "一連の浮動小数点数を読み取ります。" ""  
  20. リストを返す(map( float , sys.stdin.readline().split()))
  21.  
  22.  
  23. test_read_float() を定義します:
  24. "" "read_float 関数をテストする" ""  
  25. test_file = io.StringIO( "1 2 3\n" )
  26. sys.stdin = テストファイル
  27. read_float() == [1.0, 2.0, 3.0] をアサートすると、 「read_float エラー」が発生します。  
  28.  
  29.  
  30. read_word() を定義します:
  31. 文字列のシリーズを読みます。」 「」  
  32. リストを返す(map(str, sys.stdin.readline().split()))
  33.  
  34.  
  35. def test_read_word():
  36. "" "read_word 関数をテストする" ""  
  37. test_file = io.StringIO( "1 2 3\n" )
  38. sys.stdin = テストファイル
  39. read_word() == [ "1" , "2" , "3" ], "read_word エラー"をアサートする 
  40.  
  41.  
  42. def combine_with(seq, sep= ' ' , num=None):
  43. "" "リスト列挙型を文字と結合し、文字列オブジェクトを返します" ""  
  44. res = sep.join (リスト(マップ(str, seq)))
  45. num なしではない:
  46. res = str(seq[0])
  47. 範囲(1, len(seq))内の要素の場合:
  48. 解像度 += 間隔 + \
  49. str(seq[element]) 要素% num != 0 の場合、そうでない場合  '\n' + \
  50. str(seq[要素])
  51. 戻り
  52.  
  53.  
  54. test_combile_with() を定義します:
  55. "" "combile_with 関数をテストします。" ""  
  56. combine_with([1, 2, 3, 4, 5], '*' , 2) == "" "1*2 3*4 5" "" , "combine_with エラー。" とアサートします。  
  57.  
  58.  
  59. main() を定義します:
  60. メイン機能  
  61. 合格
  62.  
  63.  
  64. __name__ == '__main__'の場合:
  65. sys.exit( int (main()または0))

VS コード スニペット

VS Code に追加されたデフォルトのコード スニペットは、おおよそ次のように動作します。

ファイル->オプション->ユーザーコードスニペットでPythonを選択

「python.json」ファイルを次のように編集します。

  1. {
  2. /*
  3. // Python用のスニペットをここに配置します。各スニペットはスニペットで定義されます 接頭辞、本文   
  4. //説明プレフィックス  スニペットをトリガーすると、本文が展開されて挿入されます。可能な変数は次のとおりです。
  5. // $1、$2タブストップ、${id}${id:label}${1:label}は変数です同じ IDを持つ変数は接続されます。
  6. // 例:
  7. 「コンソールに印刷」 : {
  8. 「プレフィックス」 : 「ログ」
  9. "体" : [
  10. "console.log('$1');" ,
  11. 「$2」  
  12. ]、
  13. 「説明」 : 「コンソールにログ出力」  
  14. }
  15. */
  16. 「データ入出力を備えたシンプルなコンソール プログラム」 : {
  17. 「プレフィックス」 「シンプル」
  18. "body" : [ "\"\"\"データ入力と出力を備えたシンプルなコンソール プログラム。\"\"\"\nimport sys\n\ndef read_int():\n \"\"\"一連の数値を読み取ります。\"\"\"\n return list(map(int, sys.stdin.readline().split()))\n\n\ndef read_float():\n \"\"\"一連の浮動小数点数値を読み取ります。\"\"\"\n return list(map(float, sys.stdin.readline().split()))\n\n\ndef read_word():\n \"\"\"一連の文字列を読み取ります。\"\"\"\n return list(map(str, sys.stdin.readline().split()))\n\n\ndef combine_with(seq, sep=' ', num=None):\n \"\"\"リスト列挙型を文字と結合し、文字列オブジェクトを返します\"\"\"\n res = sep.join(list(map(str, seq)))\n if num is not None:\n res = str(seq[0])\n for element in range(1, len(seq)):\n res += sep + str(seq[element]) if element % num != 0 else '\\n' + str(seq[element])\n return res\n\n\ndef main():\n \"\"\"メイン関数。\"\"\"\n pass\n\n\nif __name__ == '__main__':\n sys.exit(int(main() or 0))\n"  
  19. ]、
  20. 「説明」 : 「データ入力と出力を備えたシンプルなコンソール プログラム」  
  21. }
  22. }

要約する

Python は、アルゴリズムの問​​題を解くなど、高いパフォーマンスが求められるシナリオには特に適していませんが、Python を使用すると、さまざまなキュー タイプや文字列処理条件などの一部のシミュレーション問題を解決する効率が大幅に向上します。さらに、cimport を使用すると、C 言語のデータ構造と Python の構文特性を使用できるため、ネイティブ C コードと同等の効率が得られます。

<<:  アリコロニーアルゴリズムの理論と実践ガイド

>>:  DiDiのグローバルDi-Techアルゴリズムコンテストが終了し、中国のプレイヤーが10万ドルの優勝賞金を獲得した。

ブログ    
ブログ    

推薦する

Kingsoft ビデオクラウド AI + エッジコンピューティング デュアルアクセラレーションが 5G HD 時代をリード

5G時代の到来により、さまざまな業界のトラフィックが爆発的な増加を遂げており、特にビデオ業界はインタ...

調査レポート:世界中の企業の75%が職場でのChatGPTの使用を禁止または禁止を検討中

8月9日、BlackBerryは新たな調査レポートを発表し、現在、世界中の企業の75%が職場でのCh...

AI が企業のランサムウェア対策やクラウド セキュリティ侵害防止にどのように役立つか

サイバーセキュリティの状況は毎年、組織が対処する必要のある新たな課題や障害をもたらしており、たとえば...

「地表」から「宇宙」まで、探査ロボットが未知の領域の秘密を解き明かす

ロボットは現代社会で生み出された新しい種です。科学技術の進歩により、ロボットの開発はもはや人間の能力...

海外の研究者がAIを使って生体認証を欺く顔を生成

海外メディアによると、イスラエルのテルアビブ大学の研究者らは最近、画像生成システムStyleGANを...

...

ChatGPTヘルプ! 4歳の男の子は3年間で17人の専門医に治療を受けたが、効果はなかった。大型模型が病気の原因を正確に特定した

3年間「奇妙な病気」の治療を求めても効果がなかったのですが、ついにChatGPTによって診断に成功し...

...

現実は素晴らしい、Googleとコーネル大学が提案した実画像補完技術RealFill

休暇で旅行するときは、写真を撮ることが必須です。しかし、景勝地で撮影した写真の多くは、背景に何かが写...

クルーズの自動運転意思決定・計画技術の分析

クルーズ社の自動運転意思決定計画および制御部門の責任者であるブランドン・バッソ氏は、コロンビア大学で...

オラクル、企業の言語モデルの導入と微調整を支援するクラウドベースの生成AIサービスを開始

データベース大手のオラクルは最近、Oracle Cloud Infrastructure Gener...

プログラマーが面接でアルゴリズムについて素早く準備する方法

序文短い記事を書こうと決めたので、これがそれです。私がこの記事を書こうと思った理由は、Weibo 上...

AIの負担を軽減する時が来た。Python AIライブラリ5選のおすすめ

機械学習は興味深いものですが、作業範囲が広く複雑で困難です。開発者として学ぶべきツールはたくさんあり...

Point Transformer V3: よりシンプルに、より速く、より強力に!

この記事は、Heart of Autonomous Driving の公開アカウントから許可を得て転...

ついに、データ、情報、アルゴリズム、統計、確率、データマイニングをわかりやすく説明してくれる人がいました!

[[282346]]データとは何かデータとは何でしょうか? これは私たちがほとんど無視する質問にな...