Jump to content

Search the Community

Showing results for tags 'prolog'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Comunidade
    • Sugestões, Críticas ou Dúvidas relativas ao P@P
    • Acerca do P@P
  • Comunidade a Trabalhar
    • Apresentação de Projectos de Programação
    • Downloads
    • Revista PROGRAMAR
  • Desenvolvimento Geral
    • C
    • C++
    • Java
    • Pascal
    • Python
    • Bases de Dados
    • 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 e Automação Industrial
    • Matemática
    • Software de Contabilidade, Finanças e Admin. Pública
    • Dúvidas e Discussão de Programação
    • Tutoriais
    • Snippets / Armazém de Código
  • Outras Áreas
    • Notícias de Tecnologia
    • Dúvidas Gerais
    • Discussão Geral
    • Eventos
    • Anúncios de Emprego
  • 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...

Joined

  • Start

    End


Group


Website


GitHub


LinkedIn


Twitter


Facebook

  1. 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.
  2. 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,
  3. 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).
  4. Boas, queria fazer um contador para me devolver a posição do 0 na lista mas o swi só devolve false, onde errei? contador(0, 0). contador([P|R], posi):- P \= 0, p is posi + 1, contador(R,p).
  5. 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.
  6. 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]
  7. 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
  8. 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.
  9. 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
  10. 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
  11. 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).
  12. 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
  13. 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
  14. Version 2006

    250 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
  15. 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
  16. 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.
  17. Gonka

    Prolog

    Bom dia pessoal. Se puderem tirem-me esta pequena dúvida, mas que me está a causar grandes dores de cabeça. Quero escrever num ficheiro de texto através desta linha de código: escreve:- tell('ficheiro.pl'), write('nova linha'), nl, told. Até aqui tudo bem. O problema surge quando volto a executar a função. Em vez de continuar a escrever na última linha do ficheiro, volta a escrever na primeira linha, apagando tudo o que tinha escrito. Alguém me sabe dizer como posso usar o end_of_file para escrever na última linha?
  18. Boa tarde.. Alguém me pode explicar qual o significado de : :- op( 50, xfy, : ). Obrigado pela ajuda...
  19. Viva, Alguém sabe qual a melhor forma de pôr o Prolog (swi ou gnu) a falar com o PostgreSQL? Obrigado.
  20. Boas! Como remover nós(becos sem saida) num grafo bidirecional em prolog?
  21. Boas, Primeira questão, gostaria de saber se alguem conhece o jogo Yajilin? Segundo, alguem a partir de um codigo em prolog sabe ver o predicado que é suposto correr para por o jogo a dar? Cumprimentos
  22. Boa noite, Agradecia se alguém me pudesse fornecer ajuda com o seguinte. Tenho o seguinte código: homem(adao). homem(caim). homem(abel). pais(adao,caim). pais(adao,abel). pai(F,C):-homem(F),pais(F,C). irmao(I1,I2):-pai(P1,I1),pai(P2,I2),P1 is P2,I1 \= I2. Na última linha, na regra que define um irmão, ocorre o seguinte erro: ERROR: is/2: Arithmetic: `adao/0' is not a function Eu consigo corrigir a regra de modo a contornar o problema do seguinte modo: irmao(I1,I2):-pai(P1,I1),pai(P1,I2),I1 \= I2. % código correcto Contudo, gostava de perceber o que está errado no código inicial, uma vez que a lógica do mesmo me parece correcta. Desde já o meu obrigado. Cumprimentos.
  23. Boas pessoal. Tenho de fazer uma função na linguagem Prolog que pega numa lista de casas de um tabuleiro e remove algumas que estejam fora das regras definidas (neste caso é apnas verificar se estão dentro dos limites impostos pelo tabuleiro). Tentei fazer a seguinte definição recursiva: % limites maximos do tabuleiro limites(5, 5). filtrarCasas([], Validas). filtrarCasas([casa(X, Y, E, G, H, F)|Cs], Validas) :- limites(Xm, Ym), (X =< Xm), (Y =< Ym), (X > 0), (Y > 0), Validas = ([casa(X, Y, E, G, H, F) | Validas]), filtrarCasas(Cs, Validas). filtrarCasas([_|Cs], Validas) :- filtrarCasas(Cs, Validas). A função até filtra as casas de modo correcto, mas o resultado não é o pretendido. Se chamar assim: filtrarCasas([casa(9,9,'A',5,1,2), casa(2,3,'A',5,1,2), casa(0,5,'A',5,1,2)], Validas) o resultado é uma lista infinita com a casa correcta: Validas = [casa(2,3,'A',5,1,2),casa(2,3,'A',5,1,2),casa(2,3,'A',5,1,2),casa(2,3,'A',5,1,2),casa(2,3,'A',5,1,2),casa(2,3,'A',5,1,2),casa(2,3,'A',5,1,2),casa(2,3,'A',5,1,2),casa(2,3,'A',5,1,2),casa(...)|...] Alguma ideia do que está mal na função? Tem uma condição de paragem, não estou mesmo a perceber o porquê da lista infinita... Obrigado desde já.
  24. 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)).
  25. Boas pessoal, alguém sabe se é possível ir buscar a data do sistema no prolog???
×
×
  • 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.