Ich dachte, dass das Umschreiben von "Mathe-Rätseln, die das Gehirn des Programmierers mehr trainieren" mit Rust genau richtig sein könnte, um Unschärfe zu verhindern.
Obwohl dies nicht der Hauptpunkt ist, ist der subtile Punkt bei der Einstellung dieses Quiz, dass "Janken gewinnt und verliert" nichts mit "Mehrheitsgewinnen und -verlusten" zu tun hat. "Wenn es Choki 2 und Par 2 sind, gewinnt Choki", sagte er verwirrt, wo es nicht die Hauptlinie war ...
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;
}
}
Ist es so Der Maximalwert und die Suche nach "Vec" müssen einmal durch "iter ()" geleitet werden.
Recommended Posts