From UBC Wiki


Authors: Adam, Linda, Junsu

What is the problem?

We will build a enciphering/deciphering program based on Prolog, starting from basic examples like Caesar cipher. The program would decipher the ciphertext without having information about the cipher technique, but it would be given hints in plaintext words.

What is the something extra?

We will look in depth how to process natural language and strings in Prolog. We will use Prolog's capabilities to efficiently explore the possible deciphering combinations. We will also provide enciphering functions for the users to make the ciphertext.

What did we learn from doing this?

Different types of ciphering methods

Matrix manipulation and their applications in ciphering

Some language features of Prolog, for example: predicate A calls predicate B. B fails. A needs B's return as part of its logic or to terminate right away. This is a normal function call and can be easily done in other languages, but with Prolog, sometimes it gets stuck in an infinite evaluation of B (it may try to find other possible ways when it hits the failing case). The way we try to get around is to make sure the program either does a clear abort or return some value to represent the failing case.

Links to code etc