A crossword layout generator in Prolog