Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
The rgb operate is incomplete. Full it in order that passing in RGB decimal values will lead to a hexadecimal illustration being returned. Legitimate decimal values for RGB are 0 – 255. Any values that fall out of that vary have to be rounded to the closest legitimate worth.
Word: Your reply ought to all the time be 6 characters lengthy, the shorthand with 3 won’t work right here.
The next are examples of anticipated output values:
problem.rgb(255, 255, 255) -- returns FFFFFF
problem.rgb(255, 255, 300) -- returns FFFFFF
problem.rgb(0, 0, 0) -- returns 000000
problem.rgb(148, 0, 211) -- returns 9400D3
Possibility 1:
fn rgb(r: i32, g: i32, b: i32) -> String {
format!(
"{:02X}{:02X}{:02X}",
r.clamp(0, 255),
g.clamp(0, 255),
b.clamp(0, 255)
)
}
Possibility 2:
fn rgb(r: i32, g: i32, b: i32) -> String {
format!("{0:02X}{1:02X}{2:02X}", r.min(255).max(0), g.min(255).max(0), b.min(255).max(0))
}
Possibility 3:
fn rgb(r: i32, g: i32, b: i32) -> String {
let r = r.min(255).max(0);
let g = g.min(255).max(0);
let b = b.min(255).max(0);
format!("{:02X}{:02X}{:02X}", r, g, b)
}
extern crate rand;
use self::rand::Rng;
fn clear up(r: i32, g: i32, b: i32) -> String {
let clamp = |x: i32| -> i32 { if x < 0 { 0 } else { if x > 255 { 255 } else { x } } };
format!("{:02X}{:02X}{:02X}", clamp(r), clamp(g), clamp(b))
}
macro_rules! examine {
( $obtained : expr, $anticipated : expr ) => {
if $obtained != $anticipated { panic!("Acquired: {}nExpected: {}n", $obtained, $anticipated); }
};
}
#[cfg(test)]
mod checks {
use self::tremendous::*;
#[test]
fn basic_tests() {
examine!(rgb(0, 0, 0), "000000");
examine!(rgb(1, 2, 3), "010203");
examine!(rgb(255, 255, 255), "FFFFFF");
examine!(rgb(254, 253, 252), "FEFDFC");
examine!(rgb(-20, 275, 125), "00FF7D");
}
#[test]
fn random_tests() {
for _ in 0..50 {
let r = rand::thread_rng().gen_range(-32..288);
let g = rand::thread_rng().gen_range(-32..288);
let b = rand::thread_rng().gen_range(-32..288);
examine!(rgb(r, g, b), clear up(r, g, b));
}
}
}