CodinGameでRustを使って過去に3問パズルを解いてシルバーのACHIEVEMENTをもっていました
(まったく覚えていない)
これをゴールドにしてみることに あと4問解く必要があります
https://www.codingame.com/training/easy/smooth
https://www.codingame.com/training/easy/auto-pickup
https://www.codingame.com/training/easy/create-the-longest-sequence-of-1s
https://www.codingame.com/training/easy/1d-bush-fire
夜中に謎のスイッチが入って朝まで
プログラムというより、これどうやって解くの?という問題が多かったです
(パズルだから)
smoothの説明文がサッパリ理解できなかったので
https://www.codingame.com/contribute/community
から問題を探して、Bashのソース(まったく理解できなかった)を実行して問題を推察して解いたりしてます
問題を解いた後 追加したチートシートがこちら
なんとかここまで
恐る恐るplaygroundをshearにあげてみました
https://github.com/rust-lang/rust/issues/72847
質問コーナーみたいな所にあげたようで、あせってclose
(しかも、少し前のソース)
ということでテキストのソースです
(あ?最後セミコロン忘れてるので追加追加 ^ ^ ; )
fn main() {
println!("Hello, world!");
//文字列の分割
let action = "a12-b15";
let mut act = Vec::new();
act.push(action);
let te: Vec<&str> = act[0].split('-').collect();
let a0: String = te[0][..1].to_string();
let a1: &str = &te[1][..1];
let n0: i32 = te[0][1..].parse().unwrap();
let n1: i32 = te[1][1..].parse().unwrap();
println!("{} {} {} {} {}",act[0], a0, n0, a1, n1);
println!("{} {} {} {}",a0=="a", a1=="b", act.len(), act[0].len());
//割り算の余り
let x = 10;
println!("{} {} {}", x%2, x/5, x%4);
//2進数から10進数
let bit_string = "11110111";
let mut num = 0;
for i in 0..bit_string.len(){
num = num * 2;
if &bit_string[i..i+1]=="1"{ //&strとString型に注意
num = num + 1;
}
}
println!("{}->{}", bit_string, num);
//2,5だけで割り切れる数
for i in 2..21{
let mut num1 = i;
for div in vec![2, 5]{
while num1 % div == 0{
num1 = num1 / div;
}
}
if num1 == 1 { println!("{}",i) }
}
//文字列のループ
num = 0;
let seatch_char = '2';
for c in "101221112".chars() {
if c==seatch_char{ num = num + 1; }
}
println!("{}", num);
}