SWI-Prolog
puzzlist