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.
Au moment de la publication de ce livre (2018), il y a 29 stations. En 2020, le nombre de stations est passé à 30 stations.
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;
}
Vous pouvez décaler les bits tels quels sans aucun problème.
À titre d'essai, à 29 stations, 36863, mais à 30 stations (`q02 (30,1,17) '), la réponse était 40959.