Questions tagged [prolog]

Prolog is the most commonly used logic programming language. It supports non-deterministic programming through backtracking and pattern matching through unification.

Filter by
Sorted by
Tagged with
1 vote
0 answers
25 views

Prolog destructor?

I have an init predicate which asserts some facts. I would like to clean these up after execution. I'm running queries of the form init, do_stuff, cleanup.. I would ...
user avatar
  • 111
1 vote
0 answers
72 views

Pocket cube solver in Prolog

Hello I have writtern this Prolog code to solve a scrambled 2x2 rubiks cube. Also known as a a pocket cube. ...
user avatar
1 vote
1 answer
45 views

Prolog refactor if/else

How do I refactor this mess of if/else conditions so that it's more readable? ...
user avatar
  • 19
2 votes
0 answers
26 views

Simple task with recursion on Prolog

I'm new in Prolog. So, I'm not sure if my code is ok and optimized. I'm also not sure if I use recursion correctly. Task: find students that has at least 1 bad grade (1 or 2) and print them in table ...
user avatar
6 votes
1 answer
226 views

Constraint solving CrossCells puzzle game solution

There's a puzzle game called CrossCells (not affiliated; there's also multiple other ones with the same kind of idea, but slightly different layout and rule set) that I've been playing on and off. ...
user avatar
  • 11k
3 votes
0 answers
67 views

Basic logic problem in Prolog

I thought it would be a good idea to take some easy to solve (by hand) problems and model them in Prolog for practice. Here is a problem I modeled in Prolog: A messy kid wrote a multiplication ...
user avatar
  • 5,599
3 votes
0 answers
178 views

Writing a tokenizer in SWI-Prolog

To teach myself how to do meta-progaming using Prolog, I've been playing around with translating ABNF syntax into DCG syntax. I'm still at the lexing and tokenising stage, but hope to advance to the "...
user avatar
  • 203
1 vote
2 answers
110 views

Find CISC prerequisites

Below I have some code written in prolog as a brief example. The goal of the program is to take a Computer and Information Science (CISC) course number and return any CISC prerequisites (prereqs). I ...
user avatar
1 vote
0 answers
113 views

Echo in Prolog with single print (new version)

In order to learn a bit more of Prolog, I implemented the echo command for SWI-Prolog. I want a correct implementation, that is, it satisfies the following requirements: It makes only one I/O call ...
user avatar
2 votes
1 answer
462 views

Echo in prolog with single print

In order to learn a bit more of Prolog, I implemented the echo command for SWI-Prolog. I want a correct implementation, that is, it satisfies the following ...
user avatar
5 votes
1 answer
134 views

Counting number of seen states

I have some code which executes a simple task, counting the number of states reachable from a particular state, would just like some advice on how to improve it. So far it stores all the states it ...
user avatar
4 votes
2 answers
1k views

Zebra puzzle in Prolog

I have attempted to a zebra puzzle in prolog and I was seeking some feedback as to the way I went about solving the puzzle. Here is the puzzle: Two weeks ago, four enthusiasts made sightings of ...
user avatar
2 votes
0 answers
137 views

All outcomes for subtraction on each value in list individually

As you can see from my predicate iterate, I am repeating Z is X-3 and Z is X-2, the scenarios are different if the value is 0 or ...
user avatar
4 votes
1 answer
16k views

Family tree in Prolog

I tried to write a program in Prolog and describe a family tree: ...
user avatar
10 votes
1 answer
604 views

Harry Potter's Family Tree Database

As an assignment for a class, I have made a small Harry Potter family tree in Prolog. It compiles into a self-contained executable that can be run straight from the command line on Linux machines. ...
user avatar
3 votes
0 answers
261 views

Movie Knowledgebase

I have had an assignment to construct a movie knowledgebase and ten specified queries in Prolog. This is my first ever Prolog program, so I would appreciate any pointers toward how I could improve. ...
user avatar
3 votes
2 answers
164 views

CLP(FD) labeling on possibly infinite domains

As a follow-up to this SO question, I implemented, for my Prolog-based language Brachylog, my own labeling predicate brachylog_equals/2 which is not guaranteed to ...
user avatar
  • 133
4 votes
1 answer
492 views

Aggregate cost for a directed graph in Prolog

I've come up with a simple graph traversal algorithm to calculate the aggregated cost of a directed graph or its subgraphs. Given a directed graph, the code visits all reachable nodes and sums up the ...
user avatar
  • 41
6 votes
1 answer
227 views

Logic Prolog compiler

I'm actually doing my own Prolog compiler just like SWISH one with Java. Prolog is a logic language that is particularly suited to programs that involve symbolic or non-numeric computation. Prolog ...
user avatar
7 votes
3 answers
908 views

Prolog parser written in Haskell

