Edizione II – Problema 1

Programmare una Macchina di Turing che, dato un nastro iniziale contenente la rappresentazione decimale di un numero intero positivo k, termina la sua esecuzione lasciando sul nastro la sola sequenza SI se k è un numero pari, la sola sequenza NO altrimenti.

Esempi

Nastro inizialeNastro finale
1°148SI
2°2763NO

Diagramma di stato #1

  • Per ogni cifra pari letta rimane/va nello stato 0
  • Per ogni cifra dispari letta rimane/va nello stato D
  • Se finisce l’input in 0 scrive SI
  • Se finisce l’input in D scrive NO

Tabella delle transizioni di stato #1

0246813579–
00,-,>D,-,>SI,S,>
D0,-,>D,-,>NO,N,>
SIH,I,-
NOH,O,-

Quintuple #1

(0, 02468, 0, -, >)
(0, 13579, D, -, >)
(0, -, SI, S, >)
(SI, -, H, I, -)
(D, 02468, 0, -, >)
(D, 13579, D, -, >)
(D, -, NO, N, >)
(NO, -, H, O, -)
  1. Per ogni cifra pari rimane nello stato 0
  2. Per ogni cifra dispari passa allo stato D
  3. Se finisce scrive SI
  4. …
  5. Per ogni cifra pari passa allo stato 0
  6. Per ogni cifra dispari rimane nello stato D
  7. Se finisce scrive NO
  8. …

Diagramma di stato #2

  1. Raggiunge la prima cifra a destra
  2. Se è 0/2/4/6/8 cancella tutto a sinistra e scrive SI
  3. Se è 1/3/5/7/9 cancella tutto a sinistra e scrive NO

Quintuple #2

(0, 0..9, 0, 0..9, >)
(0, -, PD, -, <)
(PD, 02468, P, -, <)
(PD, 13579, D,  -, <)
(P, 0..9, P, -, <)
(D, 0..9, D, -, <)
(P, -, S, I, <)
(S, -, H, S, -)
(D, -, N, O, <)
(N, -, H, N, -)
  1. Per ogni cifra va a destra
  2. Il numero è finito
  3. Decide se Pari
  4. Decide se Dispari
  5. Va a sinistra per scrivere SI
  6. Va a sinistra per scrivere NO
  7. Scrive SI
  8. …
  9. Scrive NO
  10. …

Lascia un commento