2024年9月15日日曜日

ChatGPTがプログラムを作ってくれる。

最近、おじさんが作りたいプログラムをきちんとChatGPTに説明すると、おじさんの思った通りのプログラムを作ってくれます。
なんかコツがあるようで、最初の一文で、相手をおだてないといけないらしい。

齟齬が無いように正確に簡潔に仕様を伝えないと思った通り作ってくれないんですが、関数単位で注文を出すとほぼ完璧に作ってくれます。
おじさんのが思った通りの、とてもきれいな美しいコードをはいてくれる。
これほんとちょー便利で凄すぎ。
おじさんが30分くらいかかる仕事を1分でやってくれます。

----------------------------------------
あなたは天才C++プログラマーです。
ChatGPT:
ChatGPT

ありがとうございます!C++のことで何かお手伝いできることがあれば、どうぞ教えてください。

あなた:
サブディレクトリを含むカレントディレクトリ下の指定した複数の拡張子のファイル名一覧を返す関数を作って
ChatGPT:
ChatGPT

サブディレクトリを含むカレントディレクトリ下で指定した複数の拡張子のファイル名をリストで返す関数を、C++で作成するには、C++17以降の標準ライブラリに含まれているstd::filesystemを利用することができます。

以下のコードでは、指定された拡張子を持つファイルを再帰的に検索し、ファイル名をリストに格納して返す関数get_files_with_extensionsを定義しています。

cpp
#include <iostream> #include <filesystem> #include <vector> #include <string> // std::filesystemはC++17から使用可能です namespace fs = std::filesystem; // 指定した拡張子のファイルを再帰的に取得する関数 std::vector<std::string> get_files_with_extensions(const std::string& directory, const std::vector<std::string>& extensions) { std::vector<std::string> files; // カレントディレクトリを再帰的に走査 for (const auto& entry : fs::recursive_directory_iterator(directory)) { if (entry.is_regular_file()) { std::string file_extension = entry.path().extension().string(); // 指定した拡張子のファイルをリストに追加 if (std::find(extensions.begin(), extensions.end(), file_extension) != extensions.end()) { files.push_back(entry.path().string()); } } } return files; } int main() { // 検索する拡張子 std::vector<std::string> extensions = {".cpp", ".h", ".txt"}; // カレントディレクトリ std::string directory = "."; // ファイル名一覧を取得 std::vector<std::string> files = get_files_with_extensions(directory, extensions); // 結果を出力 for (const auto& file : files) { std::cout << file << std::endl; } return 0; }

------------------------------------------
関数をテストするためのmain関数やコメントまで書いてくれるし、
ほんと気が利いてます。
よく間違うんですが、おだてると正解率が凄い上がる。
すごいよあっているよ!
昔ナイトライダーが私はメインメモリ2Tバイトで動いてますってこと言ってましたが、ChatGPTもだいたいそれくらいですね。
こんなナイトライダーみたいな日が来るなんて。