🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.funkcyjne
5 messages
5 total messages Started by Grzegorz Rumatowski Wed, 22 Oct 2003 19:32
Problem z listami w PROLOGU
#513
Author: Grzegorz Rumatowski
Date: Wed, 22 Oct 2003 19:32
23 lines
1460 bytes
Hej!

Domyślam się, że to raczej NTG, ale sprobuję mimo wszystko.

Mam problem z listami w PROLOGu. Zdefiniowałem predykat odwroc w
następujący sposób:

odwroc(L,R):-
    odwroc(L,[],R).
odwroc([],R,R).
odwroc([G|O],N,R):-
    odwroc(O,[G|N],R).

Długo szukałem rozwiązania na procedurę, która odwraca również
listy zagnieżdżone. Niestety nic nie znalazłem.

Może ktoś ma jakiś pomysł na rozwiązanie problemu ???

Grzechu
-- 
G.R.Z.E.C.H.U.: General Robotic Zombie Engineered 
for Calculation and Hazardous Utility
http://republika.pl/grumatow/
Re: Problem z listami w PROLOGU
#514
Author: Piotr Dembiński
Date: Wed, 22 Oct 2003 20:08
13 lines
1239 bytes
Grzegorz Rumatowski <grumatow@ZERO__SPAMpoczta.onet.pl> writes:

[...]

> Może ktoś ma jakiś pomysł na rozwiązanie problemu ???

no ja bym to tak napisał:

odwroc([H|T], B) :-
        odwroc(H,X),
        odwroc(T,Y),
        append(Y, [X], B).
odwroc(X,X).
Re: Problem z listami w PROLOGU
#515
Author: Grzegorz Rumatowski
Date: Wed, 22 Oct 2003 20:28
16 lines
1404 bytes
On Wed, 22 Oct 2003 22:08:26 +0200, Piotr Dembiński wrote:

> odwroc([H|T], B) :-
>         odwroc(H,X),
>         odwroc(T,Y),
>         append(Y, [X], B).
> odwroc(X,X).

O wersji z append myślałem, ale gdzieś w którymś tutorialu czytałem,
że tak nie powinno się robić.

Grzechu
-- 
G.R.Z.E.C.H.U.: General Robotic Zombie Engineered 
for Calculation and Hazardous Utility
http://republika.pl/grumatow/
Re: Problem z listami w PROLOGU
#516
Author: Maciek Makowski
Date: Wed, 22 Oct 2003 21:35
25 lines
1706 bytes
Grzegorz Rumatowski wrote:

>>odwroc([H|T], B) :-
>>        odwroc(H,X),
>>        odwroc(T,Y),
>>        append(Y, [X], B).
>>odwroc(X,X).
> 
> O wersji z append myślałem, ale gdzieś w którymś tutorialu czytałem,
> że tak nie powinno się robić.

No, nie powinno. Lepiej zrobić z akumulatorem:

odwroc(L, R) :- odwroc(L, [], R).
odwroc([H|T], A, R) :- odwroc(T, [H|A], R).

albo na listach różnicowych:

odwroc(L, R) :- odwroc1(L, R--[]).
odwroc1([H|T], R--Z) :- odwroc1(T, R--[H|Z]).


-- 
Maciek
"Chantons et buvons, a ce flacon faisons la guerre"
Re: Problem z listami w PROLOGU
#517
Author: Piotr Dembiński
Date: Thu, 23 Oct 2003 22:28
8 lines
1246 bytes
Grzegorz Rumatowski <grumatow@ZERO__SPAMpoczta.onet.pl> writes:

[...]

> O wersji z append myślałem, ale gdzieś w którymś tutorialu czytałem,
> że tak nie powinno się robić.

:)
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads