1. Siccome l'inversione delle stringhe sembra essere stranamente comune nei colloqui, ecco una sua variante. Scrivere una funzione che data una stringa in UTF-8, restituisca una stringa che ne è l'inversa. Data cioè ad esempio la stringa "ci@o", deve restituire "o@ic". Entrambe le stringhe vengono passate come argomento alla funzione. src sarà la stringa in ingresso e dst quella in uscita.
- Codice:
void ut8reverse(char * restrict dst, const char * restrict src);
2. Questo è un problema un po' più lungo e difficile. Scrivere un programma che legge tutte le parole da un file di testo e le stampa ordinate per frequenza in un secondo file. Ogni riga dell'output dovrà contenere una parola e la sua frequenza. Se ad esempio abbiamo come input un file di testo contenente "ciao ciao mondo ciao", l'output dovrà essere
- Codice:
ciao 3
mondo 1
I nomi dei due file vanno passati come argomenti da linea di comando.
3. In questa versione dell'esercizio precedente si vuole sapere anche la parola che più comunemente segue quella considerata. Nel caso precedente si dovrà avere come output:
- Codice:
ciao 3 ciao
mondo 1 ciao
4. Scrivere un programma che stampi l'ora corrente usando le cifre rappresentate nel modo seguente (o qualcosa di simile):
- Codice:
### ### #### ##### # # #### #### ##### ### ###
# # # # # # # # # ## # # # #
# # # # # # # # # # # # # #
# # # ### #### #### ### #### ## ### ####
# # # # # # # # # # # # #
# # # # # # # # # ## # # #
### ### #### ##### # #### ### # ### ####
5. La notazione ternaria bilanciata è un sistema numerico in base 3 in cui le cifre sono +1, 0 e -1. Scrivere due funzioni che convertano un numero intero da notazione decimale a notazione ternaria bilanciata e viceversa. Per rappresentare le cifre della notazione ternaria, usare "+-0". Per esempio, \(8 = 3^3 - 3^0 = +0-\).
6. Scrivere un interprete per Brainfuck.
Direi che per il momento mi fermo qui. Per il momento direi che sono abbastanza facili, ma se qualcuno desidera sfide più impegnative posso inventarmene degli altri..