Initial commit

This commit is contained in:
Alex D. 2024-10-28 14:11:46 +00:00
commit 70fb45c9b9
Signed by: caskd
GPG Key ID: F92BA85F61F4C173
12 changed files with 144 additions and 0 deletions

1
collatz/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/target

7
collatz/Cargo.lock generated Normal file
View File

@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "collatz"
version = "0.1.0"

6
collatz/Cargo.toml Normal file
View File

@ -0,0 +1,6 @@
[package]
name = "collatz"
version = "0.1.0"
edition = "2021"
[dependencies]

24
collatz/src/main.rs Normal file
View File

@ -0,0 +1,24 @@
/// Determine the length of the collatz sequence beginning at `n`.
fn collatz_length(mut n: i32) -> u32 {
let mut i: u32 = 0;
loop {
i = i+1;
if n == 1 {
break
} else if n % 2 == 0 {
n = n / 2;
} else {
n = 3 * n + 1;
}
}
return i;
}
#[test]
fn test_collatz_length() {
assert_eq!(collatz_length(11), 15);
}
fn main() {
println!("Length: {}", collatz_length(11));
}

1
geometry/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/target

7
geometry/Cargo.lock generated Normal file
View File

@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "geometry"
version = "0.1.0"

6
geometry/Cargo.toml Normal file
View File

@ -0,0 +1,6 @@
[package]
name = "geometry"
version = "0.1.0"
edition = "2021"
[dependencies]

36
geometry/src/main.rs Normal file
View File

@ -0,0 +1,36 @@
// Calculate the magnitude of a vector by summing the squares of its coordinates
// and taking the square root. Use the `sqrt()` method to calculate the square
// root, like `v.sqrt()`.
fn magnitude(v: &[f64; 3]) -> f64 {
let mut r: f64 = 0.0;
for x in v {
r += x.powi(2);
}
r.sqrt()
}
// Normalize a vector by calculating its magnitude and dividing all of its
// coordinates by that magnitude.
fn normalize(v: &mut [f64; 3]) -> &[f64; 3] {
let mag = magnitude(v);
for elm in 0..v.len() {
v[elm] /= mag;
}
v
}
// Use the following `main` to test your work.
fn main() {
println!(
"Magnitude of a unit vector: {}",
magnitude(&[0.0, 1.0, 0.0])
);
let mut v = [1.0, 2.0, 9.0];
println!("Magnitude of {v:?}: {}", magnitude(&v));
normalize(&mut v);
println!("Magnitude of {v:?} after normalization: {}", magnitude(&v));
}

1
nest_array/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
/target

7
nest_array/Cargo.lock generated Normal file
View File

@ -0,0 +1,7 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "nest_array"
version = "0.1.0"

6
nest_array/Cargo.toml Normal file
View File

@ -0,0 +1,6 @@
[package]
name = "nest_array"
version = "0.1.0"
edition = "2021"
[dependencies]

42
nest_array/src/main.rs Normal file
View File

@ -0,0 +1,42 @@
// TODO: remove this when you're done with your implementation.
#![allow(unused_variables, dead_code)]
fn transpose(matrix: [[i32; 3]; 3]) -> [[i32; 3]; 3] {
let mut t = [[0; 3]; 3];
for row in 0..3 {
for column in 0..3 {
t[column][row] = matrix[row][column];
}
}
return t;
}
#[test]
fn test_transpose() {
let matrix = [
[101, 102, 103], //
[201, 202, 203],
[301, 302, 303],
];
let transposed = transpose(matrix);
assert_eq!(
transposed,
[
[101, 201, 301], //
[102, 202, 302],
[103, 203, 303],
]
);
}
fn main() {
let matrix = [
[101, 102, 103], // <-- the comment makes rustfmt add a newline
[201, 202, 203],
[301, 302, 303],
];
println!("matrix: {:#?}", matrix);
let transposed = transpose(matrix);
println!("transposed: {:#?}", transposed);
}