names => exponents
Diffstat (limited to 'src/main.rs')
| -rw-r--r-- | src/main.rs | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..c65fa7c --- /dev/null +++ b/src/main.rs @@ -0,0 +1,41 @@ +use std::process::ExitCode; + +static TAB: phf::Map<&str, u16> = phf::phf_map! { + "m" => 6, + "b" => 9, + "tr" => 12, + "quad" => 15, + "quint" => 18, + "sext" => 21, + "sept" => 24, + "oct" => 27, + "non" => 30, + "dec" => 33, + "undec" => 36, + "duodec" => 39, + "tredec" => 42, + "quattourdec" => 45, + "quindec" => 48, + "sexdec" => 51, + "septendec" => 54, + "octodec" => 57, + "novemdec" => 60, + "vigint" => 63, + "cent" => 303, +}; + +fn main() -> ExitCode { + let re = regex::Regex::new(r"([0-9]+(?:\.[0-9]+)?)[^\S]*(m|b|tr|quad|quint|sext|sept|oct|non|dec|undec|duodec|tredec|quattourdec|quindec|sexdec|septendec|octodecc|novemdec|vigint|cent)illion").unwrap(); + let Some(x) = std::env::args().skip(1).reduce(|acc, x| acc + &x) else { + comat::cprintln!("{red}require argument{reset}"); + return ExitCode::FAILURE; + }; + + let Some(mat) = re.captures(&x) else { + comat::cprintln!("{red}wher num?{reset}"); + return ExitCode::SUCCESS; + }; + let exponent = TAB[mat.get(2).unwrap().into()]; + println!("{}e+{exponent}", mat.get(1).unwrap().as_str()); + ExitCode::SUCCESS +} |