SWI-Prolog

0

Hej :-)
Potrzebuję pomocy z SWI-Prologiem i ktoś mnie tutaj nasłał :-)
Zna ktoś w ogóle to dziwadło?
Mam do napisania "uproszczony arkusz kalkulacyjny" ;-), który dla wierszy typu ak( 1, 2, a+b, 5, c*7 ) da wyniki w postaci ako( 1,2,3,5,21 )
I tyle na początek. Później ma być jeszcze jakaś suma w kolumnie, ale to dopiero jak ktokolwiek będzie wiedział jak sie do tego w ogóle zabrać.

W każdym "normalnym" języku dałoby sie to napisać raz, dwa, ale w tym dziwadle i to bez ćwiczeń, tylko po samych wykładach z Programowania w logice to nie daję sobie żadnych szans :-(
Może ktoś będzie mógł mi pomóc?

Pzdr
Olka (świnka morska ;-) )

0
<quote> Zna ktoś w ogóle to dziwadło?

Cześć
Widzę, że wielu zaglądało, ale chyba macie taki sam stosunek do Prologa jak ja :(
Pzdr
Olka

0

Niestety aktualnie nie ma tutaj Kapustki - specjalisty od programowania funkcjonalnego.
Ja tak przegladalem to zadanie i niebardzo mi sie to podoba. Z tego co masz wynika, ze jako wejscie i wyjscie masz jakis term, a chyba latwiej byloby, gdyby to listy byly. Inna sprawa to stale: a, b, c. Rozumiem, ze a to wartosc pod pierwszym indeksiem, b pod drugim itp. Chyba lepiej by bylo, gdyby to byly zmienne, bo przy stalych to nie mam pojecia jak odczytac wartosc z indeksu odpowiadajacego stalej. Nie wiem czy w ogole jest mozliwosc przyporzadkowania wartosci dla stalej (raczej nie bardzo z tego co wyczytalem). Jednym slowem... jezyk raczej nie do takich zastosowan :/

0

Hej
A może ja za mało napisałam i przez to nie da się zrozumieć wszystkiego. To może ja wkleję zadanko w "mądrej" postaci. Szczerze mówiąc, to sama nie wszystko rozumiem i nie wszystko sobie wyobrażam :(

A błąd ? :) ort., chyba znalazłam. Wstyd mi
Pzdr
Olka

A tu zadanko
Będziemy reprezentować arkusz kalkulacyjny, w którym wiersze nie są
numerowane, jako program w Prologu (dokładniej - część programu). Ustalmy
sobie liczbę kolumn, np. 5. Każdy wiersz będzie jednym faktem (klauzulą
bez prawej strony) predykatu ak/5. Np.
ak( 1, 2, a+b, 5, c7 ).
odpowiada wierszowi, który w kolumnie a ma 1, ..., w kolumnie e ma c
7.

Należy napisać predykat ako (arkusz kalkulacyjny obliczony), dający
obliczone wartości kolejnych komórek w wierszu arkusza. Tzn. zapytanie
?- ako( A, B, C, D, E )
powinno dać tyle odpowiedzi, ile jest wierszy w arkuszu. Jeśli nasz
program zawiera fakt ak( 1, 2, a+b, 5, c*7 ) j.w., to jedną z tych
odpowiedzi powinno być ako( 1,2,3,5,21 ). (Dosłownie A=1, B=2, itd )

Dopuśćmy teraz użycie w wyrażeniach w arkuszu wyrażenia suma(Kolumna)
oznaczającego sumę wyrażen w kolumnie Kolumna w całym arkuszu. Należy
rozszerzyc definicję predykatu ako, by działał on również dla takich
arkuszy.

1 użytkowników online, w tym zalogowanych: 0, gości: 1