Skip to content

Commit b3dc171

Browse files
committed
#45 - Rust solver for problems 125 / 130
1 parent db62555 commit b3dc171

File tree

152 files changed

+1385
-816
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

152 files changed

+1385
-816
lines changed

.idea/checkstyle-idea.xml

Lines changed: 10 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/gradle.xml

Lines changed: 16 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules.xml

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules/euler.iml

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules/java.iml

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/modules/rust.iml

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
[package]
22
name = "euler"
33
version = "1.0.0"
4+
edition = "2021"
45
authors = ["barreiro <[email protected]>"]
56

67
[[bin]]

src/main/rust/euler.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// COPYRIGHT (C) 2017 barreiro. All Rights Reserved.
22
// Rust solvers for Project Euler problems
33

4-
pub use euler::*;
4+
pub use crate::euler::*;
55

66
/// solves all the problems! (the Euler ones)
77
#[allow(clippy::too_many_lines)]
@@ -136,6 +136,11 @@ pub fn main() {
136136
solve(123, &Solver123::default());
137137
solve(124, &Solver124::default());
138138
solve(125, &Solver125::default());
139+
solve(126, &Solver126::default());
140+
solve(127, &Solver127::default());
141+
solve(128, &Solver128::default());
142+
solve(129, &Solver129::default());
143+
solve(130, &Solver130::default());
139144
}
140145

141146
mod euler {
@@ -264,6 +269,11 @@ mod euler {
264269
pub use self::solver123::Solver123;
265270
pub use self::solver124::Solver124;
266271
pub use self::solver125::Solver125;
272+
pub use self::solver126::Solver126;
273+
pub use self::solver127::Solver127;
274+
pub use self::solver128::Solver128;
275+
pub use self::solver129::Solver129;
276+
pub use self::solver130::Solver130;
267277

268278
pub trait Solver {
269279
fn problem_name(&self) -> &str;
@@ -417,4 +427,9 @@ mod euler {
417427
pub mod solver123;
418428
pub mod solver124;
419429
pub mod solver125;
430+
pub mod solver126;
431+
pub mod solver127;
432+
pub mod solver128;
433+
pub mod solver129;
434+
pub mod solver130;
420435
}

src/main/rust/euler/algorithm/algorithm_test.rs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
// COPYRIGHT (C) 2017 barreiro. All Rights Reserved.
22
// Rust solvers for Project Euler problems
33

4-
use algorithm::combinatorics::{choose, partition};
5-
use algorithm::combinatorics::partition_with_constrains;
6-
use algorithm::combinatorics::permutations_of_digits_with;
7-
use algorithm::digits::Digits;
8-
use algorithm::factor::sum_of_factors;
9-
use algorithm::filter::{is_palindrome, is_pandigital};
10-
use algorithm::long::factorial;
11-
use algorithm::long::gcd;
12-
use algorithm::long::pow_mod;
13-
use algorithm::prime::{descending_primes, primes_trial_division_up_to};
14-
use algorithm::prime::miller_rabin;
15-
use algorithm::prime::prime_factors;
16-
use algorithm::prime::primes_up_to;
17-
use algorithm::prime::primes_wheel_up_to;
18-
use algorithm::root::exact_root;
19-
use algorithm::root::floor_sqrt;
20-
use algorithm::root::int_sqrt;
4+
use crate::algorithm::combinatorics::{choose, partition};
5+
use crate::algorithm::combinatorics::partition_with_constrains;
6+
use crate::algorithm::combinatorics::permutations_of_digits_with;
7+
use crate::algorithm::digits::Digits;
8+
use crate::algorithm::factor::sum_of_factors;
9+
use crate::algorithm::filter::{is_palindrome, is_pandigital};
10+
use crate::algorithm::long::factorial;
11+
use crate::algorithm::long::gcd;
12+
use crate::algorithm::long::pow_mod;
13+
use crate::algorithm::prime::{descending_primes, primes_trial_division_up_to};
14+
use crate::algorithm::prime::miller_rabin;
15+
use crate::algorithm::prime::prime_factors;
16+
use crate::algorithm::prime::primes_up_to;
17+
use crate::algorithm::prime::primes_wheel_up_to;
18+
use crate::algorithm::root::exact_root;
19+
use crate::algorithm::root::floor_sqrt;
20+
use crate::algorithm::root::int_sqrt;
2121

2222
#[test]
2323
fn gcd_test() {

src/main/rust/euler/algorithm/bit.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// Rust solvers for Project Euler problems
33

44
use std::iter::FromIterator;
5-
use algorithm::long::{GetAndIncrement, IncrementAndGet};
5+
use crate::algorithm::long::{GetAndIncrement, IncrementAndGet};
66

77
#[derive(Default)]
88
#[must_use]
@@ -92,6 +92,13 @@ impl<'a> FromIterator<&'a u64> for BitSet {
9292

9393
// --- //
9494

95+
impl<'a> BitSet {
96+
#[must_use]
97+
pub fn iter(&'a self) -> BitSetIterator<'a> {
98+
self.into_iter()
99+
}
100+
}
101+
95102
impl<'a> IntoIterator for &'a BitSet {
96103
type Item = u64;
97104
type IntoIter = BitSetIterator<'a>;
@@ -111,7 +118,7 @@ impl<'a> Iterator for BitSetIterator<'a> {
111118
type Item = u64;
112119

113120
fn next(&mut self) -> Option<Self::Item> {
114-
(self.seen.get_and_increment() < self.set.len()).then(||{
121+
(self.seen.get_and_increment() < self.set.len()).then(|| {
115122
while {
116123
!self.set.contains(self.index.increment_and_get())
117124
} {}

0 commit comments

Comments
 (0)