Fixed to_text not returning single digits

This commit is contained in:
Uttarayan Mondal
2021-03-07 01:45:05 +05:30
parent 2312400918
commit 95c69d3160
2 changed files with 27 additions and 19 deletions
+23 -19
View File
@@ -79,26 +79,30 @@ pub fn to_text(number: u32) -> String {
.collect(); .collect();
let second_digit_array: [usize; 2] = [0, 3]; let second_digit_array: [usize; 2] = [0, 3];
let mut last: Option<u8> = None; let mut last: Option<u8> = None;
for (index, digit) in digits.iter().rev().enumerate() { if digits.len() == 1 {
if second_digit_array.contains(&index) { numtext.push_str(digit_to_text(*digits.last().unwrap()).unwrap().as_str());
last = Some(digit.clone()); } else {
continue; for (index, digit) in digits.iter().rev().enumerate() {
} if second_digit_array.contains(&index) {
if let Some(last_digit) = last { last = Some(digit.clone());
let mut buffer = String::new(); continue;
buffer.push_str(tens_place(digit.clone(), last_digit).unwrap().as_str()); }
if index > 2 { if let Some(last_digit) = last {
buffer.push_str(place_value(0, index as u8).unwrap().as_str()); let mut buffer = String::new();
buffer.push_str(tens_place(digit.clone(), last_digit).unwrap().as_str());
if index > 2 {
buffer.push_str(place_value(0, index as u8).unwrap().as_str());
}
numtext.insert_str(0, buffer.as_str());
last = None;
} else {
numtext.insert_str(
0,
place_value(digit.clone(), index as u8 + 1)
.unwrap()
.as_str(),
)
} }
numtext.insert_str(0, buffer.as_str());
last = None;
} else {
numtext.insert_str(
0,
place_value(digit.clone(), index as u8 + 1)
.unwrap()
.as_str(),
)
} }
} }
numtext numtext
+4
View File
@@ -4,6 +4,9 @@ mod tests {
fn digits() { fn digits() {
use crate::digit_to_text; use crate::digit_to_text;
assert_eq!(digit_to_text(9).unwrap(), "nine"); assert_eq!(digit_to_text(9).unwrap(), "nine");
assert_eq!(digit_to_text(3).unwrap(), "three");
assert_eq!(digit_to_text(7).unwrap(), "seven");
assert_eq!(digit_to_text(5).unwrap(), "five");
} }
#[test] #[test]
fn numbers() { fn numbers() {
@@ -11,6 +14,7 @@ mod tests {
assert_eq!(to_text(12345), "twelvethousandthreehundredfortyfive"); assert_eq!(to_text(12345), "twelvethousandthreehundredfortyfive");
assert_eq!(to_text(81123), "eightyonethousandonehundredtwentythree"); assert_eq!(to_text(81123), "eightyonethousandonehundredtwentythree");
assert_eq!(to_text(12), "twelve"); assert_eq!(to_text(12), "twelve");
assert_eq!(to_text(2), "two");
} }
#[test] #[test]
fn tens() { fn tens() {