I am writing a very simple Prolog intepreter in Haskell. It's a class assignment and I really want to do it right. I was able to (quite quickly) write a parser for the language. Today I borrowed a ...
user avatar
  • 203
3 votes
1 answer
88 views

Prolog predicate for adjacency of integers with all signatures and no spurious choice points

I want to create a predicate nearby(X,Y) which represents "X and Y are integers 1 apart from each other" and fully satisfies: ...
user avatar
4 votes
0 answers
15k views

Monkey-banana problem in Prolog

The monkey-banana problem: There many variations to this problem, but the basic premise is that a monkey is in a room with a banana and a chair, and the monkey cannot reach the banana until he moves ...
user avatar
  • 167
10 votes
1 answer
584 views

cat program in Prolog

In order to learn Prolog, I have implemented the cat command in Prolog. I want to know if the code is idiomatic and what could be improved. File ...
user avatar
2 votes
0 answers
29 views

meta predicates fixedpoint/3 and fixedpointlist/3

What about the following meta-predicate "fixed point"? ...
user avatar
  • 245
5 votes
1 answer
250 views

map + foldl = mapfoldl

I was wondering... In the standard library of some Prolog systems, there are meta-predicates like maplist and foldl. In general,...
user avatar
  • 245
7 votes
2 answers
562 views

Higher-order Prolog predicates combine/3 and reduce/3

I'm trying to find useful versatile meta-predicates that are different from the vanilla ones offered currently by library(apply). How about the following two: <...
user avatar
  • 245
4 votes
1 answer
142 views

SICP Exercise 1.3: Sum of squares of two largest numbers out of three, Prolog Version

The exercise 1.3 of the book Structure and Interpretation of Computer Programs asks the following: Exercise 1.3. Define a procedure that takes three numbers as arguments and returns the sum of the ...
user avatar
2 votes
1 answer
153 views

Repeated string concatenation

I've been looking for a way to have a predicate that establishes that all elements of a list are substrings delimited by a given string. Analogues in other languages include: ...
user avatar
  • 963
2 votes
1 answer
679 views

Adding elements in two lists as numbers

The problem is adding two lists as numbers L1 = [1,9,9] and L2 = [0,9,9]: ...
user avatar
  • 41
5 votes
1 answer
181 views

Binary Digits to ASCII Characters

I wrote this code, as a novice a to Prolog, for a challenge posted on /r/DailyProgrammer. The formal description of this challenge, as presented in the prompt reads: Input description On ...
user avatar
2 votes
1 answer
129 views

English phrases, prime numbers, pseudo random data and encryption source code check

This code uses a DCG and pairs phrases into near-English sentences. If anyone is familiar with Prolog, I'm wondering how I can use the code as an encryption method by hiding data and replacing it ...
user avatar
2 votes
2 answers
81 views

Iterating towards a goal

I'm pretty proud of the following, but would welcome any comments from experts: ...
user avatar
  • 203
2 votes
1 answer
303 views

Implementing an open/close function in Prolog

I'm going through the Adventure in Prolog tutorial and I'm trying to implement an open/close rule for each of the doors I have. Add an open/closed status for each of the doors. Write open and close ...
user avatar
  • 1,202
9 votes
1 answer
10k views

"Hello world!" in Prolog

I have just written the following "hello world" program in Prolog. Although it is as simple as it can be, I would like your feedback as Prolog is very new to me. ...
user avatar
  • 1,185
6 votes
1 answer
149 views

Sample n items without replacement in Prolog

I have the following Prolog code which samples n items from a list without replacement: ...
user avatar
  • 205
4 votes
1 answer
89 views

Implementing a zipwithindex predicate in prolog

I want to implement a predicate of the form: zipwithindex(?List1, ?List2) which is true when the elements of List2 are the ...
user avatar
  • 205
4 votes
2 answers
4k views

Prolog Sudoku solver taking too long

I was wondering if there's any way I can improve this code's execution. I want to use it on a 9*9 grid, but it takes too long to solve this as 4*4. This program takes as input a 4*4 matrix ...
user avatar
5 votes
1 answer
1k views

Complete graph traversal algorithm in Prolog

Given a table, I want to explore all possible transition between the elements in the table. ex: for a table with size 3 [0,1,2], the output of the algorithm should be 0->1, 1->0, 0->2, 2->1, 1->2, 2->...
user avatar
  • 153
1 vote
2 answers
3k views

Range of all variables in List in Prolog

I have a list in Prolog like this: Puzzle = [ A1, A2, A3, B1, B2, B3, C1, C2, C3 ]. And I want every variable in the list to be a number ...
user avatar
  • 113
1 vote
1 answer
330 views

Bibtex reader using Prolog

I am trying to learn Prolog, and wrote a bibtex reader using GNU Prolog. I would like some feedback on my code in terms of: the way I write Prolog, and how it can be improved. Gist ...
user avatar