Articles of prólogo

Como contar o número de ocorrências de elementos em uma lista no Prolog

Eu sou novo no prólogo é por isso que pode ser a pergunta é fácil para você, mas eu não consegui encontrar a resposta. Alguém por favor pode me ajudar. eu só quero uma function de contagem st count([c,c,a,a,b,b,d,a,c,b,d,d,a], O). retornará o número de ocorrências dos membros da lista. O = [[a, 4], [b, 3], […]

Einsteins Riddle Prolog

Preciso de ajuda com um trabalho de prólogo para minha aula de IA. A questão é escrever código de prólogo para o quebra-cabeça de einstein. Eu sei como escrevê-lo no meu próprio, mas existem algumas restrições no trabalho de casa. there are 5 houses the Englishman lives in the red house the Spaniard owns the […]

Convertendo termos em átomos preservando nomes de variables ​​no prólogo YAP

Existe uma maneira de configurar o YAP (e / ou o prólogo SWI) para que eles preservem os nomes das variables ​​em qualquer chamada para term_to_atom/2 ? Por exemplo, quando eu executo isso: term_to_atom(member(X, [1,2]), A). Eu obtenho esta resposta: A = ‘member(_131405,[1,2])’ Onde X foi substituído por sua representação interna. No entanto, gostaria de […]

Shuffle no prólogo

Estou tentando escrever um procedimento em prólogo onde se L1 = [1,2,3] e L2 = [4,5,6] então L3 = [1,4,2,5,3,6] shuffle([1,2,3],[4,5,6],[1,4,2,5,3,6]) Eu tenho isso até agora: shuffle([X],[Y],[X,Y]). shuffle([X|Xs],[Y|Ys],_) :- shuffle(Xs,Ys,Z), shuffle(X,Y,Z). Esta é a minha primeira tentativa de escrever código de prólogo, então ainda estou tentando entender minha syntax, regras e tudo mais. Eu entendo […]

Intersecção e união de 2 listas

Eu estou começando a aprender Prolog (eu uso o SWI-Prolog) e eu fiz um exercício simples em que eu tenho 2 listas e eu quero calcular sua intersecção e união. Aqui está o meu código que funciona muito bem, mas eu estava me perguntando se existe uma maneira melhor de fazer isso, como eu não […]

Segregating Lists in Prolog

Estou tendo muita dificuldade em entender como obter meu código para mostrar minhas listas segregadas, consistindo de números pares e ímpares. Eu nem tenho certeza do que meu entendimento está faltando. Eu sou novo para esta linguagem, obviamente, e devo usá-la para a escola. Minha mente imperativa e funcional não me deixa saber o que […]

Usando \ == / 2 ou dif / 2

Se eu quiser ter certeza de que duas variables ​​não instanciam o mesmo termo, qual é a maneira preferida de fazê-lo? Digamos que eu precise encontrar arestas direcionadas em um gráfico, e um nó não pode ter uma aresta para si mesmo: node(a, x, y). node(b, z, x). node(c, y, y). (as arestas aqui são […]

Achatar uma lista no Prolog

Eu só tenho trabalhado com o Prolog por alguns dias. Eu entendo algumas coisas, mas isso está realmente me confundindo. Eu deveria escrever uma function que pega uma lista e achata. ?- flatten([a,[b,c],[[d],[],[e]]],Xs). Xs = [a,b,c,d,e]. % expected result A function retira as estruturas internas da lista. Isto é o que eu tenho até agora: […]

Como faço para adicionar listas no Prolog?

Como faço para adicionar listas no Prolog? Eu pesquisei na Internet e achei isso (de http://www.csupomona.edu/~jrfisher/www/prolog_tutorial/2_7.html ) append([X|Y],Z,[X|W]) :- append(Y,Z,W). append([],X,X). Por isso, obtém o Z removendo os elementos de [X|Y] em [X|W] . Mas como eu adiciono duas listas juntas? Exemplo, appendlist([1,2],[3,4,5],X). O resultado será X = [1,2,3,4,5] . Também não sei o que […]

Remover duplicatas na lista (Prolog)

Eu sou completamente novo em Prolog e tentando alguns exercícios. Um deles é: Escreva um conjunto de predicados (InList, OutList) que toma como input uma lista arbitrária e retorna uma lista na qual cada elemento da lista de input aparece apenas uma vez. Aqui está a minha solução: member(X,[X|_]). member(X,[_|T]) :- member(X,T). set([],[]). set([H|T],[H|Out]) :- […]