アルゴリズムの問​​題を解決するための 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万ドルの優勝賞金を獲得した。

ブログ    

推薦する

人工知能とモノのインターネットの統合後の応用シナリオは何ですか?

人工知能 (AI) とモノのインターネット (IoT) の技術トレンドが融合し始めており、業界ではこ...

2021年のAIに関する10の大胆な予測の科学的分析 学術見出し

2020年は忘れられない年です。今年に入って、新型コロナウイルスの感染拡大に伴い、人工知能(AI)が...

モデルが大きくなればなるほど、パフォーマンスは向上しますか? Appleの自己回帰視覚モデルAIM: そうです

過去数年間、大規模な事前トレーニング済みモデルが NLP の分野で成功を収めてきました。このようなモ...

スタンフォード大学の「バーチャルタウン」がオープンソース化:25人のAIエージェントが「ウエストワールド」に登場

「ウエストワールド」を見たことがある友人は、このドラマの舞台が未来の世界、巨大なハイテクな大人向けテ...

月給5万ドルでこのホットなAI分野をマスターするには、これらの9冊の本を読むだけで十分です

はじめに:国内の求人検索サイトのデータによると、2019年現在、上海の自然言語処理(NLP)関連職種...

5G+AIのWin-Win共生、人工知能には大きな可能性があります!

人々が悲観的であろうと楽観的であろうと、人工知能に関する議論は止むことなく、さまざまな論争の中で、人...

スマートフォンの代替品?元アップルデザイナーが699ドルの人工知能ブローチ「AI Pin」を発売

海外メディアの報道によると、元アップルのデザイナー、イムラン・チャウドリ氏とベサニー・ボンジョルノ氏...

SFから現実へ:人工知能の歴史と将来の可能性

人工知能は、SFで概念化されて以来、長い道のりを歩んできました。かつては想像上のものだったアイデアが...

人工知能、液体冷却、そして未来のデータセンター

生成型人工知能 (AI) の急速な台頭は、企業が AI を導入する驚異的なスピードを浮き彫りにしてい...

2022 年の AIOps トレンド予測

[[429163]]人工知能、機械学習、自動化などの先進技術の普及により、企業のビジネスシナリオは大...

COVID-19は非接触アクセス制御の新時代を加速させる

現在、新型コロナウイルス感染症のパンデミックが世界的に拡大し、私たちの知る世界は大きく変化しています...

...

AIと「喧嘩」したくない?人々はどんなスマートホーム体験を望んでいるのでしょうか?

スマートホームの発展過程で、その定義は何度も変化してきました。当初のリモートコントロールの概念から、...

ジェネレーティブAIがファッション業界にもたらす変化

業界ではデザインやスキンケアに AI 技術が活用されています。一部の企業は、生成ツールを超えて、コン...

...