Jump to content

Search the Community

Showing results for tags 'prolog'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Bem-vindos ao Portugal-a-Programar
    • Sugestões, Críticas ou Dúvidas relativas ao P@P
    • Acerca do P@P
  • Comunidade a Trabalhar
    • Wiki P@P
    • Apresentação de Projectos de Programação
    • Downloads
  • Revista PROGRAMAR
    • Revista PROGRAMAR
  • Desenvolvimento Geral
    • C
    • C++
    • Java
    • Haskell
    • Pascal
    • Python
    • Bases de Dados
    • Visual Basic Clássico
    • Visual Basic for Applications (VBA)
    • Dispositivos Móveis
    • Outras Linguagens
  • Desenvolvimento Orientado para Web
    • PHP
    • HTML
    • CSS
    • Javascript
    • Outras Linguagens de WebDevelopment
    • Desenvolvimento Web
  • Desenvolvimento .NET
    • C#
    • Visual Basic .NET
    • ASP.NET
    • WPF & SilverLight
  • Software e Sistemas Operativos
    • Software de Produtividade
    • Sistemas Operativos
    • Apresentação de Software
  • Informática
    • Interfaces Visuais
    • Computação Gráfica
    • Algoritmia e Lógica
    • Segurança e Redes
    • Hardware
    • Electrónica
    • Automação Industrial
    • Matemática
    • Dúvidas e Discussão de Programação
    • Notícias de Tecnologia
  • Outras Áreas
    • Dúvidas Gerais
    • Discussão Geral
    • Eventos
    • Anúncios de Emprego
    • Tutoriais
    • Snippets / Armazém de Código
  • Arquivo Morto
    • Projectos Descontinuados
    • System Empires

Blogs

  • Blog dos Moderadores
  • Eventos
  • Notícias de Tecnologia
  • Blog do Staff
  • Revista PROGRAMAR
  • Projectos
  • Wiki

