Je pensais que la réécriture "puzzles mathématiques qui entraînent davantage le cerveau du programmeur" avec Rust pourrait être juste pour éviter le flou.
Bien que ce ne soit pas le point principal, la partie subtile du réglage de ce quiz est que "la victoire ou la défaite de Janken" n'a rien à voir avec "la victoire ou la défaite de la majorité". "Si c'est Choki 2 et Par 2, Choki gagne," dit-il, confus où ce n'était pas la ligne principale ...
Ruby
q01_2.rb
N = 100
cnt = 0
0.upto(N) do |left|
left.upto(N) do |right|
all = [left, right - left, N - right]
cnt += 1 if all.count(all.max) == 1
end
end
puts cnt
Rust
main.rs
fn main() {
let mut q01 = Q01{ num_of_people:100,};
let answer = q01.solve();
println!("{}", answer);
}
struct Q01 {
num_of_people:i64,
}
impl Q01 {
pub fn solve(&mut self) -> i64 {
let mut count = 0;
for left in 0..=self.num_of_people {
for right in left..=self.num_of_people {
let all = vec![left, right - left, self.num_of_people - right];
let max_value = all.iter().max().unwrap();
let c = all.iter().filter(|&v| *v == *max_value).count();
if c == 1 {
count += 1;
}
}
}
return count;
}
}
C'est comme ça? La valeur maximale et la recherche de Vec
doivent être passées une fois par ʻiter ()`.