Hanojski stolpi: Razlika med redakcijama

Izbrisana vsebina Dodana vsebina
m Redakcija 4622314 uporabnika SportiBot (pogovor) razveljavljena
Botopol (pogovor | prispevki)
m posodobitev kode
Vrstica 39:
 
Rešitev hanojskih stolpov rekurzivno v jeziku Java:
<sourcesyntaxhighlight lang="java">
// Hanoi.java
public class Hanoi {
Vrstica 57:
}
}
</syntaxhighlight>
</source>
 
==== Rešitev s poljubnega začetnega položaja ====
Vrstica 63:
V C:
 
<sourcesyntaxhighlight lang='C'>
int conf[HEIGHT]; /* Element conf[d] da trenutni položaj ploščice d. */
 
Vrstica 82:
}
}
</syntaxhighlight>
</source>
 
V [[programski jezik paskal|paskalu]]:
<sourcesyntaxhighlight lang="pascal">
procedure Hanoi(n: integer; from, to, by: char);
Begin
Vrstica 96:
end;
End;
</syntaxhighlight>
</source>
 
=== Rešitev z iteracijo ===
Vrstica 103:
 
Rešitev hanojskih stolpov iterativno v jeziku Java:
<sourcesyntaxhighlight lang="java">
// Hanoi.java
import java.util.*;
Vrstica 155:
}
}
</syntaxhighlight>
</source>
 
=== 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.
<sourcesyntaxhighlight lang='C'>
int main(void) {
int m, n, p, t;
Vrstica 268:
}
}
</syntaxhighlight>
</source>
 
=== Rešitev z Grayjevo kodo ===