Skip to main content

hanoi

Function hanoi 

Source
pub fn hanoi(n: u32, from: char, to: char, aux: char) -> Vec<(char, char)>
Expand description

Hanoy minoralari: n ta diskni from ustunidan to ustuniga ko’chirish qadamlari.

Qoidalar: bir vaqtda bitta disk; katta disk kichigining ustiga qo’yilmaydi.

Rekursiv g’oya (3 qadam):

  1. Yuqoridagi n-1 diskni yordamchi ustunga ko’chir;
  2. Eng katta diskni maqsad ustunga qo’y;
  3. n-1 diskni yordamchidan maqsadga ko’chir.
  • Qadamlar soni: 2ⁿ − 1 — bundan kamiga iloji yo’q (isbotlangan).

§Misol

use rust_algorithms::other::recursion::hanoi;

let qadamlar = hanoi(3, 'A', 'C', 'B');
assert_eq!(qadamlar.len(), 7); // 2³ − 1
assert_eq!(qadamlar[0], ('A', 'C'));