1
1
mirror of https://github.com/theoludwig/programming-challenges.git synced 2024-07-18 02:20:12 +02:00

feat(solutions): add find-closest-number/rust/function

This commit is contained in:
Divlo 2023-01-04 18:45:30 +01:00
parent 973a119487
commit 70564f174a
No known key found for this signature in database
GPG Key ID: 8F9478F220CE65E9
4 changed files with 62 additions and 0 deletions

View 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"

View File

@ -0,0 +1,6 @@
[package]
name = "rust_application"
version = "1.0.0"
edition = "2021"
[dependencies]

View File

@ -0,0 +1,3 @@
# find-closest-number/rust/function
Created by [@Divlo](https://github.com/Divlo) on 4 January 2023.

View File

@ -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));
}