Hanojski stolpi: Razlika med redakcijama
Izbrisana vsebina Dodana vsebina
m posodobitev kode |
|||
Vrstica 39:
Rešitev hanojskih stolpov rekurzivno v jeziku Java:
<
// Hanoi.java
public class Hanoi {
Vrstica 57:
}
}
</syntaxhighlight>
==== Rešitev s poljubnega začetnega položaja ====
Vrstica 63:
V C:
<
int conf[HEIGHT]; /* Element conf[d] da trenutni položaj ploščice d. */
Vrstica 82:
}
}
</syntaxhighlight>
V [[programski jezik paskal|paskalu]]:
<
procedure Hanoi(n: integer; from, to, by: char);
Begin
Vrstica 96:
end;
End;
</syntaxhighlight>
=== Rešitev z iteracijo ===
Vrstica 103:
Rešitev hanojskih stolpov iterativno v jeziku Java:
<
// Hanoi.java
import java.util.*;
Vrstica 155:
}
}
</syntaxhighlight>
=== Nerekurzivna rešitev ===
Vrstica 248:
''m''-to potezo je moč lepo najti iz dvojiške predstavitve ''m'' z [[bitna operacija|bitno operacijo]]. S skladnjo v C je ''m''-ta poteza s stolpa <code>(m&m-1)%3</code> na stolp <code>((m|m-1)+1)%3</code>, kjer se ploščice premikajo s stolpa 0 (f) na 1 (t) ali 2 (r), glede na to ali je njihovo število sodo ali liho. Številka ploščice, ki jo je treba premakniti, se lahko določi z vrednostjo kolikokrat je zaporedna številka poteze m deljiva z 2, oziroma s številom ničelnih bitov na desni, kjer je prva poteza 1, ploščice pa so označene zaporedoma naraščajoče 0, 1, 2, itd.
<
int main(void) {
int m, n, p, t;
Vrstica 268:
}
}
</syntaxhighlight>
=== Rešitev z Grayjevo kodo ===
|