Poly2Block; Block2Poly; SEA128 tasks working #2

Merged
0xalivecow merged 26 commits from dev into main 2024-10-23 15:21:06 +00:00
3 changed files with 47 additions and 0 deletions
Showing only changes of commit 27acd0a531 - Show all commits

View file

View file

@ -1 +1,2 @@
mod parse;
mod poly;

46
src/utils/poly.rs Normal file
View file

@ -0,0 +1,46 @@
use std::{fmt::format, str::FromStr, u128, u8};
pub fn get_alpha_rep(num: u128) -> String {
let mut powers: Vec<u32> = vec![];
for shift in 0..127 {
//println!("{:?}", ((num >> shift) & 1));
if (((num >> shift) & 1) == 1) {
println!("Shift success");
powers.push(shift);
}
}
//println!("{:?}", powers);
let mut alpha_rep = String::new();
if powers.len() == 1 {
return String::from_str("1").unwrap();
}
for power in powers {
alpha_rep.push_str(&format!("a^{power}"));
}
alpha_rep
}
#[cfg(test)]
mod tests {
// Note this useful idiom: importing names from outer (for mod tests) scope.
use super::*;
#[test]
fn test_num_to_alpha_rep_1() {
let number: u128 = 0x010000000000000000000000000000000;
let polynomial: &str = "1";
assert_eq!(get_alpha_rep(number.reverse_bits()), polynomial);
}
#[test]
fn test_num_to_alpha_rep_a4a2a() {
let number: u128 = 0x16000000000000000000000000000000;
let polynomial: &str = "a^4a^2a";
assert_eq!(get_alpha_rep(number.reverse_bits()), polynomial);
}
}