Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
11
Task/Fibonacci-sequence/Rust/fibonacci-sequence-1.rust
Normal file
11
Task/Fibonacci-sequence/Rust/fibonacci-sequence-1.rust
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
fn main() {
|
||||
let mut prev = 0;
|
||||
// Rust needs this type hint for the checked_add method
|
||||
let mut curr = 1usize;
|
||||
|
||||
while let Some(n) = curr.checked_add(prev) {
|
||||
prev = curr;
|
||||
curr = n;
|
||||
println!("{}", n);
|
||||
}
|
||||
}
|
||||
12
Task/Fibonacci-sequence/Rust/fibonacci-sequence-2.rust
Normal file
12
Task/Fibonacci-sequence/Rust/fibonacci-sequence-2.rust
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
use std::mem;
|
||||
fn main() {
|
||||
fibonacci(0,1);
|
||||
}
|
||||
|
||||
fn fibonacci(mut prev: usize, mut curr: usize) {
|
||||
mem::swap(&mut prev, &mut curr);
|
||||
if let Some(n) = curr.checked_add(prev) {
|
||||
println!("{}", n);
|
||||
fibonacci(prev, n);
|
||||
}
|
||||
}
|
||||
7
Task/Fibonacci-sequence/Rust/fibonacci-sequence-3.rust
Normal file
7
Task/Fibonacci-sequence/Rust/fibonacci-sequence-3.rust
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
fn fib(n: u32) -> u32 {
|
||||
match n {
|
||||
0 => 0,
|
||||
1 => 1,
|
||||
n => fib(n - 1) + fib(n - 2),
|
||||
}
|
||||
}
|
||||
9
Task/Fibonacci-sequence/Rust/fibonacci-sequence-4.rust
Normal file
9
Task/Fibonacci-sequence/Rust/fibonacci-sequence-4.rust
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
fn fib_tail_recursive(nth: usize) -> usize {
|
||||
fn fib_tail_iter(n: usize, prev_fib: usize, fib: usize) -> usize {
|
||||
match n {
|
||||
0 => prev_fib,
|
||||
n => fib_tail_iter(n - 1, fib, prev_fib + fib),
|
||||
}
|
||||
}
|
||||
fib_tail_iter(nth, 0, 1)
|
||||
}
|
||||
13
Task/Fibonacci-sequence/Rust/fibonacci-sequence-5.rust
Normal file
13
Task/Fibonacci-sequence/Rust/fibonacci-sequence-5.rust
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
fn main() {
|
||||
for num in fibonacci_sequence() {
|
||||
println!("{}", num);
|
||||
}
|
||||
}
|
||||
|
||||
fn fibonacci_sequence() -> impl Iterator<Item = u64> {
|
||||
let sqrt_5 = 5.0f64.sqrt();
|
||||
let p = (1.0 + sqrt_5) / 2.0;
|
||||
let q = 1.0 / p;
|
||||
// The range is sufficient up to 70th Fibonacci number
|
||||
(0..1).chain((1..70).map(move |n| ((p.powi(n) + q.powi(n)) / sqrt_5 + 0.5) as u64))
|
||||
}
|
||||
29
Task/Fibonacci-sequence/Rust/fibonacci-sequence-6.rust
Normal file
29
Task/Fibonacci-sequence/Rust/fibonacci-sequence-6.rust
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
use std::mem;
|
||||
|
||||
struct Fib {
|
||||
prev: usize,
|
||||
curr: usize,
|
||||
}
|
||||
|
||||
impl Fib {
|
||||
fn new() -> Self {
|
||||
Fib {prev: 0, curr: 1}
|
||||
}
|
||||
}
|
||||
|
||||
impl Iterator for Fib {
|
||||
type Item = usize;
|
||||
fn next(&mut self) -> Option<Self::Item>{
|
||||
mem::swap(&mut self.curr, &mut self.prev);
|
||||
self.curr.checked_add(self.prev).map(|n| {
|
||||
self.curr = n;
|
||||
n
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
for num in Fib::new() {
|
||||
println!("{}", num);
|
||||
}
|
||||
}
|
||||
4
Task/Fibonacci-sequence/Rust/fibonacci-sequence-7.rust
Normal file
4
Task/Fibonacci-sequence/Rust/fibonacci-sequence-7.rust
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
fn main() {
|
||||
std::iter::successors(Some((1u128, 0)), |&(a, b)| a.checked_add(b).map(|s| (b, s)))
|
||||
.for_each(|(_, u)| println!("{}", u));
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue