Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:prolog:prolog_lab:reprezentacja_wiedzy [2009/03/17 20:04]
holownia
pl:prolog:prolog_lab:reprezentacja_wiedzy [2019/06/27 15:50] (aktualna)
Linia 180: Linia 180:
 </​code>​ </​code>​
  
-Dla celu a(X) X zostaje ​zunifikowany ​z 1 - c(1). Reguła jest prawdziwa dla X=2, ale Prolog nie znajdzie takiego rozwiązania,​ bo uniemożliwiony został nawrót. d(1) przy takiej bazie wiedzy nie jest prawdziwe.+Dla celu a(X) X nie zostanie ​zunifikowany(odpinterpretera:​ No.) Reguła jest prawdziwa dla X=2, ale Prolog nie znajdzie takiego rozwiązania,​ bo uniemożliwiony został nawrót. d(1) przy takiej bazie wiedzy nie jest prawdziwe.
  
 __Przykład 3__:\\ __Przykład 3__:\\
Linia 223: Linia 223:
 Po napotkaniu cut odcinane są także pozostałe reguły predykatu. Dlaczego wobec tego a(3) jednak zwraca prawdę? Po napotkaniu cut odcinane są także pozostałe reguły predykatu. Dlaczego wobec tego a(3) jednak zwraca prawdę?
  
-Przykłady inspirowane [[http://​en.wikibooks.org/​wiki/​Programming:​Prolog_Cuts_and_Negation|Prolog Cuts and Negation]]+Przykłady inspirowane [[http://​en.wikibooks.org/​wiki/​Prolog/​Cuts_and_Negation|Prolog Cuts and Negation]]
  
 **Ćwiczenie** **Ćwiczenie**
Linia 301: Linia 301:
 Przy ich użyciu można skonstruować odpowiednik operatora \+ (negacja) - predykat not/0, który z logicznego punktu widzenia mógłby wyglądać tak: Przy ich użyciu można skonstruować odpowiednik operatora \+ (negacja) - predykat not/0, który z logicznego punktu widzenia mógłby wyglądać tak:
  
-  ​not(P) :- P,​!,​fail;​true.+<code prolog>​ 
 +not(P) :- P,​!,​fail;​true. 
 +</​code>​ 
 + 
 +albo w nieco mniej zwartej, ale bardziej czytelnej postaci: 
 + 
 +<code prolog>​ 
 +not(P) :- P,!,fail. 
 +not(_). 
 +</​code>​
  
  
Linia 324: Linia 333:
 Proszę przeanalizować poniższe problemy, w miarę czasu i możliwości. Proszę przeanalizować poniższe problemy, w miarę czasu i możliwości.
  
 +==== Minecraft ====
 +Zastanówmy się nad próbą implementacji prostej gry typu [[http://​pl.wikipedia.org/​wiki/​Minecraft|Minecraft]]. Kluczowym elementem gry jest silnik wokselowy, który odpowiada za renderowania ogromnego świata przy użyciu prostych klocków zwanych [[http://​pl.wikipedia.org/​wiki/​Woksel|wokselami]]. Zaczniemy od rysowania przykładowego woksela. Proszę uruchomić program {{:​pl:​prolog:​prolog_lab:​cuboid.pl|}} (wymagane XPCE) i przeanalizować jego działanie.
 +
 +<code prolog>
 +?- cuboid(2,​2,​2).
 +</​code>​
 +
 +Następnie proszę zapoznać się z kodem odpowiadającym za animację {{:​pl:​prolog:​prolog_lab:​animation.pl|}}:​
 +
 +<code prolog>
 +?- sm.
 +</​code>​
 +
 +Zadania:
 +  - Przerobić predykat ''​cuboid''​ tak, żeby można było sprecyzować jego pozycję w przestrzeni
 +  - Napisać predykat ''​cuboids'',​ który przyjmuje listę współrzędnych i rysuje w nich sześciany o zadanej długości boku
 +  - Przy pomocy predykatu ''​cuboids''​ należy zamodelować [[http://​i.ytimg.com/​vi/​u1bX8kEy0pg/​maxresdefault.jpg?​|złożony obiekt ze świata Minecraft]]
 +  - Bazując na kodzie z ''​animation.pl''​ należy wprawić krowę w ruch sinusoidalny,​ imitujący [[https://​www.youtube.com/​watch?​v=QH2-TGUlwu4|kota z filmu]]
 +  - [Dla odważnych] dodać do animacji [[https://​archive.org/​details/​nyannyannyan|dźwięk]] podobny do tego z [[https://​www.youtube.com/​watch?​v=QH2-TGUlwu4|filmu]]
 +
 +Pytania:
 +  - Czy rozsądne jest rysowanie wszystkich klocków? Jak wykryć, które klocki są widoczne z perspektywy gracza? Pomocny może okazać się [[http://​et1337.com/​2015/​02/​18/​the-poor-mans-voxel-engine/#​|link]]
 +  - Czy możliwe jest zrobienie w podobny sposób imitacji poniższego [[http://​goo.gl/​YroZm|filmu]]?​
  
 ==== Zaawansowana Mapa ==== ==== Zaawansowana Mapa ====
  
-Rozważmy problem [[programy#tematkolorowanie_mapy|kolorowania mapy]].+Rozważmy problem [[programy#kolorowanie_mapy|kolorowania mapy]].
  
 W jaki sposób policzyć ile jest rozwiązań problemu? ​ W jaki sposób policzyć ile jest rozwiązań problemu? ​
Linia 347: Linia 379:
  
 ==== Zagadka Einsteina ==== ==== Zagadka Einsteina ====
-Jedna z możliwych postaci zagadki Einstein'​a:​+Jedna z możliwych postaci zagadki Einstein'​a ​(patrz [[http://​en.wikipedia.org/​wiki/​Einstein_puzzle]],​ [[http://​pl.wikipedia.org/​wiki/​Zagadka_Einsteina]]).
  
 5 ludzi różnych narodowości zamieszkuje 5 domów w 5 różnych kolorach. Wszyscy palą papierosy 5 różnych marek i piją 5 różnych napojów. Hodują zwierzęta 5 różnych gatunków. Który z nich hoduje rybki? 5 ludzi różnych narodowości zamieszkuje 5 domów w 5 różnych kolorach. Wszyscy palą papierosy 5 różnych marek i piją 5 różnych napojów. Hodują zwierzęta 5 różnych gatunków. Który z nich hoduje rybki?
Linia 370: Linia 402:
 **Ćwiczenie** **Ćwiczenie**
  
-Proszę pobrać kod {{einstein.pl}} i zastanowić się na jego działaniem.+Proszę pobrać kod {{einstein2.pl}} i zastanowić się na jego działaniem.
  
 Uzyskanie poprawnego rozwiązania:​ Uzyskanie poprawnego rozwiązania:​
Linia 429: Linia 461:
 ===== Komentarze ==== ===== Komentarze ====
  
-  * ciężko zdażyć zrealizować całe laboratorium:​ rodzina + flight planner zajmuje 70 min  --- //​[[wojnicki@agh.edu.pl|Igor Wojnicki]] 2008/11/05 15:41//+
pl/prolog/prolog_lab/reprezentacja_wiedzy.1237316653.txt.gz · ostatnio zmienione: 2019/06/27 15:59 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0