In occasione del compleanno di Alan Turing, Google ha pubblicato uno scarabocchio che mostra una macchina. Che tipo di macchina è il doodle? Può esprimere una lingua completa di Turing?
Ci sono ovvie differenze con la classica macchina da turismo: un nastro finito, i vincoli su come collegare lo stato, ...
Il doodle è ancora disponibile qui
(Il display in alto a destra mostra l'output previsto.)
Il nastro nel mezzo è diviso in quadrati che possono contenere uno spazio vuoto, uno zero o uno. La testa è posizionata sopra uno dei quadrati e viene utilizzata per leggere e scrivere.
Sotto il nastro puoi vedere una freccia verde su cui puoi fare clic per avviare la macchina. Ci sono due linee di cerchi accanto, alcune delle quali sono collegate. Li chiamerò "stati".
Dopo l'avvio della macchina, il primo stato a destra del pulsante verde si illumina, quindi il successivo a destra e così via ... Ogni stato contiene uno dei seguenti comandi:
- vuoto = non fare nulla (passa allo stato successivo)
- 1 = scriverne uno sul nastro nella posizione corrente della testina
- 0 = scrive uno zero sul nastro nella posizione corrente della testina
- freccia a sinistra = sposta la testa di un passo a sinistra
- freccia a destra = sposta la testa di un passo a destra
- condizione: se il valore sotto la testa è uguale al valore mostrato nel quadrato, scendi alla seconda linea di stati. in caso contrario, passa allo stato successivo a destra
- salto a sinistra: ritorno a uno stato (fisso) precedente ma solo nella riga superiore [inizialmente avevo dimenticato quello, grazie @Marzio!]
Non c'è modo di "sovrapporre" due salti (uno sopra l'altro). La macchina si ferma quando lascia uno stato e non vi è alcuno stato successivo alla sua destra.
(Dopo che la macchina si ferma, il contenuto del nastro viene confrontato con il contenuto del display, ma non ritengo che faccia parte delle funzionalità previste della macchina.)