Vai al contenuto

Edizione XII

  • di

Problema 1 – Notazione unaria

Un numero intero n è rappresentato in notazione unaria da una sequenza di n simboli uguali, per esempio U.

Si scriva un programma per macchina di Turing che, ricevuto sul nastro un intero positivo in notazione decimale, lasci come risultato lo stesso numero, scritto in notazione unaria.

NASTRO INIZIALENASTRO FINALE
4UUUU
0 
13UUUUUUUUUUUUU
1U

Problema 2 – Inversione

Si scriva un programma per macchina di Turing che, ricevuta in ingresso sul nastro una stringa sull’alfabeto {H, O, C} (attenzione: si tratta della lettera O, non della cifra 0), lasci sul nastro alla fine della computazione la stessa stringa, ma scritta in ordine inverso.

NASTRO INIZIALENASTRO FINALE
OOOHHOOO
CC
HCCOHHOCCH
HOCCOCHHCOCCOH
OOOOOO

Problema 3 – Completezza

Si scriva un programma per macchina di Turing che, ricevuta in ingresso sul nastro una stringa sull’alfabeto {C, H, O}, lasci sul nastro la scritta SI se la stringa in ingresso conteneva ciascuno dei caratteri dell’alfabeto almeno una volta (la stringa in questo caso si dice completa rispetto all’alfabeto), NO in caso contrario.

NASTRO INIZIALENASTRO FINALE
COONO
HCCOSI
COCONO
HHHHHNO
OHHHHCSI

Problema 4 – Ordinamento

Si scriva un programma per macchina di Turing che, ricevuta in ingresso sul nastro una stringa sull’alfabeto {H, O, C}, lasci sul nastro una stringa composta dagli stessi simboli presenti nell’input, ciascuno con lo stesso numero di occorrenze, ma ordinati in modo che tutte le H precedano le O, e tutte le O precedano le C.

NASTRO INIZIALENASTRO FINALE
CHOOHOOC
COCCOOOCC
HHHOOCCCHHHOOCCC
COCHCOCHHHOOCCCC
OO

Problema 5 – La chimica di Turing I

Usiamo i caratteri H, O, C per rappresentare, rispettivamente, un atomo di idrogeno, ossigeno, carbonio.

  • Una sequenza di queste lettere può quindi rappresentare una molecola (ovviamente è anche possibile scrivere formule che non possono rappresentare una molecola stabile, ma per semplicità non ci poniamo il problema).
  • Nella chimica di Turing si usa una notazione compatta per scrivere queste formula, consistente in un numero decimale preceduto dalla lettera che identifica una molecola.
  • Per esempio, O2 (ossigeno molecolare) sta per OO, CH4 (metano) per CHHHH e H2O (acqua) per HHO.

Si scriva un programma per macchina di Turing che, ricevuto in ingresso una formula in notazione compatta, lasci sul nastro la stessa formula in notazione espansa.
Si assuma per semplicità che le quantità siano sempre espresse da una sola cifra decimale (da 2 a 9; l’assenza di un numero indica 1).

NASTRO INIZIALENASTRO FINALECOMMENTO
CO2COOAnidride carbonica
H2O2HHOOAcqua ossigenata
CH4CHHHHMetano
CH3CH3CHHHCHHHEtano
CH2CH2CHHCHHEtilene
O2OOOssigeno

Problema 6 – La chimica di Turing II

Come ulteriore forma di compressione, una formula in notazione compatta può essere preceduta da un numero decimale, che indica quante volte la formula è ripetuta.

  • Per esempio, 2H2O (due molecole di acqua) sta per HHOHHO, e 4CO2 (quattro molecole di anidride carbonica) sta perCOOCOOCOOCOO.

Si scriva un programma per macchina di Turing per effettuare il cambio di notazione, con l’assunzione che il numero iniziale (che rappresenta il numero di molecole) sia compreso fra 2 e 9 (estremi inclusi), oppure assente del tutto.

NASTRO INIZIALENASTRO FINALE
4CO2COOCOOCOOCOO
CO2HCOOH
COOHCOOH
3C2H2OCCHHOCCHHOCCHHOCCHHO

Problema 7 – Successione di Fibonacci

I numeri di Fibonacci sono definiti, per ricorrenza, dalla seguente equazione:

  • f(x)=1, se x <= 2
  • f(x)=f(x-1)+f(x-2), altrimenti

La successione di Fibonacci è formata dai numeri di Fibonacci consecutivi, partendo da f(1) (si noti che ogni termine della successione dopo i primi due è dato dalla somma dei due termini precedenti).

