Skocz do zawartości
Forum komputerowe PC Centre

Łełas

Użytkownicy
  • Zawartość

    1
  • Rejestracja

  • Ostatnia wizyta

Reputacja

0 Neutralny

O Łełas

  • Tytuł
    Jestem tu nowy

Informacje do profilu

  • Imię i nazwisko
    Robert Mastalerek
  1. Witam serdecznie. Właśnie zaczynam swoją przygodę z prologiem, co prawda nieco wymuszoną przez uczelnię ale nvm. Rozwiązując zadania napotkałem na kilka problemów. Zadanie 1. Znaleźć najczęściej powtarzający się element i go wypisać. Przykład: maxlist([a,b,a,a,b,a,d,a,c],X). X=a. Sądzę, że najpierw trzeba posortować listę wejściową, ale chyba typu char się nie da, więc należy za pomocą name zamienić litery na liczby, posortować, zamienić ponownie na litery. W ten sposób z listy wejściowej otrzymujemy L=[a,a,a,a,a,b,b,c,d]. Teraz w jakiś sposób należy obliczyć ilość wystąpień danego elementu i znaleźć element najczęściej występujący i go wypisać. Niestety nie wiem jak to zrobić, nie wiem nawet czy sortowanie jest konieczne. Dlatego proszę o pomoc. Zadanie 2. Znaleźć największy przedział na liście przedziałów, podzielić go na pół, modyfikując w ten sposób listę wejściową. Zakładamy, że pierwsza współrzędna jest zawsze mniejsza od drugiej. Przykład: cord([[-4,2],[-2,14],[-1,11]], X). X = [[-4,2],[-2,8],[8,14],[-1,11]],X). Jak widać największy przedział to [-2,14], jest on więc dzielony na pół i otrzymujemy z niego 2 przedziały: [-2,8] i [8,14]. Tego zadania nawet nie potrafię ruszyć. Nie wiem co należy robić. Zadanie 3. Z listy słów należy utworzyć podlisty zawierające litery pierwszych i ostatnich liter danego wyrazu. Przykład: polacz([pies,kot,krowa],X). X = [[p,s],[k,t],[k,a]. Edit: To już zrobiłem oto kod (może się komuś przyda): odwroc([X],[X]). odwroc[H|T],X) :- odwroc(T,Y), append(Y,[H],X). polacz([H|T], [G|O]) :- name(H,L1), L1=[H1|T1], name(P,[H1]), odwroc(L1,L2), L2=[H2|T2], name(L,[H2]), G=[P,L], polacz(T,O).
×
×
  • Dodaj nową pozycję...