"Mathe-Rätsel, die das Programmhirn mehr trainieren" _Q02 (Code: Ruby) -> Rust

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.

Q02 Briefmarkenrallye auf der Yamate-Linie

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

"Mathe-Rätsel, die das Programmhirn mehr trainieren" _Q39 (Code: Ruby) -> Rust
"Mathe-Rätsel, die das Programmhirn mehr trainieren" _Q02 (Code: Ruby) -> Rust
"Mathe-Rätsel, die das Programmhirn mehr trainieren" _Q17 (Code: Ruby) -> Rust
"Mathe-Rätsel, die das Programmhirn mehr trainieren" _Q01 (Code: Ruby) -> Rust
"Mathe-Rätsel, die das Programmhirn mehr trainieren" _pp.018-020 (Code: Ruby) -> Rust
"Mathe-Rätsel, die das Programmhirn mehr trainieren" _Q61 (Code: Ruby) -> Rust (& SQL)
"Mathe-Rätsel, die das Programmhirn mehr trainieren" _Q41 (Code: Ruby) -> Rust
"Mathe-Rätsel, die das Programmhirn mehr trainieren" _Q18 (Code: Ruby) -> Rust
"Mathe-Puzzle, um das Programmhirn mehr zu trainieren" _Q40 (Code: Ruby) -> Rost unvollendet
Ein Versuch, "Mathe-Rätsel, die das Rust-Gehirn mehr trainieren".
Die Sprachen, die Rust beeinflusst haben