From 5b18aab18d52390de2220bb2d0363566f2f65cbb Mon Sep 17 00:00:00 2001 From: newt Date: Wed, 9 Oct 2024 18:10:09 +0100 Subject: [PATCH] feat(tools): readme updater! --- euler.png | Bin 0 -> 77183 bytes readme.md | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++- src/main.rs | 71 +++++++++++++++++++++++++++----- 3 files changed, 173 insertions(+), 12 deletions(-) create mode 100644 euler.png diff --git a/euler.png b/euler.png new file mode 100644 index 0000000000000000000000000000000000000000..d19e14a90784231bbb70c34367337ae52510af7b GIT binary patch literal 77183 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 literal 0 HcmV?d00001 diff --git a/readme.md b/readme.md index aae5791..d2af165 100644 --- a/readme.md +++ b/readme.md @@ -1 +1,113 @@ -# readme coming soon +
+ +

euler

+
+ +> My solutions to many of Project Euler's problems. + +All of the solutions here are written in rust. [main.rs](src/main.rs) is the home to my helper command line that can As per the rules of the challenge, I may only publish the solutions to the first 100 problems here, so I will stop after that but still continue the challenge. + +## Challenge Completion + +8 out of 100 public challenges completed. + +- [x] 1 - [Multiples of 3 or 5](src/bin/1.rs) +- [x] 2 - [Even Fibonacci numbers](src/bin/2.rs) +- [x] 3 - [Largest prime factor](src/bin/3.rs) +- [x] 4 - [Largest palindrome product](src/bin/4.rs) +- [x] 5 - [Smallest multiple](src/bin/5.rs) +- [x] 6 - [Sum square difference](src/bin/6.rs) +- [x] 7 - [10001st prime](src/bin/7.rs) +- [x] 8 - [Largest product in a series](src/bin/8.rs) +- [ ] 9 - Special Pythagorean triplet +- [ ] 10 - Summation of primes +- [ ] 11 - Largest product in a grid +- [ ] 12 - Highly divisible triangular number +- [ ] 13 - Large sum +- [ ] 14 - Longest Collatz sequence +- [ ] 15 - Lattice paths +- [ ] 16 - Power digit sum +- [ ] 17 - Number letter counts +- [ ] 18 - Maximum path sum I +- [ ] 19 - Counting Sundays +- [ ] 20 - Factorial digit sum +- [ ] 21 - Amicable numbers +- [ ] 22 - Names scores +- [ ] 23 - Non-abundant sums +- [ ] 24 - Lexicographic permutations +- [ ] 25 - 1000-digit Fibonacci number +- [ ] 26 - Reciprocal cycles +- [ ] 27 - Quadratic primes +- [ ] 28 - Number spiral diagonals +- [ ] 29 - Distinct powers +- [ ] 30 - Digit fifth powers +- [ ] 31 - Coin sums +- [ ] 32 - Pandigital products +- [ ] 33 - Digit cancelling fractions +- [ ] 34 - Digit factorials +- [ ] 35 - Circular primes +- [ ] 36 - Double-base palindromes +- [ ] 37 - Truncatable primes +- [ ] 38 - Pandigital multiples +- [ ] 39 - Integer right triangles +- [ ] 40 - Champernowne's constant +- [ ] 41 - Pandigital prime +- [ ] 42 - Coded triangle numbers +- [ ] 43 - Sub-string divisibility +- [ ] 44 - Pentagon numbers +- [ ] 45 - Triangular, pentagonal, and hexagonal +- [ ] 46 - Goldbach's other conjecture +- [ ] 47 - Distinct primes factors +- [ ] 48 - Self powers +- [ ] 49 - Prime permutations +- [ ] 50 - Consecutive prime sum +- [ ] 51 - Prime digit replacements +- [ ] 52 - Permuted multiples +- [ ] 53 - Combinatoric selections +- [ ] 54 - Poker hands +- [ ] 55 - Lychrel numbers +- [ ] 56 - Powerful digit sum +- [ ] 57 - Square root convergents +- [ ] 58 - Spiral primes +- [ ] 59 - XOR decryption +- [ ] 60 - Prime pair sets +- [ ] 61 - Cyclical figurate numbers +- [ ] 62 - Cubic permutations +- [ ] 63 - Powerful digit counts +- [ ] 64 - Odd period square roots +- [ ] 65 - Convergents of e +- [ ] 66 - Diophantine equation +- [ ] 67 - Maximum path sum II +- [ ] 68 - Magic 5-gon ring +- [ ] 69 - Totient maximum +- [ ] 70 - Totient permutation +- [ ] 71 - Ordered fractions +- [ ] 72 - Counting fractions +- [ ] 73 - Counting fractions in a range +- [ ] 74 - Digit factorial chains +- [ ] 75 - Singular integer right triangles +- [ ] 76 - Counting summations +- [ ] 77 - Prime summations +- [ ] 78 - Coin partitions +- [ ] 79 - Passcode derivation +- [ ] 80 - Square root digital expansion +- [ ] 81 - Path sum: two ways +- [ ] 82 - Path sum: three ways +- [ ] 83 - Path sum: four ways +- [ ] 84 - Monopoly odds +- [ ] 85 - Counting rectangles +- [ ] 86 - Cuboid route +- [ ] 87 - Prime power triples +- [ ] 88 - Product-sum numbers +- [ ] 89 - Roman numerals +- [ ] 90 - Cube digit pairs +- [ ] 91 - Right triangles with integer coordinates +- [ ] 92 - Square digit chains +- [ ] 93 - Arithmetic expressions +- [ ] 94 - Almost equilateral triangles +- [ ] 95 - Amicable chains +- [ ] 96 - Su Doku +- [ ] 97 - Large non-Mersenne prime +- [ ] 98 - Anagramic squares +- [ ] 99 - Largest exponential +- [ ] 100 - Arranged probability diff --git a/src/main.rs b/src/main.rs index 1c13190..6203345 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,8 +1,9 @@ use clap::{Parser, Subcommand}; use owo_colors::OwoColorize; -use std::{fs, path::Path, io::Write}; +use std::{fs::{self, File, OpenOptions}, path::Path, io::{Write, BufRead}}; use scraper::{Html, Selector}; use regex::Regex; +use std::io::{BufReader}; #[derive(Parser)] #[clap(about, author, version)] @@ -19,7 +20,8 @@ enum Commands { #[tokio::main] async fn new() -> Result<(), Box> { - let code_path = Path::new(env!("CARGO_MANIFEST_DIR")).join("src").join("bin"); + let base_dir = Path::new(env!("CARGO_MANIFEST_DIR")); + let code_path = base_dir.join("src").join("bin"); let problem_number = requestty::prompt_one( requestty::Question::int("problemNumber") @@ -61,10 +63,10 @@ async fn new() -> Result<(), Box> { // Fetch the problem information let body = reqwest::get(format!("https://projecteuler.net/problem={problem_number}")).await?.text().await?; - let document = Html::parse_document(Box::leak(body.into_boxed_str())); + let document = Html::parse_document(body.as_str()); let title_selector = Selector::parse("h2")?; let content_selector = Selector::parse(".problem_content")?; - let re = Regex::new(r"<[^>]*>").unwrap(); + let html_tag_regex = Regex::new(r"<[^>]*>").unwrap(); let mut title = document .select(&title_selector) @@ -74,16 +76,14 @@ async fn new() -> Result<(), Box> { .collect::>() .join(""); - let mut problem = re + let mut problem = html_tag_regex .replace_all( - Box::leak( - document + document .select(&content_selector) .next() .unwrap() .inner_html() - .into_boxed_str() - ), + .as_str(), " " ) .to_string() @@ -110,11 +110,60 @@ fn main() {{ ); // Create the file - let mut file = fs::File::create(code_path.join(format!("{problem_number}.rs"))).unwrap(); + let mut file = File::create(code_path.join(format!("{problem_number}.rs"))).unwrap(); file.write(file_body.as_bytes()).unwrap(); drop(file); - // todo: update readme + // Read the contents of the readme for editing + let readme_path = base_dir.join("readme.md"); + + let mut readme_file = OpenOptions::new() + .read(true) + .open(&readme_path) + .unwrap(); + + let mut readme_content = BufReader::new(&readme_file) + .lines() + .map(|s| s.unwrap()) + .collect::>(); + + + drop(readme_file); + + // Mark the problem as done on the readme + let readme_regex = Regex::new(format!(" {problem_number} - (.*)").as_str()).unwrap(); + + for i in 0..readme_content.len() { + let line = readme_content[i].as_str(); + + if readme_regex.is_match(line) { + let matched = readme_regex.captures(line).unwrap(); + readme_content[i] = format!("- [x] {problem_number} - [{}](src/bin/{problem_number}.rs)", &matched[1].trim()); + } + } + + // Update the summary statistics on the readme + let mut readme_string = readme_content.join("\n"); + + let completed_regex = Regex::new("([0-9]+)").unwrap(); + + let new_completed = completed_regex + .captures(readme_string.as_str()) + .unwrap()[1] + .parse::() + .unwrap() + 1; + + readme_string = completed_regex.replace(readme_string.as_str(), format!("{new_completed}")).to_string(); + + // Write the new content to the readme + readme_file = OpenOptions::new() + .write(true) + .open(&readme_path) + .unwrap(); + + readme_file.write(readme_string.as_bytes()).unwrap(); + + drop(readme_file); // Announce completion! println!("{}", "File successfully created! Good luck (:".green());