Categories

  • Revista PROGRAMAR
  • Tutoriais
  • Textos Académicos
  • Exercícios Académicos
    • Exercícios c/ Solução
    • Exercícios s/ Solução
  • Bibliotecas e Aplicações
  • Outros

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Found 21 results

  1. Ac

    Teste de QI

    achei nesta página http://rachacuca.com.br/teste-de-einstein/ o seguinte teste e decidi modular-lo em prolog mas tou meio encravado... %Cor: 1verm 2verd 3azul 4ama 5branc %Nacionalidade: 1ing 2din 3sue 4ale 5nor %#Bebida: 1cha 2cafe 3cerv 4agua 5leite %#Cigarro: 1pall 2blue 3princ 4dun 5blend %#Animal: 1cao 2cava 3gat 4pass 5peixe %#O Inglês vive na casa Vermelha. %#O Sueco tem Cachorros como animais de estimação. %#O Dinamarquês bebe Chá. %#A casa Verde fica do lado esquerdo da casa Branca. %#O homem que vive na casa Verde bebe Café. %#O homem que fuma Pall Mall cria Pássaros. %#O homem que vive na casa Amarela fuma Dunhill. % s2 O homem que vive na casa do meio bebe Leite. % s1 O Norueguês vive na primeira casa. %#O homem que fuma Blends vive ao lado do que tem Gatos. %#O homem que cria Cavalos vive ao lado do que fuma Dunhill. %#O homem que fuma BlueMaster bebe Cerveja. %#O Alemão fuma Prince. % s3 O Norueguês vive ao lado da casa Azul. %#O homem que fuma Blends é vizinho do que bebe Água. %casa(A,B,C,D,E,F) cor(0):-write(' desc'). nac(0):-write(' desc'). beb(0):-write(' desc'). cig(0):-write(' desc'). cor(1):-write(' vermelho'). cor(2):-write(' verde'). cor(3):-write(' azul'). cor(4):-write(' amarelo'). cor(5):-write(' branco'). nac(1):-write(' ingles'). nac(2):-write(' dinamarques'). nac(3):-write(' sueco'). nac(4):-write(' alemao'). nac(5):-write(' noruegues'). beb(1):-write(' cha'). beb(2):-write(' cafe'). beb(3):-write(' cerveja'). beb(4):-write(' agua'). beb(5):-write(' leite'). cig(1):-write(' pall'). cig(2):-write(' blue'). cig(3):-write(' princ'). cig(4):-write(' dun'). cig(5):-write(' blend'). anim(0):-write(' desc'). anim(1):-write(' cao'). anim(2):-write(' cavalo'). anim(4):-write(' gato'). anim(4):-write(' passaro'). anim(5):-write(' peixe'). escreve:-escrev2(1). escrev2(6). escrev2(N):-casa(N,A,B,C,D,E),write('casa '),write(N),cor(A),nac(B),beb(C),cig(D),anim(E),write('\n'),M is N+1,escrev2(M). start:-assert(casa(1,0,0,0,0,0)),assert(casa(2,0,0,0,0,0)),assert(casa(3,0,0,0,0,0)),assert(casa(4,0,0,0,0,0)),assert(casa(5,0,0,0,0,0)). s1:-casa(1,B,C,D,E,F),retract(casa(1,B,C,D,E,F)),assert(casa(1,B,5,D,E,F)). s2:-casa(3,B,C,D,E,F),retract(casa(3,B,C,D,E,F)),assert(casa(3,B,C,5,E,F)). s3:-casa(N,_,5,_,_,_),M is N+1, M > 0, casa(M,B,C,D,E,F),retract(casa(M,B,C,D,E,F)),assert(casa(M,3,C,D,E,F)).
  2. Version 2004/2005

    226 downloads

    Apontamentos teóricos de curso de Programação Lógica, focando a linguagem de programação Prolog. Universidade do Minho Paradigmas da Programação III Autor: Professor F. Mário Martins
  3. Version 2007/2008

    335 downloads

    Slides de curso de Lógica para Programação, focando a linguagem de programação lógica Prolog. Instituto Superior Técnico Lógica para Programação Autor: Professora Inês Lince
  4. Version 2009

    323 downloads

    Texto abordando conceitos de Lógica e a sua aplicação na programação. Inclui capítulo dedicado à programação em lógica utilizando Prolog. Adicionalmente, todos os capítulos contêm exercícios no final, sendo disponibilizada a solução de alguns deles em apêndice. Instituto Superior Técnico Lógica para Programação Autor: Professor João Pavão Martins Conteúdo Conceitos Básicos Lógica Proposicional Lógica de Primeira Ordem Programação em Lógica Prolog Sumário das Regras de Inferência Manual de Sobrevivência em Prolog Soluções de Exercícios Seleccionados
  5. Version 2006

    219 downloads

    Exercícios teóricos e práticos de Lógica (exercícios práticos recorrem à linguagem Prolog). Universidade do Minho Lógica Computacional Autor: Professora Maria João Frade
  6. quero criar um programa com este predicado/4: aplica_op(Op,Val1,Val2,R) em que Op será uma operação matematica: + ou - ou * ou / Val1 - valor 1 ; Val2 -Valor 2; R é o resultado de efetuar essa operação. Já tentei de 2 formas, mas nenhuma está a dar correto: 1º aplica_op(Op,Val1,Val2,R):- R is Val1 Op Val2. 2º aplica_op(Op,Val1,Val2,R):- R is Op(Val1, Val2). Obrigado.
  7. Olá não tenho nenhuma experiência em prolog, e sei que este forum é de perl, contudo acredito que alguém aqui possa me ajudar. tenho o seguinte código em prolog, e está dando erro. aresta (a,b). aresta (a,c). aresta (b,d). aresta (d,c). adjacente (N, F) :- aresta (N, F). adjacente (N, F) :- aresta (F, N). está dando o seguinte erro, ?- ['Grafo.pl']. ERROR: /home/crislanio/Área de Trabalho/Grafo.pl:1:7: Syntax error: Operator expected true. Att,
  8. sirsomething

    [Prolog] Contador

    Olá e boas tardes a todos. Gostaria que me tirassem uma dúvida. Tenho uma lista com a seguinte estrutura: L=[via(porto,lisboa,_),via(braga,faro,_),via(guimaraes,santarem,_)] sendo que tenho outra lista com o formato: cidade(lisboa,_,_,A) Como é que eu consigo fazer um contador que, buscando a lista das vias e posteriormente acedendo às cidades, me incremente uma variável cada vez que a variável A é igual a um parametro que eu requeri anteriormente ao utilizador? Tentei utilizar este código mas não consigo compreender porque é que não funciona. contador([], 0,[]). contador([via(A,_,_)|R], Tot,Regiao):- cidade(A,_,_,Reg1),Reg1==Regiao, Tr is Tot + 1, contador(R,Tr,Regiao).
  9. maginni

    Exercicio Prolog

    Preciso de uma ajuda para fazer um trabalho meu da faculdade em prolog para resolver um problema de logica do racha-cuca : Descubra quais são as resoluções de ano novo de cinco amigas. Sejam os fatos desta estria: 1. A moça que quer viajar está ao lado de quem tem 24 anos. 2. A Clarissa está em algum lugar esquerda de quem tem 23 anos. 3. A Vivian está exatamente direita da mulher mais velha. 4. A namorada do Otávio é a mulher mais nova do grupo. 5. A moa que namora o Daniel está na última posição. 6. A Fabiana está em algum lugar entre quem tem 20 anos e quem quer viajar, nessa ordem. 7. Quem namora o Marcelo está ao lado da Vivian. 8. A Vivian está em algum lugar esquerda de quem pretende economizar dinheiro. 9. Quem quer ler mais no ano novo estÆ ao lado da Vivian. 10. Quem gostaria de emagrecer está na segunda posição. 11. A Thais está ao lado da mulher que namora o Otávio. 12. A moa de bolsa amarela está exatamente esquerda da Ana. 13. A mulher de 19 anos estÆ ao lado da mulher de bolsa verde. 14. Quem tem a bolsa branca estÆ em algum lugar entre a moa de 20 anos e a de 26 anos, nessa ordem. 15. A cor da bolsa da Ana Ø vermelha. 16. A Thais está ao lado da Fabiana. 17. A mulher de 26 anos está exatamente esquerda da mulher que namora o Alexandre. 18. A mulher de bolsa verde está em algum lugar direita da Thais. preciso do codigo que resolve esse problema, não consigo fazer e estou desesperado.
  10. Guest

    Exercícios de Prolog

    Boas Preciso de ajuda no meu trabalho de Prolog, este trabalho (abaixo posto) são uma compilação de 4 exercícios,mas estou com dificuldades para comecá lo. Será que alguem me ajuda?? CUMPZ % % FACTS % vowel(a). vowel(e). vowel(i). vowel(o). vowel(u). consonant(b). consonant(c). consonant(d). consonant(f). consonant(g). consonant(h). consonant(j). consonant(k). consonant(l). consonant(m). consonant(n). consonant(p). consonant(q). consonant(r). consonant(s). consonant(t). consonant(v). consonant(w). consonant(x). consonant(y). consonant(z). % % RULES (EDIT FROM HERE) ---------------------------------- % % (1) implementar predicado letter/1 (o /1 significa que o % predicado tem só um argumento, isto e só descritivo para % documentação/comentarios) que determina se o argumento e % uma letra. Não pode ser usado o ponto e virgula como % operador em vossa implementação. % exemplo: % letter(a) % true % % letter(4) % false % add implementation of (1) here (10 pt): % (2) implementar predicado extractvowels/? % (o "?" significa que o numero de argumentos dependera % de como vossa equipa decida implementar o predicado) que % aceita uma palavra em forma de lista, % por exemplo [a,m,a,z,o,n] % o qual vai instanciar uma variável com uma lista que % contem as vocais na palavra, sem duplicados. % no exemplo da palavra [a,m,a,z,o,n] o predicado devera % instanciar uma variável com a lista [a,o]. % Para implementar este predicado, resolver primeiro item (H3) % na secção embaixo (HELPERS) % add implementation of (2) here (30 pt): % (3) implementar predicado countletters/? % o "?" significa que o numero de argumentos dependera % de como vossa equipa decida implementar o predicado. % Este predicado aceita uma % palavra em forma de lista, por exemplo [a,m,a,z,o,n] % o qual vai instanciar uma variável com o numero % de letras na palavra. % no exemplo da palavra [a,m,a,z,o,n] o predicado devera % instanciar uma variável com o valor 6. % Para implementar este predicado devem usar o operador % aritmético "is" - exemplo: se fazemos uma chamada a prolog % com o objetivo % N is 3 + 2. % N e instanciado com o valor 5. % add implementation of (3) here (20 pt): % (4) implementar predicado removevowels/? % o "?" significa que o numero de argumentos dependera % de como vossa equipa decida implementar o predicado. % Este predicado aceita uma % palavra em forma de lista, por exemplo [a,m,a,z,o,n] % o qual vai instanciar uma variável com a mesma palavra % mas, sem as vocais. % no exemplo da palavra [a,m,a,z,o,n] o predicado devera % instanciar uma variável com a lista [m,z,n]. % add implementation of (4) here (20pt): % Helpers % % % estes predicados são necessários (utilities) para % as implementações dos predicados centrais deste trabalho % pratico. Alguns helpers estão já implementados (H1, e H2), % outros (H3) devem ser implementados por vossa equipa. % (H1) flatten/2 este predicado elimina subsistas dentro da % lista no primeiro argumento e coloca o resultado na % variável do segundo argumento. Por exemplo % flatten([a,[a,b]],F). % vai instanciar F com a lista [a,a,b] % o significado e uso do predicado xatom/1 não e relevante % para vosso trabalho, podem ignorar e simplesmente usar % o flatten/2. flatten([],[]). flatten([A|L],[A|L1]) :- xatom(A), flatten(L,L1). flatten([A|L],R) :- flatten(A,A1), flatten(L,L1), append(A1,L1,R). xatom(A) :- atom(A). xatom(A) :- number(A). % (H2) member/2 este predicado foi apresentado na aula. % o objetivo e devolver Yes (True) se o primeiro argumento % e um elemento da lista passada no segundo argumento % e mo caso contrario, o predicado devolve No (False). member(X, [X|_]). member(X, [_|Tail]) :- member(X, Tail). % (H3) removeduplicates/? aceita uma lista 'flat' % (isto e, devem garantir que não tem subsistas) % e devolve outra lista 'flat' numa variável onde não % existem letras repetidas. % add implementation of (H3) here (20pt): % % NOTAS % % o operador == e comparativo % se fazemos 5 == 5, prolog responde Yes (True) % mas se fazemos 5 == 2 prolog responde No (False) % o operador \+ e o NOT % se fazemos % member(3, [1,2]). Prolog responde No (False) % mas se fazemos % \+ member(3, [1,2]). Prolog responde Yes (True) % a chamada anterior e lida como Not Member 3 of list [1,2]
  11. Yuliya

    Projecto de prolog

    Boa tarde Pessoal, Queria pedir a vossa ajuda a implementar uma coisa do genero: inserenovazio([1,2,_,4,_,6,7,_],[3,5,8],L) e o L deve ser: L=[1,2,3,4,5,6,7,8]. Nota: o conteúdo do projecto não é numérico, dei só um exemplo. Alguém pode dar-me dicas? Estou a fazer um projecto de faculdade e está a ser dificil. Ando a varrer internet, mas só encontro as listas desorganizadas, permutações e assim. Cumprimentos Yuliya
  12. Boa noite pessoal, estou fazendo um trabalho que requer de mim a resolução do problema que pode ser encontrado no link que se segue: http://rachacuca.com.br/logica/problemas/fila-do-banco/, chamado de Fila de Banco. O objetivo é descobrir quem no final irá pagar cada uma das contas. Depois de muito pesquisar consegui algo, mas n sei o que poderia fazer para melhorar até porque somente aprendi a trabalhar com Prolog há uma semana, poderiam me ajudar com dicas de como chegar ao meu objetivo, ou ainda, melhorias?Obrigado. Segue o código abaixo: % Fila.pl % Nicolas P. Lane, Felipe de Avila. fila :- fila(Solution), write_sol(Solution). fila(Sol) :- Sol = [ [1,C1,C01,N1,P1,A1,E1], [2,C2,C02,N2,P2,A2,E2], [3,C3,C03,N3,P3,A3,E3], [4,C4,C04,N4,P4,A4,E4], [5,C5,C05,N5,P5,A5,E5]], member([4,_,_,_,_,_,sinuca],Sol), % Na quarta posição está o homem que gosta de Sinuca. member([5,_,_,_,_,_,futebol],Sol), % Quem gosta de Futebol está na quinta posição. member([2,_,_,_,_,_,basquete],Sol), % O homem que gosta de Basquete está na segunda posição. member([2,vermelha,_,_,_,_,volei],Sol), % Quem gosta de Vôlei está de Vermelho. member([PE,branca,_,_,_,_,_],Sol), % O dono do Peixe está exatamente à esquerda de quem pratica Natação. member([NA,_,_,_,_,_,natacao],Sol), NA =:= PE - 1, member([branca,_,_,_,_,tartaruga,_],Sol), % O homem de Branco é o dono do réptil. member([sA,_,_,samuel,_,_,_],Sol), % O Bombeiro está exatamente à direita do Samuel. member([bO,_,_,_,bombeiro,_,_],Sol), BO =:= SA - 1, member([5,_,_,_,veterinario,_,_],Sol), % O Veterinário está na quinta posição. member([3,_,_,_,pesquisador,_,_],Sol), % O Pesquisador está na terceira posição. member([_,_,_,douglas,fotografo,_,_],Sol), % Douglas trabalha como Fotógrafo. member([5,_,_,jose,_,_,_],Sol), % José está na quinta posição. member([PES,_,_,_,pesquisador,_,_],Sol), % O Pesquisador está exatamente à esquerda do Augusto. member([AU,_,_,augusto,_,_,_],Sol), AU =:= PES - 1, member([_,_,_,douglas,_,cachorro,_],Sol), % Douglas tem um Cachorro. member([5,_,telefone,_,_,_,_],Sol), % Na quinta posição está o homem da conta de Telefone. member([_,branco,agua,_,_,_,_],Sol), % O homem de Branco vai pagar a conta de Água. member([3,_,luz,_,_,_,_],Sol), % Na terceira posição está quem vai pagar a conta de Luz. member([_,_,celular,ronaldo,_,_,_],Sol), % Ronaldo vai pagar a conta de Celular. member([_,verde,_,_,passaro,_],Sol), % O homem de Verde tem um Pássaro. member([1,azul,_,_,_,_,_],Sol); % O homem de Azul está em uma das pontas. member([5,azul,_,_,_,_,_],Sol), member([sI,_,_,_,_,_,sinuca],Sol), % O homem que tem um Gato está exatamente à direita de que gosta de Sinuca. member([GA,_,_,_,_,gato,_],Sol), SI =:= GA -1, member([PA,_,_,_,_,passaro,_],Sol), % O homem que tem um Pássaro está ao lado do que joga Sinuca. member([sI2,_,_,_,_,water,_],Sol), (PA =:= SI2 + 1; PA =:= SI2 - 1), perm([amarela,azul,branca,verde,vermelha],[C1,C2,C3,C4,C5]), perm([agua,aluguel,celular,luz,telefone],[C01,C02,C03,C04,C05]), perm([augusto,douglas,jose,ronaldo,samuel],[N1,N2,N3,N4,N5]), perm([bombeiro,fotografo,massagista,pesquisador,veterinario],[P1,P2,P3,P4,P5]), perm([cachorro,gato,passaro,peixe,tartaruga],[A1,A2,A3,A4,A5]), perm([basquete,futebol,sinuca,natacao,volei],[E1,E2,E3,E4,E5]). takeout(X,[X|R],R). takeout(X,[F|R],[F|S]) :- takeout(X,R,S). perm([X|Y],Z) :- perm(Y,W), takeout(X,Z,W). perm([],[]). write_sol([A,B,C,D,E]) :- write('+--+------------+------------+------------+------------+------------+'),nl, writef('|%2L|%12L|%12L|%12L|%12L|%12L|',A),nl, writef('|%2L|%12L|%12L|%12L|%12L|%12L|',B),nl, writef('|%2L|%12L|%12L|%12L|%12L|%12L|',C),nl, writef('|%2L|%12L|%12L|%12L|%12L|%12L|',D),nl, writef('|%2L|%12L|%12L|%12L|%12L|%12L|',E),nl, write('+--+------------+------------+------------+------------+------------+'),nl.
  13. Apontamentos Teóricos de Prolog (U. Minho) Ver Ficheiro Apontamentos teóricos de curso de Programação Lógica, focando a linguagem de programação Prolog. Universidade do Minho Paradigmas da Programação III Autor: Professor F. Mário Martins Submetido por Rui Carlos Submetido em 24-08-2013 Categoria Textos Académicos Licença Website http://sim.di.uminho.pt/ensino2.php3?seccao=apoio&id=57 Submetido pelo Autor? Não
  14. Boas, tenho que fazer um projecto para a faculdade mas como estou de erasmus o professor mandou me fazer isto mas eu nunca aprendi prolog. Por isso queria uma ajuda de como fazer este projecto. Basicamente eu tenho que fazer a resolução do SRQ em prolog baseando-me na solução em OZ. A solução em OZ é esta: http://pastebin.com/NRhs7nBc . Se me pudessem dar algumas dicas era porreiro principalmente para a primeira parte porque não sei criar listas e assim em prolog, depois o resto atravez da documentação já consigo chegar lá. Estou a usar o swi-prolog. Cumps
  15. carvalho2707

    [Resolvido] Exercícios de listas

    boas, estou a tentar criar um programa em prolog que me diga se A está à esquerda de B numa lista.. o meu programa funciona para estes casos: [A,B] [A,......,B] mas nao funciona no caso em que A não está na primeira posição.. alguem me consegue ajudar? esquerda(S1,S2,[s1|R]):-membro(S2,R). esquerda(S1,S2,[_|R]):-esquerda(S1,S2,R).
  16. Slide de Lógica para Programação - Prolog (IST) Ver Ficheiro Slides de curso de Lógica para Programação, focando a linguagem de programação lógica Prolog. Instituto Superior Técnico Lógica para Programação Autor: Professora Inês Lince Submetido por Rui Carlos Submetido em 06-02-2013 Categoria Textos Académicos Licença Website https://fenix.ist.utl.pt/disciplinas/lp/2007-2008/2-semestre/pagina-inicial Submetido pelo Autor? Não
  17. Rui Carlos

    Lógica para Programação (IST)

    Lógica para Programação (IST) Ver Ficheiro Texto abordando conceitos de Lógica e a sua aplicação na programação. Inclui capítulo dedicado à programação em lógica utilizando Prolog. Adicionalmente, todos os capítulos contêm exercícios no final, sendo disponibilizada a solução de alguns deles em apêndice. Instituto Superior Técnico Lógica para Programação Autor: Professor João Pavão Martins Conteúdo Conceitos Básicos Lógica Proposicional Lógica de Primeira Ordem Programação em Lógica Prolog Sumário das Regras de Inferência Manual de Sobrevivência em Prolog Soluções de Exercícios Seleccionados Submetido por Rui Carlos Submetido em 01-12-2012 Categoria Textos Académicos Licença Website https://fenix.ist.utl.pt/homepage/ist11416 Submetido pelo Autor? Não
  18. Lógica Computacional - Caderno de Exercícios (U. Minho) Ver Ficheiro Exercícios teóricos e práticos de Lógica (exercícios práticos recorrem à linguagem Prolog). Universidade do Minho Lógica Computacional Autor: Professora Maria João Frade Submetido por Rui Carlos Submetido em 09-11-2012 Categoria Exercícios s/ Solução Licença Website http://www3.di.uminho.pt/~mjf/lecturing_material/ Submetido pelo Autor? Não
  19. Boa noite, Estou a fazer um projecto para a faculdade, em que tenho que desenvolver um jogo em Prolog chamado Meta-Forms: Estou com um problema no seguinte procedimento: matrizNeg(Peca, ListaNeg, Tabuleiro) :- not(membro((linha(L), coluna(C)), ListaNeg)), coloca(Peca, L, C, Tabuleiro). Basicamente o functor matrizNeg actua como uma pista na qual é indicada uma Matriz de posições onde uma determinada peça não está. O functor coloca, coloca uma determinada peça numa determinada posição do tabuleiro. Para tal foram utilizados os seguintes códigos auxiliares: %Linhas possiveis linha(top). linha(center). linha(bottom). %Colunas possiveis coluna(left). coluna(middle). coluna(right). %Função que verifica se um elemento é membro de uma lista membro(Pos, [Pos|_]). membro(Pos, [_|Matriz]) :- membro(Pos, Matriz). Cumprimentos.
  20. Olá a todos, Alguem sabe se é possivel parar predicados a meio da avaliação para passar ao proximo? Do tipo: des :- f(ola, adeus), g(adeus,ola). f(O, A) :- ... g(A,O) :- .. Onde paravamos no inicio do predicado f e passavamos para o predicado g, e só dps de esse ser avaliado é que passavamos para o f novamente? É que vou explicar o meu dilema, eu tenho um predicado que recebe uma lista e a uma posiçao e um literal e ele apenas cria uma nova lista com o literal na posição indicada(vamos chama-lo g). Tenho outro predicado que ja recebe uma gama onde o literal pode estar na lista (vamos chama-lo f). Acontece que este ultimo predicado pode aparecer primeiro que g o que causa algum transtono no caso de o literal de f ser posta num sitio onde o literal de g tem de ser posto apesar de ter mais sitio onde poderia ser posto. Com um exemplo se calhar visualizam melhor: - Imaginemos que temos para o predicado g, lista A, literal 'G', posicao 9, nova lista NA e para o f, lista A, literal 'J', posicao [9, 5, 3], nova lista NA. Já estão a ver qual é o problema, apesar de ter mas sitios onde se poderia por o 'J' como vem primeiro coloca na posicao 9 não permitindo que o 'G' seja colocado. Sei que é uma duvida um bocado exigente, mas é que já estou a matutar à alguns dias e não consigo resolver isto por isso resolvi tentar a ver se alguem tem aqui alguma ideia. Obrigado desde já e desculpem o long post.
  21. zecapistolas

    SICStus Prolog -> Gnu Prolog

    Boas, Tenho código em Prolog, nomeadamente para comunicação através de Sockets, que eu utilizava em Windows porque tinha uma licença do SICStus Prolog para essa plataforma.... Agora que migrei para Linux, não tenho SICStus Prolog, mas tenho Gnu Prolog.... O problema é que estou a ter algumas incompatibilidades.... O ficheiro de teste é o seguinte: :-use_module(library(sockets)). port(60001). force_close:- socket_bk(S), socket_close(S). socket_bk(0). server:- current_host(Host), port(Port), socket('AF_INET', Socket), socket_bind(Socket, 'AF_INET'(Host,Port)), socket_listen(Socket, 5), socket_accept(Socket, _Client, Stream), abolish(socket_bk/1),asserta(socket_bk(Socket)), server_loop(Stream), socket_close(Socket), write('Server Exit'),nl. server_loop(Stream) :- repeat, read(Stream, ClientRequest), write('Received: '), write(ClientRequest), nl, server_input(ClientRequest, ServerReply), format(Stream, '~q.~n', [serverReply]), write('Send: '), write(ServerReply), nl, flush_output(Stream), (ClientRequest == bye; ClientRequest == end_of_file), !. % server_input(+Mensagem, -Resposta) server_input(initialize, R):- R is 29, !. server_input(bye, ok):-!. server_input(end_of_file, ok):-!. server_input(_, invalid) :- !. Ao consultar, aparece este warning: Tudo bem que não passa de um warning, mas depois quando faço "server." para inicializar o Servidor aparece: Alguma dica?! 🤔 cumps
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.