Edizione XV – Problema 3

Raddoppi

Si scriva un programma per macchina di Turing che, ricevuto in ingresso un numero intero, lasci sul nastro il doppio del numero indicato.

Nastro iniziale Nastro finale
3162
12
16513302
918

Diagramma di stato

  • Si porta sulla prima cifra a destra
  • Lo stato 2 raddoppia senza riporto
  • Lo stato R raddoppia con riporto, se le cifre finiscono scrive 1

Tabella delle transizioni di stato

0123456789
00,0,>0,1,>0,2,>0,3,>0,4,>0,5,>0,6,>0,7,>0,8,>0,9,>2,-,<
22,0,<2,2,<2,4,<2,6,<2,8,<R,0,<R,2,<R,4,<R,6,<R,8,<H,-,>
R2,1,<2,3,<2,5,<2,7,<2,9,<R,1,<R,3,<R,5,<R,7,<R,9,<H,1,-
H

Quintuple

(0, [0..9], 0, [0..9], >)
(0, -, 2, -, <)
(2, 01234, 2, 02468, <)
(2, 56789, R, 02468, <)
(2, - , H, -, >)
(R, 01234, 2, 13579, <)
(R, 56789, R, 13579, <)
(R, - , H, 1, -)
  1. Va destra
  2. Si posiziona sulla cifra a destra
  3. Il doppio, senza riporto
  4. Il doppio, c’è un riporto
  5. Finito, senza riporto
  6. Il doppio, con riporto, senza riporto
  7. Il doppio, con riporto, c’è riporto
  8. Finito, con riporto

Lascia un commento