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.
Zum Zeitpunkt der Veröffentlichung dieses Buches (2018) gibt es 29 Stationen. Im Jahr 2020 hat sich die Anzahl der Stationen auf 30 Stationen erhöht.
Ruby
q02.rb
N = 29
a, b = 1, 17
n = (a - b).abs
puts (1 << (n - 1)) + (1 << (N - n - 1)) - 1
Rust
main.rs
fn main() {
println!("{}", q02(29, 1, 17));
}
pub fn q02(num_of_stations: i64, entraining_point: i64, exit_station: i64) -> i64 {
let passing_stations = (entraining_point - exit_station).abs();
return (1 << (passing_stations - 1)) + (1 << (num_of_stations - passing_stations - 1)) - 1;
}
Sie können Bits problemlos verschieben.
Als Test lautete die Antwort an 29 Stationen, 36863, aber an 30 Stationen ("q02 (30,1,17)") 40959.
Recommended Posts