-
-
Save gusbemacbe/8ad836256edcfb5edbffe206cad6c9e8 to your computer and use it in GitHub Desktop.
Star Wars – Unknown Regions Planets Questions
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;----------- Módulo Principal ----------- | |
(import nrc.fuzzy.*) | |
;Templates das Questões | |
(deftemplate questao | |
(slot texto) | |
(slot respostaTipo) | |
(slot topico)) | |
;Template das Respostas | |
(deftemplate resposta | |
(slot texto) | |
(slot topico)) | |
;Template das Sugestoes | |
(deftemplate sugestoes | |
(slot planeta) | |
(slot descricao) | |
(slot maisInfo)) | |
;----------- Variavéis -------------- | |
;A investigação da Aliança da Nova República em relação aos panetas perdidos das Região Desconhecida cujas informações armazenadas na robô Jess. | |
;Distância do Coruscant | |
(defglobal ?*gVarDistanciaDeCoruscant* = (new nrc.fuzzy.FuzzyVariable "distanciaDeCoruscant" 0.0 30000.0 "parsecs")) | |
;Temperatura dos Planetas | |
(defglobal ?*gVarTemperatura* = (new nrc.fuzzy.FuzzyVariable "temperatura" 0 8000 "K")) | |
;Planetas Vizinhos | |
(defglobal ?*gVarPlanetasVizinhos* = (new nrc.fuzzy.FuzzyVariable "distanciaPlanetasVizinhos" 0.0 400000.0 "d")) | |
;Raio em termos de unidades coruscantenses | |
(defglobal ?*gVarTamanho* = (new nrc.fuzzy.FuzzyVariable "tamanho" 0 500 "EU")) | |
;Quando o planeta foi descoberto | |
(defglobal ?*gVarDescobertaTempo* = (new nrc.fuzzy.FuzzyVariable "descoberta" 50000BBY 400ABY)) | |
(call nrc.fuzzy.FuzzyValue setMatchThreshold 0.1) | |
;------------ Lista de Questões para ser Perguntadas ------------ | |
(deffacts questao | |
"Sistema pergntou Questões" | |
(questao (topico distanciaDeCoruscant) (respostaTipo numero) | |
(texto "Q. A quantos parsecs longe de Coruscant o planeta deveria estar? [Escolha das opções 1 - 3] | |
1. Perto | |
2. Um pouco mais | |
3. Realmente muito longe | |
Escolha um numero - ")) | |
(questao (topico temperatura) (respostaTipo numero) | |
(texto "Q. Quanta temperatura o planeta deveria ser? [Escolha das opções 1 - 4] | |
1. Muito quente | |
2. Quente | |
3. Normalmente quente | |
4. Frio | |
5. Muito frio | |
Escolha um numero - ")) | |
(questao (topico distanciaPlanetasVizinhos) (respostaTipo number) | |
(texto "Q. A quão perto de sua estrela o planeta deveria estar? [Escolha das opções 1 - 3] | |
1. Muito perto | |
2. Não tão perto | |
3. Muito longe | |
Escolha um numero - ")) | |
(questao (topico tamanho) (respostaTipo numero) | |
(text "Q. Quão grande o planeta deveria ser? [Escolha das opções 1 - 3] | |
1. Gigante | |
2. Como Coruscant | |
3. Pequeno | |
Escolha um numero - ")) | |
(questao (topico descoberta) (respostaTipo numero) | |
(text "Q. Você quer um planeta dos recém-descobertos? [Escolha das opções 1 - 2] | |
1. Sim, muito recente. | |
2. Não, pode ser tão antigo. | |
Choose a number - ")) | |
) | |
(defglobal ?*crlf* = " ") | |
;--------------- Funções para as respostas do mapa --------------- | |
(deffunction mapaDistanciaCoruscant (?ans) | |
"Mapeando a distância de Coruscant para um Valor" | |
(if (eq ?ans 1) then (assert (valdistanciaDeCoruscant (new nrc.fuzzy.FuzzyValue ?*gVarDistanciaDeCoruscant* "pertoA")))) | |
(if (eq ?ans 2) then (assert (valdistanciaDeCoruscant (new nrc.fuzzy.FuzzyValue ?*gVarDistanciaDeCoruscant* "longeA")))) | |
(if (eq ?ans 3) then (assert (valdistanciaDeCoruscant (new nrc.fuzzy.FuzzyValue ?*gVarDistanciaDeCoruscant* "muitoLonge")))) | |
) | |
(deffunction mapTemperatura (?ans) | |
"Mpaeando a Temperatura para o Valor" | |
(if (eq ?ans 1) then (assert (valTemperatura (new nrc.fuzzy.FuzzyValue ?*gVarTemperatura* "muitoQuente")))) | |
(if (eq ?ans 2) then (assert (valTemperatura (new nrc.fuzzy.FuzzyValue ?*gVarTemperatura* "quente")))) | |
(if (eq ?ans 3) then (assert (valTemperatura (new nrc.fuzzy.FuzzyValue ?*gVarTemperatura* "normalmente")))) | |
(if (eq ?ans 4) then (assert (valTemperatura (new nrc.fuzzy.FuzzyValue ?*gVarTemperatura* "frio")))) | |
(if (eq ?ans 5) then (assert (valTemperatura (new nrc.fuzzy.FuzzyValue ?*gVarTemperatura* "muitoFrio")))) | |
) | |
(deffunction mapdistanciaPlanetasVizinhos (?ans) | |
"Mapeando a distância de uma estrela vizinha para um valor" | |
(if (eq ?ans 1) then (assert (valdistanciaPlanetasVizinhos (new nrc.fuzzy.FuzzyValue ?*gVarPlanetasVizinhos* "pertoA")))) | |
(if (eq ?ans 2) then (assert (valdistanciaPlanetasVizinhos (new nrc.fuzzy.FuzzyValue ?*gVarPlanetasVizinhos* "longeA")))) | |
(if (eq ?ans 3) then (assert (valdistanciaPlanetasVizinhos (new nrc.fuzzy.FuzzyValue ?*gVarPlanetasVizinhos* "muitoLonge")))) | |
) | |
(deffunction mapaTamanho (?ans) | |
"Mapeando a distância do raio de um planeta para um valor" | |
(if (eq ?ans 1) then (assert (valTamanho (new nrc.fuzzy.FuzzyValue ?*gVarTamanho* "grande")))) | |
(if (eq ?ans 2) then (assert (valTamanho (new nrc.fuzzy.FuzzyValue ?*gVarTamanho* "medio")))) | |
(if (eq ?ans 3) then (assert (valTamanho (new nrc.fuzzy.FuzzyValue ?*gVarTamanho* "pequeno")))) | |
) | |
(deffunction mapaDescobertaTempo (?ans) | |
"Mapping Discovery Time to a Value" | |
(if (eq ?ans 1) then (assert (valDescoberta (new nrc.fuzzy.FuzzyValue ?*gVarDescobertaTempo* "novo")))) | |
(if (eq ?ans 2) then (assert (valDescoberta (new nrc.fuzzy.FuzzyValue ?*gVarDescobertaTempo* "antigo")))) | |
) | |
;----------------- Iniciando o módulo ----------------- | |
(defmodule initialize) | |
(defrule initialize | |
(declare (salience 100)) | |
=> | |
(load-package nrc.fuzzy.jess.FuzzyFunctions) | |
;Distância de Coruscant | |
(bind ?xPertoA (create$ 4.0 3500.0)) | |
(bind ?yPertoA (create$ 1.0 0.0)) | |
(?*gVarDistanciaDeCoruscant* addTerm "pertoA" ?xPertoA ?yPertoA 2) | |
(bind ?xlonge (create$ 3500.0 8000.0)) | |
(bind ?ylonge (create$ 0.0 1.0)) | |
(?*gVarDistanciaDeCoruscant* addTerm "longeA" ?xlonge ?ylonge 2) | |
(?*gVarDistanciaDeCoruscant* addTerm "muitoLonge" "muito longe") | |
;Temperatura | |
(bind ?xquente (create$ 500.0 2000.0)) | |
(bind ?yquente (create$ 0.0 1.0)) | |
(?*gVarTemperatura* addTerm "quente" ?xquente ?yquente 2) | |
(bind ?xfrio (create$ 50.0 500.0)) | |
(bind ?yfrio (create$ 1.0 0.0)) | |
(?*gVarTemperatura* addTerm "frio" ?xfrio ?yfrio 2) | |
(?*gVarTemperatura* addTerm "muitoQuente" "muito quente") | |
(?*gVarTemperatura* addTerm "muitoFrio" "muito frio") | |
(?*gVarTemperatura* addTerm "normamente" "não tão hot e (não frio)") | |
;Distância dos Planetas Vizinhos | |
(bind ?xPertoA (create$ 0.01 1500)) | |
(bind ?yPertoA (create$ 1.0 0.0)) | |
(?*gVarPlanetasVizinhos* addTerm "pertoA" ?xPertoA ?yPertoA 2) | |
(bind ?xlonge (create$ 1500 400000)) | |
(bind ?ylonge (create$ 0.0 1.0)) | |
(?*gVarPlanetasVizinhos* addTerm "longeA" ?xlonge ?ylonge 2) | |
(?*gVarPlanetasVizinhos* addTerm "muitoLonge" "muito longe") | |
;Tamanho do Planeta | |
(bind ?xGrande (create$ 2 500)) | |
(bind ?yGrande (create$ 0.0 1.0)) | |
(?*gVarTamanho* addTerm "grande" ?xTamanho ?yTamanho 2) | |
(bind ?xPequeno (create$ 0 2)) | |
(bind ?yPequeno (create$ 1.0 0.0)) | |
(?*gVarTamanho* addTerm "pequeno" ?xPequeno ?yPequeno 2) | |
(?*gVarTamanho* addTerm "medio" "normalmente como Coruscant") | |
;Descoberta Cronólgica | |
(bind ?xAntigo (create$ 50000BBY 0BBY)) | |
(bind ?yAntigo (create$ 1.0 0.0)) | |
(?*gVarDescobertaTempo* addTerm "antigo" ?xAntigo ?yAntigo 2) | |
(bind ?xNovo (create$ 0ABY 400ABY)) | |
(bind ?yNovo (create$ 0.0 1.0)) | |
(?*gVarDescobertaTempo* addTerm "novo" ?xNovo ?yNovo 2) | |
) | |
;-------------- Módulo de Perguntar -------------- | |
(defmodule perguntar) | |
(deffunction perguntarUtilizador (?questao ?respostaTipo ?topico) | |
"Obtenha respostas de perguntas postas" | |
(bind ?resposta "") | |
(while (not (numberp ?resposta)) do | |
(printout t ?questao " ") | |
(bind ?questao (read))) | |
(if(eq ?topico distanciaDeCoruscant) then (mapaDistanciaCoruscant ?resposta)) | |
(if(eq ?topico temperatura) then (mapTemperatura ?resposta)) | |
(if(eq ?topico distanciaPlanetasVizinhos) then (mapdistanciaPlanetasVizinhos ?resposta)) | |
(if(eq ?topico tamanho) then (mapaTamanho ?resposta)) | |
(if(eq ?topico descoberta) then (mapaDescobertaTempo ?resposta)) | |
(return ?resposta)) | |
;Faça perguntas individuais com base no tópico | |
(defrule perguntar::perguntarQuestaoPorTopico | |
"Faça perguntas com base em tópicos e grandes respostas" | |
(declare (auto-focus TRUE)) | |
(MAIN::questao (topico ?topico) (texto ?texto) (respostaTipo ?respostaTipo)) | |
(not (MAIN::resposta (topico ?topico))) | |
?perguntar <- (MAIN::perguntar ?topico) | |
=> | |
(bind ?resposta (perguntarUtilizador ?texto ?respostaTipo ?topico)) | |
(assert (resposta (topico ?topico) (texto ?resposta))) | |
) | |
;------------------ Módulo de boas-vindas que exibe a mensagem inicial ------------------ | |
(defmodule bemvindo) | |
(defrule bemvindoMensagem | |
=> | |
(printout t "Bem-vindo, sou a Robô Jess, responsável pela astronomia da Região Desconhecida" crlf) | |
(printout t "Você precisa de minha ajuda para encontrar os planetas perdidos na Região Desconhecida" crlf) | |
(printout t "Bem, este sistema é exactamente para você." crlf) | |
(printout t "Fale-me o seu nome <Enter>: ") | |
(bind ?nome (read)) | |
(printout t "Hello "?nome crlf) | |
(printout t "Responda as seguintes perguntas que nos ajudarão a entender quais são seus requisitos" crlf) | |
) | |
;Módulo de fetchRespostas Module obtém as respostas do utilizador | |
(defmodule fetchRespostas) | |
(defrule fetchdistanciaDeCoruscant | |
=> | |
(assert perguntar distanciaDeCoruscant)) | |
) | |
(defrule fetchTemperatura | |
=> | |
(assert (perguntar temperatura)) | |
) | |
(defrule fetchdistanciaPlanetasVizinhos | |
=> | |
(assert (perguntar distanciaPlanetasVizinhos)) | |
) | |
(defrule fetchTamanho | |
=> | |
(assert (perguntar tamanho)) | |
) | |
(defrule fetchDescoberta | |
=> | |
(assert (perguntar descoberta)) | |
) | |
;----------------- Sugestões dos Planetas ----------------- | |
(defmodule sugerir) | |
;Sugestão 1 | |
(defrule Illum | |
(valdistanciaDeCoruscant ?dE&: (fuzzy-match ?dE "mais_ou_menos pertoA")) | |
(valTemperatura ?t&: (fuzzy-match ?t "mais_ou_menos muitoFrio")) | |
(valdistanciaPlanetasVizinhos ?dP&: (fuzzy-match ?dP "mais_ou_menos pertoA")) | |
(valTamanho ?vS&: (fuzzy-match ?vS "mais_ou_menos pequeno")) | |
(valDescoberta ?dT&: (fuzzy-match ?dT "velho")) | |
=> | |
(assert (MAIN::sugestoes | |
(planeta "Illum") | |
(descricao "Detalhes: | |
Distância de Coruscant: 3000 parsecs | |
Período orbital: 301 dias | |
Temperature: 228.15 K | |
Descoberto em: 18BBY") | |
(maisInfo "http://starwars.wikia.com/wiki/Ilum"))) | |
) | |
;Sugestão 2 | |
(defrule Csilla | |
(valdistanciaDeCoruscant ?dE&: (fuzzy-match ?dE "pertoA")) | |
(valTemperatura ?t&: (fuzzy-match ?t "muitoFrio")) | |
(valdistanciaPlanetasVizinhos ?dP&: (fuzzy-match ?dP "mais_ou_menos pertoA")) | |
(valTamanho ?vS&: (fuzzy-match ?vS "mais_ou_menos medio")) | |
(valDescoberta ?dT&: (fuzzy-match ?dT "velho")) | |
=> | |
(assert (MAIN::sugestoes | |
(planeta "Csilla") | |
(descricao "Detalhes : | |
Distância de Coruscant: 3000 parsecs | |
Período orbital: 462 Days | |
Temperature: 213.15 K | |
Descoberto em: 25000BBY") | |
(maisInfo "http://starwars.wikia.com/wiki/Csilla/Legends"))) | |
) | |
;Sugestão 3 | |
(defrule KlasseEphemora | |
(valdistanciaDeCoruscant ?dE&: (fuzzy-match ?dE "mais_ou_menos longeA")) | |
(valTemperatura ?t&: (fuzzy-match ?t "muitoFrio")) | |
(valdistanciaPlanetasVizinhos ?dP&: (fuzzy-match ?dP "mais_ou_menos pertoA")) | |
(valTamanho ?vS&: (fuzzy-match ?vS "muito grande")) | |
(valDescoberta ?dT&: (fuzzy-match ?dT "antigo")) | |
=> | |
(assert (MAIN::sugestoes | |
(planeta "Klasse Ephemora") | |
(descricao "Detalhes: | |
Distância de Coruscant: 3700 parsecs | |
Período orbital: 378 dias | |
Temperatura: 204.15 K | |
Descoberto em: 14500BBY") | |
(maisInfo "http://starwars.wikia.com/wiki/Klasse_Ephemora_A"))) | |
) | |
;Sugestão 4 | |
(defrule Mobus | |
(valdistanciaDeCoruscant ?dE&: (fuzzy-match ?dE "mais_ou_menos pertoA")) | |
(valTemperatura ?t&: (fuzzy-match ?t "mais_ou_menos frio")) | |
(valdistanciaPlanetasVizinhos ?dP&: (fuzzy-match ?dP "mais_ou_menos pertoA")) | |
(valTamanho ?vS&: (fuzzy-match ?vS "mais_ou_menos grande")) | |
(valDescoberta ?dT&: (fuzzy-match ?dT "antigo")) | |
=> | |
(assert (MAIN::sugestoes | |
(planeta "Mobus") | |
(descricao "Detalhes: | |
Distância de Coruscant: 2500 parsecs | |
Período Orbital: 1340 dias | |
Temperatura: 203 K | |
Descoberto em: 14000BBY") | |
(maisInfo "http://starwars.wikia.com/wiki/Mobus"))) | |
) | |
;Sugestão 5 | |
(defrule RakataPrime | |
(valdistanciaDeCoruscant ?dE&: (fuzzy-match ?dE "mais_ou_menos longeA")) | |
(valTemperatura ?t&: (fuzzy-match ?t "muitoQuente")) | |
(valdistanciaPlanetasVizinhos ?dP&: (fuzzy-match ?dP "mais_ou_menos muitoLonge")) | |
(valTamanho ?vS&: (fuzzy-match ?vS "mais_ou_menos medio")) | |
(valDescoberta ?dT&: (fuzzy-match ?dT "velho")) | |
=> | |
(assert (MAIN::sugestoes | |
(planeta "Rakata Prime") | |
(descricao "Detalhes: | |
Distância de Coruscant: 3900 parsecs | |
Período orbital: 278 dias | |
Temperatura: 318.15 K | |
Descoberto em: 35000BBY") | |
(maisInfo "http://starwars.wikia.com/wiki/Lehon"))) | |
) | |
;Sugestão 6 | |
(defrule Lwhekk | |
(valdistanciaDeCoruscant ?dE&: (fuzzy-match ?dE "mais_ou_menos muitoLonge")) | |
(valTemperatura ?t&: (fuzzy-match ?t "mais_ou_menos quente")) | |
(valdistanciaPlanetasVizinhos ?dP&: (fuzzy-match ?dP "mais_ou_menos muitoLonge")) | |
(valTamanho ?vS&: (fuzzy-match ?vS "mais_ou_menos pequeno")) | |
(valDescoberta ?dT&: (fuzzy-match ?dT "antigo")) | |
=> | |
(assert (MAIN::sugestoes | |
(planeta "Lwhekk") | |
(descricao "Detalhes: | |
Distância de Coruscant: 7200 parsecs | |
Período orbital: 344 dias | |
Temperatura: 329 K | |
Descoberto em: 2BBY") | |
(maisInfo "http://starwars.wikia.com/wiki/Lwhekk"))) | |
) | |
;Sugestão 7 | |
(defrule ZonamaSekot | |
(valdistanciaDeCoruscant ?dE&: (fuzzy-match ?dE "mais_ou_menos muitoLonge")) | |
(valTemperatura ?t&: (fuzzy-match ?t "normalmente")) | |
(valdistanciaPlanetasVizinhos ?dP&: (fuzzy-match ?dP "longeA")) | |
(valTamanho ?vS&: (fuzzy-match ?vS "mais_ou_menos medio")) | |
(valDescoberta ?dT&: (fuzzy-match ?dT "velho")) | |
=> | |
(assert (MAIN::sugestoes | |
(planeta "Zonama Sekot") | |
(descricao "Detalhes: | |
Distância de Coruscant: 5550 pasrecs | |
Período orbital: Variados | |
Temperatura: 294.15 K | |
Descoberto em: 89BBY") | |
(maisInfo "http://starwars.wikia.com/wiki/Zonama_Sekot"))) | |
) | |
;Sugestão 8 | |
(defrule Zakuul | |
(valdistanciaDeCoruscant ?dE&: (fuzzy-match ?dE "mais_ou_menos muitoLonge")) | |
(valTemperatura ?t&: (fuzzy-match ?t "frio")) | |
(valdistanciaPlanetasVizinhos ?dP&: (fuzzy-match ?dP "longe")) | |
(valTamanho ?vS&: (fuzzy-match ?vS "mais_ou_menos medio")) | |
(valDescoberta ?dT&: (fuzzy-match ?dT "velho")) | |
=> | |
(assert (MAIN::sugestoes | |
(planeta "Zakuul") | |
(descricao "Detalhes: | |
Distância de Coruscant: 7500 parsecs | |
Período orbital: 364 dias | |
Temperatura: 285.15 K | |
Descoberto em: 3600BBY") | |
(maisInfo "http://starwars.wikia.com/wiki/Zakuul"))) | |
) | |
;Sugestão 9 | |
(defrule Odessen | |
(valdistanciaDeCoruscant ?dE&: (fuzzy-match ?dE "mais_ou_menos muitoLonge")) | |
(valTemperatura ?t&: (fuzzy-match ?t "very hot")) | |
(valdistanciaPlanetasVizinhos ?dP&: (fuzzy-match ?dP "muito pertoA")) | |
(valTamanho ?vS&: (fuzzy-match ?vS "medio")) | |
(valDescoberta ?dT&: (fuzzy-match ?dT "velho")) | |
=> | |
(assert (MAIN::sugestoes | |
(planeta "Odessen") | |
(descricao "Detalhes: | |
Distância de Coruscant: 7800 parsecs | |
Período orbital: 356 dias | |
Temperatura: 290 K | |
Descoberto em: 3632BBY") | |
(maisInfo "http://starwars.wikia.com/wiki/Odessen"))) | |
) | |
;Sugestão 10 | |
(defrule Endelaan | |
(valdistanciaDeCoruscant ?dE&: (fuzzy-match ?dE "muito muitoLonge")) | |
(valTemperatura ?t&: (fuzzy-match ?t "muito muitoFrio")) | |
(valdistanciaPlanetasVizinhos ?dP&: (fuzzy-match ?dP "muito muitoLonge")) | |
(valTamanho ?vS&: (fuzzy-match ?vS "mais_ou_menos grande")) | |
(valDescoberta ?dT&: (fuzzy-match ?dT "antigo")) | |
=> | |
(assert (MAIN::sugestoes | |
(planeta "Endelaan") | |
(descricao "Detalhes: | |
Distância de Coruscant: 15000 parsecs | |
Período orbital: 368 dias | |
Temperatura: 150 K | |
Descoberto em: 45520BBY") | |
(maisInfo "http://starwars.wikia.com/wiki/Endelaan"))) | |
) | |
;Sugestão 11 | |
(defrule Altiria | |
(valdistanciaDeCoruscant ?dE&: (fuzzy-match ?dE "muitoLonge")) | |
(valTemperatura ?t&: (fuzzy-match ?t "muito quente")) | |
(valdistanciaPlanetasVizinhos ?dP&: (fuzzy-match ?dP "muito muitoLonge")) | |
(valTamanho ?vS&: (fuzzy-match ?vS "medio")) | |
(valDescoberta ?dT&: (fuzzy-match ?dT "antigo")) | |
=> | |
(assert (MAIN::sugestoes | |
(planet "Altiria") | |
(descricao "Detalhes: | |
Distância de Coruscant: 8400 pasecs | |
Período orbital: 338 dias | |
Temperatura: 321 K | |
Descoberto em: 6000BBY") | |
(maisInfo "http://starwars.wikia.com/wiki/Altiria/Anarris"))) | |
) | |
;Sugestão 12 | |
(defrule DingBriar | |
(valdistanciaDeCoruscant ?dE&: (fuzzy-match ?dE "muitoLonge")) | |
(valTemperatura ?t&: (fuzzy-match ?t "muito quente")) | |
(valdistanciaPlanetasVizinhos ?dP&: (fuzzy-match ?dP "muito pertoA")) | |
(valTamanho ?vS&: (fuzzy-match ?vS "muito grande")) | |
(valDescoberta ?dT&: (fuzzy-match ?dT "novo")) | |
=> | |
(assert (MAIN::sugestoes | |
(planeta "Ding Briar") | |
(descricao "Detalhes: | |
Distância de Coruscant: 4100 Ly | |
Período orbital: 2456 Days | |
Temperatura: 880 K | |
Descoberto em: 45ABY") | |
(maisInfo "http://starwars.wikia.com/wiki/Ding_Briar"))) | |
) | |
;Sugestão 13 | |
(defrule Durace | |
(valdistanciaDeCoruscant ?dE&: (fuzzy-match ?dE "longeA")) | |
(valTemperatura ?t&: (fuzzy-match ?t "frio")) | |
(valdistanciaPlanetasVizinhos ?dP&: (fuzzy-match ?dP "muitoLonge")) | |
(valTamanho ?vS&: (fuzzy-match ?vS "grande")) | |
(valDescoberta ?dT&: (fuzzy-match ?dT "velho")) | |
=> | |
(assert (MAIN::sugestoes | |
(planeta "Durace") | |
(descricao "Detalhes: | |
Distância de Coruscant: 3200 parsecs | |
Período orbital: 345 dias | |
Temperatura: 280 K | |
Descoberto em: 5000BBY") | |
(maisInfo "http://starwars.wikia.com/wiki/Durace"))) | |
) | |
;Sugestão 14 | |
(defrule Fern | |
(valdistanciaDeCoruscant ?dE&: (fuzzy-match ?dE "longeA")) | |
(valTemperatura ?t&: (fuzzy-match ?t "muitoFrio")) | |
(valdistanciaPlanetasVizinhos ?dP&: (fuzzy-match ?dP "pertoA")) | |
(valTamanho ?vS&: (fuzzy-match ?vS "grande")) | |
(valDescoberta ?dT&: (fuzzy-match ?dT "velho")) | |
=> | |
(assert (MAIN::sugestoes | |
(planeta "Fern") | |
(descricao "Detalhes: | |
Distância de Coruscant: 3100 parsecs | |
Período orbital: 335 dias | |
Temperatura: 175.45 K | |
Descoberto em: 13500BBY") | |
(maisInfo "http://starwars.wikia.com/wiki/Fern"))) | |
) | |
;Sugestão 15 | |
(defrule GerapsSule | |
(valdistanciaDeCoruscant ?dE&: (fuzzy-match ?dE "longeA")) | |
(valTemperatura ?t&: (fuzzy-match ?t "muitoFrio")) | |
(valdistanciaPlanetasVizinhos ?dP&: (fuzzy-match ?dP "pertoA")) | |
(valTamanho ?vS&: (fuzzy-match ?vS "grande")) | |
(valDescoberta ?dT&: (fuzzy-match ?dT "velho")) | |
=> | |
(assert (MAIN::sugestoes | |
(planeta "Geraps Sule") | |
(descricao "Detalhes: | |
Distância de Coruscant: 3152 parsecs | |
Período orbital: 2138 dias | |
Temperatura: 125.32 K | |
Descoberto em: 30000BBY") | |
(maisInfo "http://starwars.wikia.com/wiki/Geraps_Sule"))) | |
) | |
;Sugestão 16 | |
(defrule Giaca | |
(valdistanciaDeCoruscant ?dE&: (fuzzy-match ?dE "muitoLonge")) | |
(valTemperatura ?t&: (fuzzy-match ?t "normalmente")) | |
(valdistanciaPlanetasVizinhos ?dP&: (fuzzy-match ?dP "muitoLonge")) | |
(valTamanho ?vS&: (fuzzy-match ?vS "grande")) | |
(valDescoberta ?dT&: (fuzzy-match ?dT "novo")) | |
=> | |
(assert (MAIN::sugestoes | |
(planeta "Giaca") | |
(descricao "Detalhes: | |
Distância de Coruscant: 7230 parsecs | |
Período orbital: 414 dias | |
Temperatura: 296.6 K | |
Descoberto em: 830ABY") | |
(maisInfo "http://starwars.wikia.com/wiki/Giaca"))) | |
) | |
;Sugestão 16 | |
(defrule Irkalla | |
(valdistanciaDeCoruscant ?dE&: (fuzzy-match ?dE "muitoLonge")) | |
(valTemperatura ?t&: (fuzzy-match ?t "normalmente")) | |
(valdistanciaPlanetasVizinhos ?dP&: (fuzzy-match ?dP "muitoLonge")) | |
(valTamanho ?vS&: (fuzzy-match ?vS "medio")) | |
(valDescoberta ?dT&: (fuzzy-match ?dT "velho")) | |
=> | |
(assert (MAIN::sugestoes | |
(planeta "Irkalla") | |
(descricao "Detalhes: | |
Distância de Coruscant: 6330 parsecs | |
Período orbital: 410 dias | |
Temperatura: 293.3 K | |
Descoberto em: 25000BBY") | |
(maisInfo "http://starwars.wikia.com/wiki/Irkalla"))) | |
) | |
;Sugestão 17 | |
(defrule KroVar | |
(valdistanciaDeCoruscant ?dE&: (fuzzy-match ?dE "muitoLonge")) | |
(valTemperatura ?t&: (fuzzy-match ?t "normalmente")) | |
(valdistanciaPlanetasVizinhos ?dP&: (fuzzy-match ?dP "muitoLonge")) | |
(valTamanho ?vS&: (fuzzy-match ?vS "medio")) | |
(valDescoberta ?dT&: (fuzzy-match ?dT "velho")) | |
=> | |
(assert (MAIN::sugestoes | |
(planeta "Kro Var") | |
(descricao "Detalhes: | |
Distância de Coruscant: 11500 parsecs | |
Período orbital: 312 dias | |
Temperatura: 273.3 K | |
Descoberto em: 28BBY") | |
(maisInfo "http://starwars.wikia.com/wiki/Kro_Var"))) | |
) | |
;Sugestão 18 | |
(defrule Qoribu | |
(valdistanciaDeCoruscant ?dE&: (fuzzy-match ?dE "muitoLonge")) | |
(valTemperatura ?t&: (fuzzy-match ?t "muitoFrio")) | |
(valdistanciaPlanetasVizinhos ?dP&: (fuzzy-match ?dP "mais_ou_menos pertoA")) | |
(valTamanho ?vS&: (fuzzy-match ?vS "grande")) | |
(valDescoberta ?dT&: (fuzzy-match ?dT "novo")) | |
=> | |
(assert (MAIN::sugestoes | |
(planeta "Qoribu") | |
(descricao "Detalhes: | |
Distância de Coruscant: 12500 parsecs | |
Período orbital: 1312 dias | |
Temperatura: 153.7 K | |
Descoberto em: 0ABY") | |
(maisInfo "http://starwars.wikia.com/wiki/Qoribu"))) | |
) | |
;Sugestão 19 | |
(defrule Quethold | |
(valdistanciaDeCoruscant ?dE&: (fuzzy-match ?dE "muitoLonge")) | |
(valTemperatura ?t&: (fuzzy-match ?t "frio")) | |
(valdistanciaPlanetasVizinhos ?dP&: (fuzzy-match ?dP ""mais_ou_menos pertoA")) | |
(valTamanho ?vS&: (fuzzy-match ?vS "grande")) | |
(valDescoberta ?dT&: (fuzzy-match ?dT "novo")) | |
=> | |
(assert (MAIN::sugestoes | |
(planeta "Quethold") | |
(descricao "Detalhes: | |
Distância de Coruscant: 13300 parsecs | |
Período orbital: 334 dias | |
Temperatura: 193.7 K | |
Descoberto em: 0ABY") | |
(maisInfo "http://starwars.wikia.com/wiki/Quethold"))) | |
) | |
;--------------- Resumindo todos os resultados --------------- | |
(defmodule report) | |
(defquery getResultados | |
(MAIN::sugestoes | |
(planeta ?planeta) | |
(descricao ?descricao) | |
(maisInfo ?maisInfo)) | |
) | |
;--------------- Exibindo todos os resultados --------------- | |
(defrule getTodosResultados | |
=> | |
(bind ?resultado (run-query* getResultados)) | |
(bind ?i 0) | |
(printout t crlf "--------- Estes planetas correspondem aos seus critérios --------"crlf) | |
(while (?resultado next) do | |
(printout t crlf) | |
(printout t "Nome do planeta: " (?resultado getString planeta) crlf) | |
(printout t "Descrição do planeta: " (?resultado getString descricao) crlf) | |
(printout t "Mais informação: " (?resultado getString maisInfo) crlf) | |
(++ ?i)) | |
(if (eq ?i 0) then | |
(printout t "Opa, não encontro nenhum planeta que corresponda às suas necessidades, no meu banco de dados." crlf)) | |
) | |
;Iniciando a aplicação | |
(reset) | |
(focus initialize bemvindo fetchRespostas sugerir report) | |
(run) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment