mirror of
https://github.com/theoludwig/programming-challenges.git
synced 2024-12-08 00:45:29 +01:00
feat(solutions): add find-closest-number/rust/function
This commit is contained in:
parent
973a119487
commit
70564f174a
7
challenges/find-closest-number/solutions/rust/function/Cargo.lock
generated
Normal file
7
challenges/find-closest-number/solutions/rust/function/Cargo.lock
generated
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
# This file is automatically @generated by Cargo.
|
||||||
|
# It is not intended for manual editing.
|
||||||
|
version = 3
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rust_application"
|
||||||
|
version = "1.0.0"
|
@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "rust_application"
|
||||||
|
version = "1.0.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
@ -0,0 +1,3 @@
|
|||||||
|
# find-closest-number/rust/function
|
||||||
|
|
||||||
|
Created by [@Divlo](https://github.com/Divlo) on 4 January 2023.
|
@ -0,0 +1,46 @@
|
|||||||
|
use std::io;
|
||||||
|
|
||||||
|
/// From list of `integers`, get number closest to a given `value`.
|
||||||
|
pub fn find_closest_number(integers: &[i32], value: i32) -> i32 {
|
||||||
|
let mut current = integers[0];
|
||||||
|
for integer in integers {
|
||||||
|
if (integer - value).abs() < (current - value).abs() {
|
||||||
|
current = *integer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return current.clone();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let mut given_number = String::new();
|
||||||
|
io::stdin()
|
||||||
|
.read_line(&mut given_number)
|
||||||
|
.expect("Failed to read `stdin` line.");
|
||||||
|
let given_number: i32 = given_number
|
||||||
|
.trim()
|
||||||
|
.parse()
|
||||||
|
.expect("Failed to convert `given_number` as an `i32`.");
|
||||||
|
|
||||||
|
let mut length = String::new();
|
||||||
|
io::stdin()
|
||||||
|
.read_line(&mut length)
|
||||||
|
.expect("Failed to read `stdin` line.");
|
||||||
|
let length: usize = length
|
||||||
|
.trim()
|
||||||
|
.parse()
|
||||||
|
.expect("Failed to convert `length` as an `usize`.");
|
||||||
|
|
||||||
|
let mut integers: Vec<i32> = Vec::new();
|
||||||
|
for _ in 0..length {
|
||||||
|
let mut integer = String::new();
|
||||||
|
io::stdin()
|
||||||
|
.read_line(&mut integer)
|
||||||
|
.expect("Failed to read `stdin` line.");
|
||||||
|
let integer: i32 = integer
|
||||||
|
.trim()
|
||||||
|
.parse()
|
||||||
|
.expect("Failed to convert `integer` as an `i32`.");
|
||||||
|
integers.push(integer);
|
||||||
|
}
|
||||||
|
println!("{}", find_closest_number(&integers, given_number));
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user