Hanojski stolpi: Razlika med redakcijama

dodanih 90 zlogov ,  pred 4 meseci
m
posodobitev kode
m (Redakcija 4622314 uporabnika SportiBot (pogovor) razveljavljena)
m (posodobitev kode)
 
 
Rešitev hanojskih stolpov rekurzivno v jeziku Java:
<sourcesyntaxhighlight lang="java">
// Hanoi.java
public class Hanoi {
}
}
</syntaxhighlight>
</source>
 
==== Rešitev s poljubnega začetnega položaja ====
V C:
 
<sourcesyntaxhighlight lang='C'>
int conf[HEIGHT]; /* Element conf[d] da trenutni položaj ploščice d. */
 
}
}
</syntaxhighlight>
</source>
 
V [[programski jezik paskal|paskalu]]:
<sourcesyntaxhighlight lang="pascal">
procedure Hanoi(n: integer; from, to, by: char);
Begin
end;
End;
</syntaxhighlight>
</source>
 
=== Rešitev z iteracijo ===
 
Rešitev hanojskih stolpov iterativno v jeziku Java:
<sourcesyntaxhighlight lang="java">
// Hanoi.java
import java.util.*;
}
}
</syntaxhighlight>
</source>
 
=== Nerekurzivna rešitev ===
 
''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;
}
}
</syntaxhighlight>
</source>
 
=== Rešitev z Grayjevo kodo ===
4.380

urejanj