names => exponents
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs41
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
+}