Exercício do Exame de Recorrência de 1997: Problema

Pretende-se a implementação em Prolog de um codificador de mensagens (e de um descodificador de mensagens encriptadas), pela substituição simples de uma letra (ou dígito), de a-z (ou 0-9), por outra, também de a-z (ou 0-9). Uma das formas mais simples de substituição é deslocar o alfabeto de uma quantidade específica (chamemos-lhe um delta).
Por exemplo, se cada letra e cada dígito fôr deslocada de 3, então

a b c d e f g h i j k l m n o p q r s t u v w x y z 0123456789

ficaria

d e f g h i j k l m n o p q r s t u v w x y z a b c 3456789012

e a mensagem 'encontra-me ao anoitecer' ficaria 'hqfrqwud-ph dr dqrlwhfhu'. Usando o algoritmo acima descrito e o predicado pré-definido name/2 (recorde-se que este predicado transforma uma frase (1 argumento) numa lista (2 argumento) com os códigos ASCII dos seus caracteres), implemente o predicado code( F,FCode,Delta ) que recebe a frase F e a devolve codificada em FCode usando um deslocamento Delta para rodar as letras e os dígitos.
Exemplo:

         ?- code('encontra-me ao anoitecer',C,3).
         C = 'hqfrqwud-ph dr dqrlwhfhu'

(c) Delfim F. Marado Torres
1999-04-13