Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Květomír 15. 11. 2012, 10:10:22
-
Zdravím,
mám takový problém, nepodařilo se mi za mák přijít na kód pro Turingův přístroj, který by zrcadlil číslo, či třeba i něco jiného, ale primárně myšleno na čísla (0,1). Povedlo se mi pouze prohodit nuly a jedničky, ale mám problém s číslem například 11100 či složitější, neboť to dokáži převést pouze na 00011, ale nikoliv na 00111. Toto číslo je pouze příklad, dokáži to napsat přímo na konkrétní číslo, ale potřebuji, aby to zvládlo libovolné číslo. Tedy ten stejný kód by převedl 00011 na 11000 i 11110 na 01111 (příklad).
Předem děkuji moc všem, kteří mi s tím pomůžou. :)
PS: Psát jsem to zkoušel v online simulátoru : http://morphett.info/turing/turing.html (http://morphett.info/turing/turing.html)
-
Tohle dělá zásobníkový automat. Ten stačí převést na turingův stroj a máš hotovo.
-
Jsem liny to vysvetlovat, takze:
0 _ z l 1
0 * * r *
1 _ * r 2
1 * * l *
2 z _ * halt
2 0 _ r 20
2 1 _ r 21
20 0 _ l 200
200 _ 0 r 209
20 1 _ l 201
201 _ 1 r 209
20 z 0 l 202
202 _ z l 1
209 * * r 20
21 0 _ l 210
210 _ 0 r 219
21 1 _ l 211
211 _ 1 r 219
21 z 1 l 212
212 _ z l 1
219 * * r 21
-
Děkuji mnohokrát Milane, to je přesně ono ;)
-
jiná verze, ale ta Milanova je propracovanější
0 0 0 r 0
0 1 1 r 0
0 _ u * 1
1 1 1 l 1
1 0 0 l 1
1 u u l 2
1 x x l 1
2 x x l 2
2 0 x r 4
2 1 x r 3
2 _ _ r 5
3 1 1 r 3
3 0 0 r 3
3 x x r 3
3 u u r 3
3 _ 1 l 1
4 1 1 r 4
4 0 0 r 4
4 x x r 4
4 u u r 4
4 _ 0 l 1
5 x _ r 5
5 u _ r halt