Skip to content

Instantly share code, notes, and snippets.

@U007D
Last active August 5, 2017 00:21
Show Gist options
  • Select an option

  • Save U007D/54fa4e527061d58025f95164d16d932c to your computer and use it in GitHub Desktop.

Select an option

Save U007D/54fa4e527061d58025f95164d16d932c to your computer and use it in GitHub Desktop.
HackerRank Rust Quickstart Template
// Enter your code here
use std::str::FromStr;
const ERR_READ: &'static str = "Read Error";
const ERR_INPUT_INVALID: &'static str = "Invalid Input Error";
const ERR_MATRIX_EMPTY: &'static str = "Unexpected Empty Matrix Error";
fn readln() -> String {
let mut buffer = String::new();
std::io::stdin().read_line(&mut buffer).ok().expect(ERR_READ);
buffer.trim().into()
}
#[allow(dead_code)]
fn get_val<T: FromStr>() -> T {
readln().parse::<T>().ok().expect(ERR_INPUT_INVALID)
}
#[allow(dead_code)]
fn get_vals_as_vec<T: FromStr>() -> Vec<T> {
readln().split_whitespace()
.map(|n| n.parse::<T>().ok().expect(ERR_INPUT_INVALID))
.collect::<Vec<_>>()
}
#[allow(dead_code)]
fn get_vals_as_pair<T: FromStr + Clone>() -> Result<(T, T), String> {
let vals = get_vals_as_vec::<T>();
match vals.len() {
2 => Ok((vals[0].clone(), vals[1].clone())),
_ => Err(ERR_INPUT_INVALID.to_string()),
}
}
#[allow(dead_code)]
fn get_vals_as_triplet<T: FromStr + Clone>() -> Result<(T, T, T), String> {
let vals = get_vals_as_vec::<T>();
match vals.len() {
3 => Ok((vals[0].clone(), vals[1].clone(), vals[2].clone())),
_ => Err(ERR_INPUT_INVALID.to_string()),
}
}
#[allow(dead_code)]
fn get_vals_as_matrix<T: FromStr + Clone>(r: usize, c: usize) -> Result<Vec<Vec<T>>, String> {
let mut matrix = Vec::<Vec<T>>::with_capacity(r);
for _ in 0..r {
matrix.push(get_vals_as_vec::<T>());
match matrix.last() {
Some(row) => match row.len() != c {
true => return Err(ERR_INPUT_INVALID.to_string()),
false => (),
},
None => return Err(ERR_MATRIX_EMPTY.to_string()),
}
}
Ok(matrix)
}
fn main() {
#[allow(unused_variables)]
let n = get_val::<>(readln());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment