In this challenge, you will create a function that determines the characteristics of a given number. Specifically, the function will evaluate whether a number is positive negative, or zero and also determine if it is even or odd.
Rust's powerful control flow mechanisms, including if
, else if
, and else
statements, make it easy to handle multiple conditions. By combining these conditions with logical operators, you can create a function that provides comprehensive information about the number.
You are given a function describe_number(n: i32) -> String
that takes an integer as input and returns a string description of the number's characteristics. The description should include whether the number is positive, negative, or zero and whether it is even or odd.
For example:
Complete the function by implementing the necessary conditions and logical checks.
let result = describe_number(10);
assert_eq!(result, "Positive even");
let result = describe_number(-3);
assert_eq!(result, "Negative odd");
let result = describe_number(0);
assert_eq!(result, "Zero");
%
can help determine if a number is even or odd.&&
and ||
will be useful for combining conditions.pub fn describe_number(n: i32) -> String { if n == 0 { return "Zero".to_string(); } let pos = n > 0; let even = n % 2 == 0; if pos && even { return "Positive even".to_string(); } if pos { return "Positive odd".to_string(); } if even { return "Negative even".to_string(); } return "Negative odd".to_string();}
pub fn describe_number(n: i32) -> String { if n > 0 { if n % 2 == 0 { "Positive even".to_string() } else { "Positive odd".to_string() } } else if n < 0 { if n % 2 == 0 { "Negative even".to_string() } else { "Negative odd".to_string() } } else { "Zero".to_string() }}
pub fn describe_number(n: i32) -> String { match (n, n % 2) { (0, 0) => "Zero", (_, 1) if n > 0 => "Positive odd", (_, 0) if n > 0 => "Positive even", (_, -1) if n < 0 => "Negative odd", (_, 0) if n < 0 => "Negative even", _ => unreachable!(), } .to_string()}
pub fn describe_number(n: i32) -> String { if n == 0 { return "Zero".to_string(); } let sign = if n < 0 { "Negative" } else { "Positive" }; let even_or_odd = if n % 2 == 0 { "even" } else { "odd" }; format!("{sign} {even_or_odd}")}
pub fn describe_number(n: i32) -> String { if n == 0 { "Zero".to_string() } else { let sign = if n > 0 { "Positive" } else { "Negative" }; let parity = if n % 2 == 0 { "even" } else { "odd" }; format!("{} {}", sign, parity) }}
pub fn describe_number(n: i32) -> String { if n > 0 { if n % 2 == 0{ "Positive even".to_string() }else { "Positive odd".to_string() } }else if n < 0 { if n % 2 == 0{ "Negative even".to_string() }else { "Negative odd".to_string() } }else { "Zero".to_string() }}
pub fn describe_number(n: i32) -> String { if n == 0{ return "Zero".to_string(); } let mut s = "".to_string(); if n > 0{ s.push_str("Positive") } else{ s.push_str("Negative") } if n % 2 == 0{ s.push_str(" even") } else{ s.push_str(" odd") } return s;}
pub fn describe_number(n: i32) -> String { // TODO: Implement the function here let mut res = String::new(); if n == 0 { res.push_str("Zero"); return res; } if n > 0 { res.push_str("Positive"); } else { res.push_str("Negative"); } if n % 2 == 0 { res.push_str(" even"); } else { res.push_str(" odd"); } res}
pub fn describe_number(n: i32) -> String { // TODO: Implement the function here let mut res = String::new(); if n > 0 { res.push_str("Positive "); } else if n < 0 { res.push_str("Negative "); } else { res.push_str("Zero") } if n == 0 { return res; } if n % 2 == 0 { res.push_str("even"); } else { res.push_str("odd"); } res}
pub fn describe_number(n: i32) -> String { // TODO: Implement the function here match n { 0 => "Zero".to_string(), 0.. if n % 2 == 0 => "Positive even".to_string(), 0.. => "Positive odd".to_string(), ..=-1 if n % 2 == 0 => "Negative even".to_string(), ..=-1 => "Negative odd".to_string() }}
pub fn describe_number(n: i32) -> String { // TODO: Implement the function here let is_even = n % 2 == 0; let is_neg = n < 0; if n == 0 { return "Zero".to_string(); } if is_even && !is_neg { return "Positive even".to_string(); } else if !is_even && !is_neg { return "Positive odd".to_string(); } else if is_even && is_neg { return "Negative even".to_string(); } else { return "Negative odd".to_string(); }}
pub fn describe_number(n: i32) -> String { // TODO: Implement the function here match n{ num if num>0 && num %2==0 => return "Positive even".to_string(), num if num>0 && num %2!=0 => return "Positive odd".to_string(), num if num<0 && num %2==0 => return "Negative even".to_string(), num if num<0 && num %2!=0 => return "Negative odd".to_string(), 0 => return "Zero".to_string(), _ => return "Not valid".to_string(), };}
pub fn describe_number(n: i32) -> String { // TODO: Implement the function here match n { 0 => "Zero".to_string(), a if a > 0 => { if a % 2 == 0 { "Positive even".to_string() } else { "Positive odd".to_string() } }, _ => { if n % 2 == 0 { "Negative even".to_string() } else { "Negative odd".to_string() } } }}
pub fn describe_number(n: i32) -> String { // TODO: Implement the function here if n == 0 { return String::from("Zero"); } let is_positive: bool = n > 0; let is_even: bool = n % 2 == 0; format!("{} {}", if is_positive {"Positive"} else { "Negative" }, if is_even { "even" } else { "odd" })}
pub fn describe_number(n: i32) -> String { // TODO: Implement the function here match n { 0 => "Zero".to_string(), a if a > 0 => { if a % 2 == 0 {"Positive even".to_string() } else {"Positive odd".to_string() } }, _ => {if n % 2 == 0 { "Negative even".to_string()} else { "Negative odd".to_string()} } }}
pub fn describe_number(n: i32) -> String { if n == 0 { return "Zero".to_string() } let sgn = if n > 0 { "Positive" } else { "Negative" }; let par = if n % 2 == 0 { "even" } else { "odd" }; format!("{sgn} {par}")}
pub fn is_even(n: i32) -> bool { if n % 2 == 0{ return true } false}pub fn describe_number(n: i32) -> String { match n { 0 => "Zero".to_string(), 1.. => if is_even(n) {return "Positive even".to_string()} else {return "Positive odd".to_string()}, _ => if is_even(n) {return "Negative even".to_string()} else {return "Negative odd".to_string()}, }}
pub fn describe_number(n: i32) -> String { if n == 0 {return "Zero".to_string() } let sgn = if n>0 {"Positive"} else {"Negative"}; let par = if n%2==0 {"even"} else {"odd"}; format!("{sgn} {par}")}
pub fn describe_number(n: i32) -> String { // TODO: Implement the function here if n == 0 { return "Zero".into() } let mut result = String::new(); if n < 0 { result.push_str("Negative ") } else { result.push_str("Positive ") } if n % 2 == 0 { result.push_str("even") } else { result.push_str("odd") } result.into()}
pub fn describe_number(n: i32) -> String { // TODO: Implement the function here if n == 0 { "Zero".to_string() } else { let mut to_return = String::new(); if n > 0 { to_return += "Positive "; } else { to_return += "Negative "; } if n%2==0 { to_return += "even" } else { to_return += "odd" } to_return }}
pub fn describe_number(n: i32) -> String { // TODO: Implement the function here if n == 0 { return "Zero".to_string() } if n%2==0 { if n<0 { return "Negative even".to_string() } return "Positive even".to_string() } else { if n<0 { return "Negative odd".to_string() } return "Positive odd".to_string() }}
pub fn describe_number(n: i32) -> String { if n%2==0 && n >0{ return String::from("Positive even"); } if n%2==0 && n <0{ return String::from("Negative even"); } if n%2!=0 && n >0{ return String::from("Positive odd"); } if n%2!=0 && n <0{ return String::from("Negative odd"); } String::from("Zero")}
pub fn describe_number(n: i32) -> String { match (n % 2 == 0, n.signum()) { (true, 1) => "Positive even".to_string(), (false, 1) => "Positive odd".to_string(), (true, -1) => "Negative even".to_string(), (false, -1) => "Negative odd".to_string(), _ => "Zero".to_owned(), }}
pub fn describe_number(n: i32) -> String { if n == 0 { String::from("Zero") } else { let sign = if n > 0 { "Positive" } else { "Negative" }; let parity = if n % 2 == 0 { "even" } else { "odd" }; format!("{} {}", sign, parity) }}
pub fn describe_number(n: i32) -> String { if n == 0 { return "Zero".to_string(); } let is_positive = if n > 0 { "Positive" } else { "Negative" }; let is_even = if n % 2 == 0 { "even" } else { "odd" }; format!("{} {}", is_positive, is_even)}
pub fn describe_number(n: i32) -> String { let is_zero = n == 0; let is_even = n % 2 == 0; let is_positive_or_negative = n > 0; if is_zero { "Zero".to_string() } else { format!( "{} {}", if is_positive_or_negative { "Positive" } else { "Negative" }, if is_even { "even" } else { "odd" } ) }}
pub fn describe_number(n: i32) -> String { // TODO: Implement the function here if n == 0 { return String::from("Zero"); } return sign(n)+" "+&is_even(n);}pub fn sign(n : i32 )-> String { if n > 0 { return String::from("Positive"); } else { return String::from("Negative"); }}pub fn is_even(n: i32)->String{ if n%2 == 0 { return String::from("even"); } else { return String::from("odd"); }}
pub fn describe_number(n: i32) -> String { if n == 0 { "Zero".to_string() } else{ match (n>0, n%2){ (true, 0) => "Positive even".to_string(), (true, _) => "Positive odd".to_string(), (false, 0) => "Negative even".to_string(), (false, _) => "Negative odd".to_string(), } }}
pub fn describe_number(n: i32) -> String { if n == 0 { return "Zero".to_string(); } let even = if n % 2 == 0 { "even" } else { "odd" }; let pos = if n > 0 { "Positive" } else { "Negative" }; format!("{pos} {even}")}
pub fn describe_number(n: i32) -> String { match n { n if n>0 && n % 2 == 0 => "Positive even".to_string(), n if n<0 && n % 2 == 0 => "Negative even".to_string(), n if n>0 && n % 2 != 0 => "Positive odd".to_string(), n if n<0 && n % 2 != 0 => "Negative odd".to_string(), _ => "Zero".to_string(), }}
pub fn describe_number(n: i32) -> String { if n == 0 { return "Zero".into(); } if n > 0 { if n % 2 == 0 { return "Positive even".into(); } else { return "Positive odd".into(); } } else { if n % 2 == 0 { return "Negative even".into(); } else { return "Negative odd".into(); } }}
pub fn describe_number(n: i32) -> String { // TODO: Implement the function here if n == 0 { return "Zero".to_string(); } let is_positive = n > 0; let is_even = n % 2 == 0; match (is_positive, is_even) { (true, true) => "Positive even".to_string(), (true, false) => "Positive odd".to_string(), (false, true) => "Negative even".to_string(), (false, false) => "Negative odd".to_string(), }}
pub fn describe_number(n: i32) -> String { if n == 0 { return "Zero".to_string(); } format!("{} {}", if n > 0 {"Positive"} else {"Negative"}, if n % 2 == 0 {"even"} else {"odd"}, )}
pub fn describe_number(n: i32) -> String { // TODO: Implement the function here if n > 0 { if n % 2 == 0 { "Positive even".to_string() } else { "Positive odd".to_string() } } else if n < 0 { if n % 2 == 0 { "Negative even".to_string() } else { "Negative odd".to_string() } } else { "Zero".to_string() }}
pub fn describe_number(n: i32) -> String { // TODO: Implement the function here if n > 0 { if n % 2 == 0 { "Positive even".to_string() } else { "Positive odd".to_string() } } else if n < 0 { if n % 2 == 0 { "Negative even".to_string() } else { "Negative odd".to_string() } } else { "Zero".to_string() }}
pub fn describe_number(n: i32) -> String { match n { 0 => "Zero".into(), _ => { let sign = if n < 0 { "Negative" } else { "Positive" }; let parity = if n % 2 == 0 { "even" } else { "odd" }; format!("{sign} {parity}") } }}
pub fn describe_number(n: i32) -> String { // TODO: Implement the function here if n == 0 { String::from("Zero") } else { let sign = if n > 0 { "Positive" } else { "Negative" }; let parity = if n % 2 == 0 { "even" } else { "odd" }; format!("{sign} {parity}").to_string() }}
pub fn describe_number(n: i32) -> String { if n == 0 { return String::from("Zero"); } let mut ans = String::new(); if n > 0 { ans.push_str("Positive"); } else { ans.push_str("Negative"); } if n%2 == 0 { ans.push_str(" even"); } else { ans.push_str(" odd"); } ans}
pub fn describe_number(n: i32) -> String { let mut s = String::new(); if n == 0 { s.push_str("Zero"); } else { if n > 0 { s.push_str("Positive "); } else { s.push_str("Negative "); } if n % 2 == 0 { s.push_str("even"); } else { s.push_str("odd"); } } s}
pub fn describe_number(n: i32) -> String { if n == 0 { "Zero".to_string() } else { let mut result = String::new(); if n > 0 { result.push_str("Positive "); } else { result.push_str("Negative "); } if n % 2 == 0 { result.push_str("even"); } else { result.push_str("odd"); } result }}
pub fn describe_number(n: i32) -> String { // TODO: Implement the function here match n { 0 => String::from("Zero"), number if number > 0 => if n % 2 == 0 { String::from("Positive even") } else { String::from("Positive odd") }, _ => if n % 2 == 0 { String::from("Negative even") } else { String::from("Negative odd") }, }}
pub fn describe_number(n: i32) -> String { if n == 0 { "Zero".to_string() } else { let sign = if n < 0 {"Negative"} else {"Positive"}; let other = if n % 2 == 0 {"even"} else {"odd"}; format!("{sign} {other}") }}
use std::cmp::Ordering;pub fn describe_number(n: i32) -> String { match (n % 2 == 0, n.cmp(&0)) { (true, Ordering::Greater) => "Positive even".to_string(), (false, Ordering::Greater) => "Positive odd".to_string(), (true, Ordering::Less) => "Negative even".to_string(), (false, Ordering::Less) => "Negative odd".to_string(), (_, Ordering::Equal) => "Zero".to_string(), }}
pub fn describe_number(n: i32) -> String { // TODO: Implement the function here let mut res = "".to_string(); if n == 0 { return "Zero".to_string(); } else { if n > 0 { res.push_str("Positive "); } else { res.push_str("Negative "); } } if n % 2 == 0 { res.push_str("even"); return res; } res.push_str("odd"); res}
pub fn describe_number(n: i32) -> String { if n == 0 { return "Zero".to_string(); } let is_even: bool = n % 2 == 0; let is_positive: bool = n > 0; let mut text = String::new(); if is_positive { text.push_str("Positive "); } else { text.push_str("Negative ") } if is_even { text.push_str("even"); } else { text.push_str("odd") } text}
pub fn describe_number(n: i32) -> String { // TODO: Implement the function here match (n, n % 2) { (0, _ ) => "Zero".to_string(), (x, 0) if x > 0 => "Positive even".to_string(), (x, 1) if x > 0 => "Positive odd".to_string(), (x, 0) if x < 0 => "Negative even".to_string(), (x, 1) if x < 0 => "Negative odd".to_string(), _ => "Negative odd".to_string(), }}
pub fn describe_number(n: i32) -> String { // TODO: Implement the function here if n == 0 { return String::from("Zero");} let positive : bool = if n < 0 {false} else {true}; let even : bool = if n % 2 == 0 {true} else {false}; if positive && even { "Positive even".to_owned() } else if positive && !even { "Positive odd".to_owned() } else if !positive && even { "Negative even".to_owned() } else { "Negative odd".to_owned() }}
pub fn describe_number(n: i32) -> String { match n { 0 => String::from("Zero"), n if n > 0 && n % 2 == 0 => String::from("Positive even"), n if n > 0 && n % 2 != 0 => String::from("Positive odd"), n if n < 0 && n % 2 == 0 => String::from("Negative even"), n if n < 0 && n % 2 != 0 => String::from("Negative odd"), _ => panic!("unknown case") }}
pub fn describe_number(number: i32) -> String { if number != 0 && number % 2 ==0 { if number > 0 { "Positive even".to_string() }else{ "Negative even".to_string() } }else if number != 0 && number % 2 != 0 { if number > 0 { "Positive odd".to_string() }else{ "Negative odd".to_string() } }else{ "Zero".to_string() }}
pub fn describe_number(n: i32) -> String { const DESCRIPTION: [&str; 5] = ["Zero", "Negative odd", "Negative even", "Positive odd", "Positive even"]; let idx = (2 * (n > 0) as usize + ((n % 2) == 0) as usize + 1) * (n != 0) as usize; return DESCRIPTION[idx].to_string()}