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

ブログ    

推薦する

ニューラル ネットワークの BP アルゴリズムが発明されるまでになぜ長い時間がかかったのでしょうか?

ローズブラットは 1950 年代にパーセプトロンを提案し、多層ニューラル ネットワークの BP アル...

...

ターミネータースカイネット?国防総省は、敵の行動を数日前に予測できるAI予測システムGIDEをリリースした

[[415649]]最近、米国防総省は、大量の情報源を分析し、数日後の敵の行動を1分以内に予測し、事...

脳に WiFi を入れると麻痺が治る?麻痺したサルが6日で普通に歩けるようになる

インターネットの普及は無線技術の発達に伴い、人々のライフスタイルも変えつつあります。モバイル決済、無...

生成AI技術を使用した企業リスク管理

近年、急速に進化する生成型AI技術が広く注目を集めており、多方面に大きな影響を与えると期待されていま...

...

...

従来の連合学習が異種混在の課題に直面したときは、これらのパーソナライズされた連合学習アルゴリズムを試してみてください。

この記事では、パーソナライズされた連合学習に関する 3 つの記事を厳選して詳細に分析します。従来の機...

[インフォグラフィック] Google アルゴリズムの大幅な改善記録

Google 検索アルゴリズムは、歴史上最も先進的な数学工学アプリケーションです。毎日数十億件の検索...

コード生成のための文法ベースの構造化CNNデコーダー

まとめコード生成は、プログラム記述を実行可能なプログラミング言語のソース コードにマッピングします。...

人工知能技術が現代農業の発展を促進する

わが国の著名な学者である周海中氏は、1990年代に「科学技術の進歩により、人工知能の時代が到来しよう...

AIの将来にとって人間の関与が重要な理由

人工知能技術の進歩は、自動化と革新の新しい時代の到来を告げるものとなるでしょう。しかし、機械知能の進...

ChatGPTを超える最初のオープンソースモデルが登場?ネットユーザーはそれを信じない

大型モデルが人気となり、毎日さまざまな「ビッグ」ニュースを目にするようになりました。写真今日、もう一...