Zobacz poprzedni temat :: Zobacz następny temat |
Autor |
Wiadomość |
vbazyl
Dołączył: 06 Mar 2007
Posty: 94
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Podlasie
|
Wysłany: Wto 12:51, 15 Kwi 2008 Temat postu: Przykładowe zadania do kolokwium |
|
|
Zad 1 - prostokąty (dzięki uprzejmości Ewy, bo moje mi wcięło):
Kod: |
(deftemplate prostokat
(slot nazwa (type string))
(slot A (type float))
(slot B (type float))
; (slot obwod (type float))
)
(deffacts prostokaty
(prostokat (nazwa "duzy")
(A 10)
(B 10)
)
(prostokat (nazwa "sredni")
(A 6)
(B 10)
)
(prostokat (nazwa "maly")
(A 5)
(B 4)
)
(prostokat (nazwa "mniejszy")
(A 2)
(B 3))
)
(deftemplate obwody
(declare (ordered TRUE)) ; lista na ktora mozemy wrzucic nazwy prostokatow i obwody
)
(deftemplate pola
(declare (ordered TRUE)) ; lista na ktora mozemy wrzucic nazwy prostokatow i obwody
)
(defrule oblicz_obwod
?p<prostokat>
(bind ?obwod (+(* 2 ?a) (* 2 ?b)))
;(modify ?p (obwod ?o))
(assert (obwody ?n ?obwod))
(printout t "Obwod prostokata " ?n " wynosi "?obwod crlf)
)
(defrule oblicz_pole
?p<prostokat>
(bind ?pole (* ?a ?b))
;(modify ?p (obwod ?o))
(assert (pola ?n ?pole))
(printout t "Pole prostokata " ?n " wynosi "?pole crlf)
)
(defrule wybierz_najmniejszy_najwiekszy_obwod
?p1 <- (obwody ?n1 ?o1)
?p2 <- (obwody ?n2 ?o2)
?p3 <obwody>= ?o1 ?o2) (>= ?o1 ?o2)
(>= ?o2 ?o3)
)
)
=>
(retract ?p2)
(printout t "Usuwamy prostokat " ?n2 crlf)
)
(defrule wypisz_obwod
(declare (salience -1)) ;ostatnia regula domyslnie 0
?p1 <- (obwody ?n1 ?o1)
?p2 <obwody>= ?o1 ?o2)))
=>
(retract ?p1)
(retract ?p2)
(printout t "Najwiekszy obwod: " ?n1 ", najmniejszy: "?n2 crlf)
)
(defrule wybierz_najmniejsze_najwieksze_pole
?p1 <- (pola ?n1 ?po1)
?p2 <- (pola ?n2 ?po2)
?p3 <pola>= ?po1 ?po2) (>= ?po1 ?po2)
(>= ?po2 ?po3)
)
)
=>
(retract ?p2)
(printout t "Usuwamy prostokat " ?n2 crlf)
)
(defrule wypisz_pole
(declare (salience -1)) ;ostatnia regula domyslnie 0
?p1 <- (pola ?n1 ?po1)
?p2 <pola>= ?po1 ?po2)))
=>
(retract ?p1)
(retract ?p2)
(printout t "Najwieksze pole: " ?n1 ", najmniejsze: "?n2 crlf)
)
(reset)
(run)
|
Zad 2 - faktury (a to już ode mnie):
Kod: |
(deftemplate faktura
(slot nr (type string))
(multislot pozycje (type integer))
(slot wartosc_faktury (type float)(default 0))
)
(deftemplate pozycja
(slot ind_pozycji (type integer))
(slot wartosc (type float))
(slot vat(type integer))
)
(deffacts fakty
(faktura
(nr "15/04/2008")
(pozycje 1 2))
(faktura
(nr "11/09/2001")
(pozycje 1 3))
(pozycja
(ind_pozycji 1)
(wartosc 32.5)
(vat 22))
(pozycja
(ind_pozycji 2)
(wartosc 66.6)
(vat 19))
(pozycja
(ind_pozycji 3)
(wartosc 123.4)
(vat 7))
)
(deftemplate wartosci_pozycji
(declare (ordered TRUE))
)
(defrule oblicz_wartosc
(faktura(nr ?n)(pozycje $? ?pz $?)(wartosc_faktury ?wfa))
(pozycja (ind_pozycji ?pz)(wartosc ?w)(vat ?v))
(test (= ?wfa 0))
=>
(bind ?wf(+ (* ?w (/ ?v 100))?w) )
(assert (wartosci_pozycji ?n ?pz ?wf))
(printout t "wartosc pozycji " ?pz " z faktury " ?n " wynosi " ?wf crlf)
)
(defrule wartosc_clk_faktury
(declare (salience -1))
?f1<-(wartosci_pozycji ?n ?pz ?wf)
?f<-(faktura(nr ?n)(wartosc_faktury ?w))
(bind ?war(+ ?w ?wf))
(modify ?f (wartosc_faktury ?war))
(retract ?f1)
(printout t "wartosc faktury " ?n " po dodaniu " ?pz " wynosi " ?war crlf)
)
(reset)
(run)
|
Ostatnio zmieniony przez vbazyl dnia Pon 16:56, 26 Maj 2008, w całości zmieniany 1 raz
|
|
Powrót do góry |
|
|
|
|
wicher
Dołączył: 07 Mar 2007
Posty: 70
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: z 13 posterunku
|
Wysłany: Wto 20:50, 15 Kwi 2008 Temat postu: |
|
|
A z kim macie zajęcia???
|
|
Powrót do góry |
|
|
vbazyl
Dołączył: 06 Mar 2007
Posty: 94
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Podlasie
|
Wysłany: Śro 1:14, 16 Kwi 2008 Temat postu: |
|
|
Z Kasią Kościuk
|
|
Powrót do góry |
|
|
wicher
Dołączył: 07 Mar 2007
Posty: 70
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: z 13 posterunku
|
Wysłany: Śro 7:23, 16 Kwi 2008 Temat postu: |
|
|
A my mamy z Rybakiem... Do pierwszego koła podał aż 9 przykładowych zadań, no i jeszcze będzie projekt na koniec.
|
|
Powrót do góry |
|
|
vbazyl
Dołączył: 06 Mar 2007
Posty: 94
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Podlasie
|
Wysłany: Czw 12:05, 08 Maj 2008 Temat postu: |
|
|
Czy mógłby ktoś zamieścić rozwiązania pozostałych zadań ze strony Smolińskiej?
|
|
Powrót do góry |
|
|
eewkaa
Dołączył: 01 Mar 2007
Posty: 50
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: z mieszkania
|
Wysłany: Pon 8:31, 19 Maj 2008 Temat postu: |
|
|
zadania od Smolińskiej:
zadanie 4:
Kod: | (deftemplate lokal
(slot wlasciciel (type string))
(slot powierzchnia-calkowita (type float)(default 0))
(multislot pomieszczenia (type integer))
)
(deftemplate pomieszczenie
(slot id-pomieszczenia (type integer))
(slot rodzaj (type string))
(slot powierzchnia (type float))
)
(deffacts lokale
(lokal (wlasciciel "X") (pomieszczenia 1 2 3) )
(pomieszczenie
(id-pomieszczenia 1) (rodzaj "jadalnia") (powierzchnia 4.0) )
(pomieszczenie
(id-pomieszczenia 2) (rodzaj "sypialnia") (powierzchnia 3.0) )
(pomieszczenie
(id-pomieszczenia 3) (rodzaj "pracownia") (powierzchnia 3.5) )
)
(defrule oblicz_powierzchnie_calkowita
?l <-(lokal (wlasciciel ?w) (pomieszczenia $? ?id $?) (powierzchnia-calkowita ?pow_c))
?pom <pomieszczenie>
(bind ?pow_calk (+ ?pow_c ?pow))
(modify ?l (powierzchnia-calkowita ?pow_calk))
(retract ?pom)
)
(defrule wypisz_powierzchnie
(declare (salience -1))
(lokal (wlasciciel ?w) (powierzchnia-calkowita ?pow_c))
=>
(printout t "Powierzchnia calkowita lokalu " ?w " wynosi "?pow_c crlf)
)
(reset)
(run)
|
zadanie 5:
Kod: | (deftemplate zamowienie
(slot typ_produktu (type string)) ; nazwa produktu
(slot liczba_jednostek (type integer))
(slot wartosc_calkowita (type float)(default 0))
(slot ocena (type string)(default "brak"))
)
(deftemplate produkt
(slot nazwa (type string))
(slot cena_jednostkowa (type float))
)
(deffacts zamowienia
(zamowienie (typ_produktu "x") (liczba_jednostek 2) )
(zamowienie (typ_produktu "y") (liczba_jednostek 402) )
(zamowienie (typ_produktu "y") (liczba_jednostek 2) )
(zamowienie (typ_produktu "z") (liczba_jednostek 6) )
(produkt (nazwa "x") (cena_jednostkowa 10.5) )
(produkt (nazwa "y") (cena_jednostkowa 6.0) )
(produkt (nazwa "z") (cena_jednostkowa 50.0) )
)
; regułę obliczającą całkowitą wartość zamówienia na podstawie liczby jednostek oraz ceny jednostkowej (ma wstawiać wynik do slotu wartość_całkowita)
(defrule oblicz_calkowita_wartosc_zamowienia
?z <-(zamowienie (typ_produktu ?tp) (liczba_jednostek ?lj) (wartosc_calkowita ?wc))
?p <produkt>
(bind ?wart_calk (* ?lj ?cj))
(modify ?z (wartosc_calkowita ?wart_calk))
)
(defrule wypisz_calkowita_wartosc_zamowienia
(declare (salience -1))
(zamowienie (typ_produktu ?tp) (liczba_jednostek ?lj) (wartosc_calkowita ?wc))
=>
(printout t "Wartosc calkowita zamowienia " ?tp " wynosi " ?wc crlf)
)
; regułę wstawiającą do slotu Ocena napis Wysoka, jeżeli wartość całkowita
; zamówienia jest większa od 200 lub liczba jednostek jest większa od 400.
(defrule wstaw_ocene
?z <zamowienie> ?wc 200) (> ?lj 400)))
=>
(modify ?z (ocena "Wysoka"))
)
(defrule wypisz_ocene
(declare (salience -2))
(zamowienie (typ_produktu ?tp) (ocena ?o))
=>
(printout t "Ocena zamowienia: " ?tp ": " ?o crlf)
)
(reset)
(run)
|
zadanie6:
Kod: | (deftemplate Rachunek
(slot id-klienta (type string))
(slot liczba-impulsow (type integer))
(slot do-zaplaty (type float))
)
(deftemplate Klient
(slot id-klienta (type string))
(slot imie (type string))
(slot nazwisko (type string))
(slot adres (type string))
(slot kwota-abonamentu (type float))
(slot liczba-impulsow-w-abonamencie (type integer))
(slot czas-uczestnictwa (type integer)) ;w miesiacach
)
(deftemplate Impuls
(slot wartosc (type float)) ;w zlotych
(slot czas-trwania (type integer)) ;w minutach
)
(deffacts Rachunki
(Impuls
(czas-trwania 1) (wartosc 0.2) )
(Klient
(id-klienta "001") (imie "A") (nazwisko "N") (adres "ul. XYZ") (kwota-abonamentu 25.0)
(liczba-impulsow-w-abonamencie 10) (czas-uczestnictwa 4) )
(Klient
(id-klienta "002") (imie "B") (nazwisko "MK") (adres "ul. ABC") (kwota-abonamentu 100.0)
(liczba-impulsow-w-abonamencie 60) (czas-uczestnictwa 20) )
(Klient
(id-klienta "003") (imie "C") (nazwisko "TT") (adres "ul. QWERTY") (kwota-abonamentu 50.0)
(liczba-impulsow-w-abonamencie 30) (czas-uczestnictwa 40) )
(Rachunek (id-klienta "001") (liczba-impulsow 10) )
(Rachunek (id-klienta "002") (liczba-impulsow 70) )
(Rachunek (id-klienta "003") (liczba-impulsow 40) )
)
(defrule wylicz_kwote_do_zaplaty_bez_przekroczenia_abonamentu
?r <-(Rachunek (id-klienta ?id) (liczba-impulsow ?li) (do-zaplaty ?dz))
?k <-(Klient (id-klienta ?id) (kwota-abonamentu ?ka) (liczba-impulsow-w-abonamencie ?liwa)
(czas-uczestnictwa ?cz_ucz))
?i <-(Impuls (czas-trwania ?cz_trw) (wartosc ?wart))
(test (<li>
(modify ?r (do-zaplaty ?ka))
)
(defrule wylicz_kwote_do_zaplaty_bez_znizek
?r <-(Rachunek (id-klienta ?id) (liczba-impulsow ?li) (do-zaplaty ?dz))
?k <-(Klient (id-klienta ?id) (kwota-abonamentu ?ka) (liczba-impulsow-w-abonamencie ?liwa)
(czas-uczestnictwa ?cz_ucz))
?i <Impuls> (- ?li ?liwa) 0) (<cz_ucz>
(bind ?do_zaplaty (+ ?ka (* (- ?li ?liwa) ?wart)))
(modify ?r (do-zaplaty ?do_zaplaty))
)
(defrule wylicz_kwote_do_zaplaty_ze_znzka_5%
?r <-(Rachunek (id-klienta ?id) (liczba-impulsow ?li) (do-zaplaty ?dz))
?k <-(Klient (id-klienta ?id) (kwota-abonamentu ?ka) (liczba-impulsow-w-abonamencie ?liwa)
(czas-uczestnictwa ?cz_ucz))
?i <Impuls> (- ?li ?liwa) 0) (and (> ?cz_ucz 18) (<cz_ucz>
(bind ?zaplata (+ ?ka (* (- ?li ?liwa) ?wart)))
(bind ?do_zaplaty (- ?zaplata (* ?zaplata 0.05)))
(modify ?r (do-zaplaty ?do_zaplaty))
)
(defrule wylicz_kwote_do_zaplaty_ze_znizka_10%
?r <-(Rachunek (id-klienta ?id) (liczba-impulsow ?li) (do-zaplaty ?dz))
?k <-(Klient (id-klienta ?id) (kwota-abonamentu ?ka) (liczba-impulsow-w-abonamencie ?liwa)
(czas-uczestnictwa ?cz_ucz))
?i <Impuls> (- ?li ?liwa) 0) (> ?cz_ucz 36)))
=>
(bind ?zaplata (+ ?ka (* (- ?li ?liwa) ?wart)))
(bind ?do_zaplaty (- ?zaplata (* ?zaplata 0.10)))
(modify ?r (do-zaplaty ?do_zaplaty))
)
(defrule wypisz_wartosc_rachunku
(declare (salience -1))
(Rachunek (id-klienta ?id) (do-zaplaty ?dz))
(Klient (id-klienta ?id) (nazwisko ?n))
=>
(printout t "Klient " ?n " ma do zaplaty " ?dz crlf)
)
(reset)
(run)
|
Ostatnio zmieniony przez eewkaa dnia Pon 8:32, 19 Maj 2008, w całości zmieniany 1 raz
|
|
Powrót do góry |
|
|
denciaq
Dołączył: 29 Paź 2007
Posty: 52
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Wto 22:07, 20 Maj 2008 Temat postu: Mulder and Scully czyli X-FILES |
|
|
Kod: | (deftemplate Kosmita
(slot Imie(type String))
(slot Temperatura(type String))
(slot Atmosfera(type String))
(slot Towarzyskosc(type String))
)
(deftemplate pom1
(slot Imie(type String))
(slot Temperatura(type String))
(slot Atmosfera(type String))
)
(deftemplate pom2
(multislot Imie(type String))
(slot Temperatura(type String))
(slot Atmosfera(type String))
)
(deftemplate pom3
(multislot Imie(type String))
(slot Temperatura(type String))
(slot Atmosfera(type String))
)
(deffacts XFILES
(Kosmita
(Atmosfera "tlenowo-azotowa")
(Imie "ASDDX")
(Temperatura "upal")
(Towarzyskosc "sam")
)
(Kosmita
(Atmosfera "tlenowo-azotowa")
(Imie "SZARAK")
(Temperatura "pokojowa")
(Towarzyskosc "sam")
)
(Kosmita
(Atmosfera "tlenowo-azotowa")
(Imie "SSS")
(Temperatura "upal")
(Towarzyskosc "grupa")
)
(Kosmita
(Atmosfera "tlenowo-azotowa")
(Imie "QQW")
(Temperatura "upal")
(Towarzyskosc "para")
)
(Kosmita
(Atmosfera "tlenowo-azotowa")
(Imie "E.T.")
(Temperatura "upal")
(Towarzyskosc "para")
)
(Kosmita
(Atmosfera "tlenowo-azotowa")
(Imie "SZARAK")
(Temperatura "pokojowa")
(Towarzyskosc "grupa")
)
(Kosmita
(Atmosfera "tlenowo-azotowa")
(Imie "SZARAK1")
(Temperatura "pokojowa")
(Towarzyskosc "grupa")
)
(Kosmita
(Atmosfera "tlenowo-azotowa")
(Imie "SZARAK2")
(Temperatura "pokojowa")
(Towarzyskosc "grupa")
)
(Kosmita
(Atmosfera "tlenowo-azotowa")
(Imie "SZARAK3")
(Temperatura "pokojowa")
(Towarzyskosc "grupa")
)
(Kosmita
(Atmosfera "weglowodory")
(Imie "OBCY")
(Temperatura "upal")
(Towarzyskosc "sam")
)
(Kosmita
(Atmosfera "kwasy")
(Imie "TABOK")
(Temperatura "mroz")
(Towarzyskosc "grupa")
)
(Kosmita
(Atmosfera "kwasy")
(Imie "TABOK2")
(Temperatura "mroz")
(Towarzyskosc "grupa")
)
(Kosmita
(Atmosfera "weglowodory")
(Imie "KKK")
(Temperatura "pokojowa")
(Towarzyskosc "sam")
)
(Kosmita
(Atmosfera "kwasy")
(Imie "QWE")
(Temperatura "mroz")
(Towarzyskosc "grupa")
)
)
(defrule umiesc_samot
?k<Kosmita>
(retract ?k)
(assert (pom1 (Imie ?i)(Atmosfera ?a)(Temperatura ?t)))
(printout t "Pomieszczenie jednoosobowe z atmosfera " ?a " i temperatura " ?t crlf)
)
(defrule umiesc_para
?k<-(Kosmita(Atmosfera ?a)(Imie ?i)(Temperatura ?t)(Towarzyskosc ?tow))
?k2<Kosmita>
(assert (pom2 (Atmosfera ?a)(Temperatura ?t)))
(retract ?k)
(retract ?k2)
(printout t "Pomieszczenie dwuosobowe z atmosfera " ?a " oraz temperatura " ?t crlf)
)
(defrule umiesc_grupe
?k<-(Kosmita(Atmosfera ?a)(Imie ?i)(Temperatura ?t)(Towarzyskosc ?tow))
?k2<-(Kosmita(Atmosfera ?a2)(Imie ?i2)(Temperatura ?t2)(Towarzyskosc ?tow2))
?k3<Kosmita>
(assert (pom3 (Atmosfera ?a)(Temperatura ?t)))
(retract ?k)
(retract ?k2)
(retract ?k3)
(printout t "Pomieszczenie grupowe z atmosfera " ?a " oraz temperatura " ?t crlf)
)
(defrule reszta
(declare (salience -1))
?k<-(Kosmita(Atmosfera ?a)(Imie ?i)(Temperatura ?t)(Towarzyskosc ?tow))
?p<pom3>
(retract ?k)
)
(defrule zgony
(declare (salience -3))
?k<Kosmita>
(printout t "Zgon " ?i crlf)
)
(reset)
(run) |
Ostatnio zmieniony przez denciaq dnia Wto 22:09, 20 Maj 2008, w całości zmieniany 2 razy
|
|
Powrót do góry |
|
|
dziemian_rec
Dołączył: 08 Mar 2007
Posty: 38
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: z nikąd
|
Wysłany: Sob 11:01, 24 Maj 2008 Temat postu: |
|
|
dobra, tylko kto mi powie ocb w tych linijkach:
?p3 <pola>= ?po1 ?po2) (>= ?po1 ?po2)
(>= ?po2 ?po3)
albo
?i <Impuls> (- ?li ?liwa) 0) (> ?cz_ucz 36)))
|
|
Powrót do góry |
|
|
denciaq
Dołączył: 29 Paź 2007
Posty: 52
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Sob 21:04, 24 Maj 2008 Temat postu: |
|
|
jezeli chodzi<Impuls> (<> ) nie ma takiego czegoś, to przy wklejeniu i dodaniu postu wrzuca
|
|
Powrót do góry |
|
|
boro
Dołączył: 27 Lut 2007
Posty: 286
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Pon 17:30, 26 Maj 2008 Temat postu: |
|
|
no dobra, mamy nastepujacy kod:
Kod: | (defrule wybierz_najmniejszy_najwiekszy_obwod
?p1 <- (obwody ?n1 ?o1)
?p2 <- (obwody ?n2 ?o2)
?p3 <obwody>= ?o1 ?o2) (>= ?o1 ?o2)
(>= ?o2 ?o3)
)
)
=>
(retract ?p2)
(printout t "Usuwamy prostokat " ?n2 crlf)
) |
co powinno byc zamiast:
Kod: | ?p3 <obwody>= ?o1 ?o2) (>= ?o1 ?o2)
(>= ?o2 ?o3) |
Kod: | ?p3 <- (obwody ?o1 ?o2) | ????????
Ostatnio zmieniony przez boro dnia Pon 17:33, 26 Maj 2008, w całości zmieniany 2 razy
|
|
Powrót do góry |
|
|
denciaq
Dołączył: 29 Paź 2007
Posty: 52
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Pon 17:35, 26 Maj 2008 Temat postu: |
|
|
powinno byc raczej tak:
?p3 <o>= ?o1 ?o2) (>= ?o1 ?o2)(>= ?o2 ?o3)))
=>
dałem spacje zeby nie pozmieniało
[EDIT]
lol znów i tak pozmieniało aj nie mam cierpliwosc do tego
Ostatnio zmieniony przez denciaq dnia Pon 18:34, 26 Maj 2008, w całości zmieniany 3 razy
|
|
Powrót do góry |
|
|
boro
Dołączył: 27 Lut 2007
Posty: 286
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Pon 17:48, 26 Maj 2008 Temat postu: |
|
|
qrwa, faktycznie to popierdolone forum zamienia znaki na inne.
|
|
Powrót do góry |
|
|
Roberto
Dołączył: 14 Mar 2007
Posty: 76
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Białystok
|
Wysłany: Pon 18:07, 26 Maj 2008 Temat postu: |
|
|
To moze nie robic [ code ] ? i bedzie ok??
|
|
Powrót do góry |
|
|
denciaq
Dołączył: 29 Paź 2007
Posty: 52
Przeczytał: 0 tematów
Ostrzeżeń: 0/5
|
Wysłany: Pon 18:31, 26 Maj 2008 Temat postu: |
|
|
jak zwykly tekst wklejasz to tez jest no wiec nie wyjasnie
Ostatnio zmieniony przez denciaq dnia Pon 18:32, 26 Maj 2008, w całości zmieniany 1 raz
|
|
Powrót do góry |
|
|
Roberto
Dołączył: 14 Mar 2007
Posty: 76
Przeczytał: 0 tematów
Ostrzeżeń: 0/5 Skąd: Białystok
|
Wysłany: Pon 18:48, 26 Maj 2008 Temat postu: |
|
|
niezly lol...
|
|
Powrót do góry |
|
|