• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Prolog: Operacje na listach

Object Storage Arubacloud
0 głosów
411 wizyt
pytanie zadane 10 czerwca 2019 w Inne języki przez TheCreativ Nowicjusz (120 p.)
edycja 10 czerwca 2019 przez Patrycjerz

Witam mam do napisania program o treści :

Korzystając z wbudowanych predykatów SWI Prologu zdefiniuj predykat
operacja(L1, L2)
spełniony, gdy lista L2 powstaje z listy L1 przez dodanie jako ostatniego elementu średniej arytmetycznej
największego i najmniejszego elementu listy L1. Zakładamy, że L jest listą liczbową i ma co najmniej jeden
element (nie trzeba tego sprawdzać).

Napisałem coś takiego:

%=============================================================
%Zad 3
%=============================================================

operacja(L1,L2):-
    msort(L1,X), %X powstaje przez posortowanie listy L1
    [H|T]=X, %odcinam glowe listy X(najmniejszy element)
    last(X,Z), %element Z to ostatni element listy X(największy element)
    Y is ((H+Z)/2),
        append(L1, [Y], L2) .%Lista L2 powstaje przez dodanie elementu Y do listy L1.  
      

%=============================================================

Muszę teraz zrobić :

Sprawdź działanie programu dla 2 kompletów argumentów. Wyniki umieść w programie jako komentarz

I nie mam pojęcia co robię źle ostatnio napisałem 

operacja([1, 2, 3], [1, 2, 3, 2]) i to komentarz zwrotny

brak przykładów użycia predykatu operacja: ma to być sesja prologowa dołączona jako komentarz. Dodana ostatnia linia programu nie jest właściwa i powoduje, że program nie działa. W przykładach drugi argument predykatu operacja powinien być zmienną, aby można było zaobserwować rzeczywiste działanie predykatu operacja.

Jakieś pomysły co robię nie tak ?

1 odpowiedź

0 głosów
odpowiedź 10 czerwca 2019 przez Patrycjerz Mędrzec (192,320 p.)

Wydaje mi się, że powinieneś wywołać dwukrotnie predykat, w celu wyznaczenia dwóch list, np. L1 i L2, i opisać wyniki w komentarzach, tak jak poniżej.

operacja([1, 2, 3], L1), % L1 = [1, 2, 3, 2]
operacja([4], L2). % L2 = [4, 4]
komentarz 10 czerwca 2019 przez TheCreativ Nowicjusz (120 p.)
To jest komunikat z konsoli ?
komentarz 10 czerwca 2019 przez Patrycjerz Mędrzec (192,320 p.)

Osobiście używam tej stronki do zabawy z Prologiem, więc nie wiem, czy komunikaty są identyczne z tymi z konsoli.

Podobne pytania

0 głosów
0 odpowiedzi 398 wizyt
pytanie zadane 29 grudnia 2018 w Inne języki przez matiibal Użytkownik (620 p.)
0 głosów
1 odpowiedź 117 wizyt
0 głosów
1 odpowiedź 125 wizyt
pytanie zadane 29 marca 2020 w Inne języki przez eugi Użytkownik (570 p.)

92,536 zapytań

141,377 odpowiedzi

319,456 komentarzy

61,922 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...