Open4

RustでAtCoderを解くにあたり詰まった所集

Katsumi TakanoKatsumi Takano

入力で受け取ったサイズの配列を作りたい

proconio経由の入力は定数ではないので、その値を使用した配列を作ろうとすると怒られる。

input! {
    m: usize,
}

let vec = [0; m]; // これは駄目

空のベクタを作ってから、resize関数を呼んであげると、それっぽく回避できる。

input! {
    m: usize,
}

let array = Vec::new();

array.resize(m, 0) // 第2引数は初期値

追記
何か勘違いしていたが、普通にvec!マクロを使えば良かった。

input! {
    m: usize,
}

let vec = vec![0; m];
Katsumi TakanoKatsumi Takano

初期値が定まっているHashMapを作る

use std::collections::HashMap;
use std::iter::FromIterator;

let map:HashMap<&str, i32> = HashMap::from_iter(vec![
    ("Sunny", 1),
    ("Cloudy", 2),
    ("Rainy", 3)
]);
Katsumi TakanoKatsumi Takano

最大公約数、最小公倍数を求める

numクレートの読み込みが必要

use num::integer;

// gcd 最大公約数
assert_eq!(integer::gcd(12, 18), 6);

// lcm 最小公倍数
assert_eq!(integer::lcm(12, 18), 36);