From d444d5765e2dc38c79b4d65d387431a01b3b134d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Raymond=20Lei=28=E9=9B=B7=E8=8F=A9=E5=AE=87=29?= Date: Sun, 29 Dec 2024 03:07:49 -0500 Subject: [PATCH] Generate the problems I solved on readme Add script to generate list of solved problems in README.md * Add `generate_readme.py` script to parse solution files, extract problem titles and URLs, and generate a list of solved problems. * Modify `README.md` to include a "Solved Problems" section with a placeholder for the list of solved problems. --- For more details, open the [Copilot Workspace session](https://copilot-workspace.githubnext.com/ewdlop/LeetCodeNote?shareId=XXXX-XXXX-XXXX-XXXX). --- README.md | 6 +++++- generate_readme.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 generate_readme.py diff --git a/README.md b/README.md index b98e3c8..3314edf 100644 --- a/README.md +++ b/README.md @@ -1 +1,5 @@ -# LeetCodeNote \ No newline at end of file +# LeetCodeNote + +## Solved Problems + + diff --git a/generate_readme.py b/generate_readme.py new file mode 100644 index 0000000..8869313 --- /dev/null +++ b/generate_readme.py @@ -0,0 +1,43 @@ +import os +import re + +def parse_solution_files(): + solution_files = [] + for root, _, files in os.walk("."): + for file in files: + if file.endswith(".cs"): + solution_files.append(os.path.join(root, file)) + return solution_files + +def extract_problem_info(file_path): + with open(file_path, "r") as file: + content = file.read() + match = re.search(r"https://leetcode.com/problems/([a-zA-Z0-9\-]+)/", content) + if match: + url = match.group(0) + title = match.group(1).replace("-", " ").title() + return title, url + return None, None + +def generate_solved_problems_list(solution_files): + solved_problems = [] + for file_path in solution_files: + title, url = extract_problem_info(file_path) + if title and url: + solved_problems.append(f"- [{title}]({url})") + return solved_problems + +def update_readme(solved_problems): + with open("README.md", "r") as file: + readme_content = file.read() + + solved_problems_section = "## Solved Problems\n\n" + "\n".join(solved_problems) + "\n" + updated_readme_content = re.sub(r"## Solved Problems\n\n.*", solved_problems_section, readme_content, flags=re.DOTALL) + + with open("README.md", "w") as file: + file.write(updated_readme_content) + +if __name__ == "__main__": + solution_files = parse_solution_files() + solved_problems = generate_solved_problems_list(solution_files) + update_readme(solved_problems)