@GrabkaMan: rozumiem, że deklarujesz 1 = one, 2 = three, etc w cyfry? Nie lubię prologa, ale popatrzę w swój kod z pierwszego roku, to może sobie coś przypomnę.
@GrabkaMan: Definiujesz 2 termy: wypisz/1 i wypisz/2 - nic dziwnego, że wypisz/2 się pętli, skoro nie ma klauzuli kończącej. Zamień wypisz([]). na wypisz([], _). i powinno się zacząć kończyć.
Przy czym ten argument X nie wygląda na sensownie używany. Nie wiem, co właściwie ta funkcja ma robić, w drugi argument wstawić listę termów reprezentujących cyfry? Czy wypisać coś na ekran? W tej chwili będzie tam lądować term odpowiadający ostatniej cyfrze.
@GrabkaMan: Oczywiście źle napisałem, wypisz([], _) nie pomaga, bo tam jest 0 zamiast []. W każdym razie to było to miejsce, gdzie się pętliło - brak klauzuli kończącej.
Czy są jakieś prognozy dla Sępolna? #wroclaw #powodz? Z tego co widzę, to w '97 tam było sucho. Nie wiem, czy po Babcię nie pojechać i nie wywieźć jej do Poznania, gdzie mieszkam.
W kolejnych miejscach woda się przelewa i dostaje do kolejnych miejscowości. A w telewizji nikogo na miejscu, o niczym nowym ludzie się nie dowiedzą. Ale gdyby na Kijów spadła rakieta to oczywiście zaraz korespondent 24/7 #powodz
Ma wyglądać tak:
% pisz_numer([ala, kot, mama, pies]).
% 1. ala
% 2. kot
% 3. mama
% 4. pies
Napisałem takie coś:
pisz_numer([],0).
pisz_numer([Element|Ogon],Dlug) :- print(Dlug), print(Element), nl, pisz_numer(Ogon,X), Dlug is X+1.
Fajnie zlicza wszystko, ale przy wywołaniu:
Wyświetla mi jakieś dziwy:
91 ?- dlugosc([ala, kot, auto, pies, kot],X).
_G3917ala
_L170kot
_L185auto
_L200pies
_L215kot
X = 5
Ktoś może pomóc?
#programowanie
Za godzinę spróbuję ci pomóc (:
EDIT: Spróbuj komendy trace. http://www.swi-prolog.org/pldoc/man?section=debugger
Wiesz może jak zadeklarować tylko raz zmienną?
@GrabkaMan: W prologu nie ma zmiennych!
Po prostu
Możesz zobaczyć, dlaczego to wywołanie powoduje błąd:
Generalnie chodzi o to, że podaję numer 155 i program ma wypisać:
one
@GrabkaMan: rozumiem, że deklarujesz 1 = one, 2 = three, etc w cyfry?
Nie lubię prologa, ale popatrzę w swój kod z pierwszego roku, to może sobie coś przypomnę.
Że jak wyjdzie 1 to wypisze one, jak wyjdzie 7 to wypisze seven i tak dalej.
wypisz/1
iwypisz/2
- nic dziwnego, żewypisz/2
się pętli, skoro nie ma klauzuli kończącej. Zamieńwypisz([]).
nawypisz([], _).
i powinno się zacząć kończyć.Przy czym ten argument
X
nie wygląda na sensownie używany. Nie wiem, co właściwie ta funkcja ma robić, w drugi argument wstawić listę termów reprezentujących cyfry? Czy wypisać coś na ekran? W tej chwili będzie tam lądować term odpowiadający ostatniej cyfrze.157 i ma wypisać:
one five seven
wypisz([], _)
nie pomaga, bo tam jest0
zamiast[]
. W każdym razie to było to miejsce, gdzie się pętliło - brak klauzuli kończącej.Jak dam zamiast tego dodaj print(X) to działa fajnie. Ale potrzebuję w drugą stronę wypisywać. :/
Jakieś pomysły?