Si scriva un programma per macchina di Turing che, dato in ingresso un numero decimale n, lasci in uscita sul nastro i primi ntermini della successione di Fibonacci, separati esattamente da uno spazio.

NASTRO INIZIALENASTRO FINALE
51 1 2 3 5
81 1 2 3 5 8 13 21
101 1 2 3 5 8 13 21 34 55
11

Problema 8 – Successione di Collatz

Si consideri la funzione

  • c(x)=3x+1, se x è dispari
  • c(x)=x/2, se x è pari

Si scriva un programma per macchina di Turing che, ricevuto sul nastro un intero x, lasci sul nastro la sequenza

x c(x) c(c(x)) c(c(c(x))) … 1 (con i valori separati da un singolo spazio).

Si noti che, benché i valori della successione così ottenuta crescano e decrescano in maniera apparentemente imprevedibile, esiste una congettura (non un teorema), detta Congettura di Collatz, secondo la quale per qualunque valore iniziale x, la successione raggiunge prima o poi il valore 1.
La lunghezza della sequenza è anch’essa molto variabile: per x=26, occorrono 11 passi per giungere a 1, ma per x=27 ne occorrono ben 111.
La congettura è stata verificata su calcolatore per tutti gli interi x fino a circa 2,88·10^18, ma manca una dimostrazione che ne garantisca la verità per qualunque x.
Sarete voi a trovarla?

NASTRO INIZIALENASTRO FINALE
55 16 8 4 2 1
66 3 10 5 16 8 4 2 1
1313 40 20 10 5 16 8 4 2 1
2727 82 41 124 62 31 94 47 142 71
214 107 322 161 484 242 121 364 182 91
274 137 412 206 103 310 155 466 233 700
350 175 526 263 790 395 1186 593 1780 890
445 1336 668 334 167 502 251 754 377 1132
566 283 850 425 1276 638 319 958 479 1438
719 2158 1079 3238 1619 4858 2429 7288 3644 1822
911 2734 1367 4102 2051 6154 3077 9232 4616 2308
1154 577 1732 866 433 1300 650 325 976 488
244 122 61 184 92 46 23 70 35 106
53 160 80 40 20 10 5 16 8 4 2 1
22 1
11

Problema 9 – La chimica di Turing III

Una formula stechiometrica di Turing è un’equazione, i cui termini sono separati dal simbolo =, e ciascuno dei termini è formato da una somma di molecole, in cui ogni addendo è una formula in notazione compatta (es.: 2H2O).
Una formula di questo tipo si dice bilanciata se il numero totale di occorrenze di ogni elemento a destra e a sinistra del segno di uguale è identico.

Per esempio,

  • 2H2O+O2+H+H=2O2+4H è bilanciata (sono presenti 4 atomi di ossigeno e 4 di idrogeno in entrambi i termini),
  • così come CH4+2O2=CO2+2H2O (che rappresenta la combustione del metano in presenza di ossigeno, e produce anidride carbonica e acqua),
  • mentre CO2+H2O=4CHO non lo è.

Si scriva un programma per macchina di Turing che, ricevuta in ingresso una stringa rappresentante una formula stechiometrica, lasci sul nastro la scritta SI se la formula è bilanciata, NO altrimenti.

NASTRO INIZIALENASTRO FINALE
2H2O=O2H4SI
2H2O+O2+2H=2O2+4HSI
H2O+2OH=CH4NO
4O=2O2SI
CH4+CO2+O2=2CO2+2H2ONO

Problema 10 – La chimica di Turing IV

In tempi di crisi energetica, si cerca di estrarre idrocarburi dalle fonti più variegate.
Siamo interessati in particolare al metano, che ha formula CH4.

Si scriva un programma per macchina di Turing che, ricevuta in input un termine di una formula stechiometrica (gli ingredienti), lasci sul nastro il numero di molecole di metano che sarebbe potenzialmente possibile estrarre dagli ingredienti.

Per esempio, 8CO2+8H2O contiene 8 atomi di carbonio e 16 di idrogeno (oltre a 24 di ossigeno, che però non ci interessano); sarebbe quindi possibile estrarre da questi ingredienti fino a 4 molecole di metano (ovvero, 4 atomi di carbonio e 16 di idrogeno).
Si noti che il numero di molecole di metano estraibili da una formula potrebbe richiedere più cifre decimali per essere espresso.

NASTRO INIZIALENASTRO FINALE
8CO2+8H2O4
6H2O+4CO2+COOH+4H2O5
H2O+5CO20
6CH46
4O2+8H2O+4OH+4CO2+4C2H510

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *