Ficha 13 – Processamento de Texto.
13.1. Inverter uma sequência
Implemente a função rev_str(s) que retorna um sequência correspondente à sequência s, mas escrita
na ordem inversa. Por exemplo,
rev_str(‘ab12cd’) = ‘dc21ba’
13.2. Eliminar caracteres de controle
Implementar a função ctrl_to_sp(s) que substitui, por espaços, todos os caracteres de controle que
ocorrem na sequência s. Por exemplo,
ctrl_to_sp(‘ AB\n 12\tcd ’) = ‘ AB
12 cd ’
13.3. Eliminar espaços iniciais e finais
Utilize as funções deblank(s), disponibilizada pelo Octave, e rev_str(s) para implementar a função
rem_sp13(s) que elimina todos os espaços iniciais e finais da sequência s. Por exemplo,
rem_sp13(‘
AB \n 12
\t cd
’) = ‘AB
\n
12 \t cd’
13.4. Eliminar espaços repetidos
Implemente a função rem_rep_sp(s) que elimina todos os espaçoes repetidos da sequência s. Por
exemplo,
rem_rep_sp(‘AB
12
cd’) = ‘AB 12 cd’
13.5. Normalizar uma sequência (diapositivos das teóricas)
Utilize as funções anteriores para implementer a função norm_str(s) que retorna uma sequência
correspondente à sequência s, mas limpando-a dos espaços e caracteres de controle que ocorrem
antes da primeira palavra, depois da última palavra ou os repetidos entre palavras. Por exemplo,
norm_str(‘
AB
\n
12
\t cd
’) = ‘AB 12 cd’
13.6. Capitalizar os nomes de uma sequência
Implemente a função cap_names(s) que “capitaliza” uma sequência de nomes, i.e. escrevendo as
primeiras letras em maiúsculas e as restantes em minúsculas, e normalize o resultado. Por exemplo,
cap_names(“
Carlos Barata”)
cap_names(“
CARLOS
cap_names(“carlos
BARATA
barata”)
= ‘Carlos Barata’ ; e
”)
= ‘Carlos Barata’ ; e
= ‘Carlos Barata’
13.7. Encriptar uma sequência (código de Napoleão)
Implemente a função cript_nap(s,n) que codifica uma sequência s deslocando todos os seus
caracteres de n casas no alfabeto. Por exemplo, com n = 3, um ‘a’ é convertido num ‘d’ e com
código -2, um ‘T’ é transformado num ‘R’.
Em geral, assuma que todos os caracteres têm um código entre 0 e 127, e que n é um inteiro cujo
valor absoluto não excede 127). Assim, com n = 80 um ‘a’ (código 97) é transformado num ‘1’
código 49, pois rem(97+80+128, 128) = 49. Com n = -40, o caracter ‘1’, com código 33, é
transformado no caracter ‘y’, código 121, pois rem(33-40+128, 128) = 121.
cript_nap(“Ab ~ 34”,1)
= ‘Bc! !45’
Implemente a função inversa, decript_nap(s,n), que descodifica uma sequência s com chave n.
13.8. Encriptar uma sequência (chave variável)
Implemente a função cript_key(s,chave) que transforma uma sequência s deslocando todos os seus
caracteres de um número de casas indicado na chave key.Por exemplo se key = [1,0,3] os 1º, 4º, 7º
10º, 13º, ... caracteres são transformados nos caracteres “seguintes”, os 2º, 5º, 8º 11º, 14º, ...
caracteres são mantidos e os 3º, 6º, 9º 12º, 15º, ... caracteres são transformados em caracteres 3
lugares à frente no alfabeto. Por exemplo,
cript_key(“AB 123 cd”,[1,2,3]) = ‘BD#246!eg’
Implemente a função inversa, decript_key(s,key), que descodifica uma sequência s com chave
key.
Download

Ficha 13 – Processamento de Texto.