From 909bcfef6dd475a33e63cdc3797f0a5920fda792 Mon Sep 17 00:00:00 2001 From: electria Date: Mon, 20 Jul 2026 19:22:33 -0700 Subject: [PATCH] feat: trim out consective zeros instead of clamping the number of significant digits fixes `tylc "14.00643 + 1.00784 * 4 + 35.446 + 15.9994 * 4"` --- src/main.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main.rs b/src/main.rs index 247ba53..a056ef6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -16,7 +16,19 @@ pub fn get_significant_digits(n: &Float) -> usize { let raw_string = format!("{n}"); let mut significant_digits = raw_string.len() - 1; - for (i, _) in raw_string.char_indices() { + let mut consecutive_zeros = 0; + for (i, c) in raw_string.char_indices() { + if c == '0' { + consecutive_zeros += 1; + } else { + consecutive_zeros = 0; + } + + if consecutive_zeros >= 10 { + significant_digits = i - consecutive_zeros; + break; + } + if !raw_string[i..raw_string.len()].contains(|c| matches!(c, '1'..'9')) { significant_digits = i; break; @@ -38,5 +50,5 @@ fn main() { let result = parse_and_calc(&input); - println!("{result:.0$}", get_significant_digits(&result).clamp(0, 6)); + println!("{result:.0$}", get_significant_digits(&result)); }