:-use_module(library(lists)).

% A program a felhasznalo altal megadott file-bol kigyujti a neveket,
% mindegyiket kiirva az a.pl, b.pl, ..., z.pl nevu file-ok kozul az adott
% nev kezdobetujenek megfelelobe.



nevgyujt:- write('Melyik file-ban vannak az adatok?'),
nl,
read(InFile), % Peldaul: 'adatok.pl'.
see(InFile),
repeat,
read(Szem),
feldolg(Szem),
Szem==end_of_file,
!,
seen.

% A see/seen mintajara a output is atiranyithato a tell/told segitsegevel,
% azonban a tell parancs kiadasa utan a file korabbi tartalma azonnal torlodik.
%
% A repeat segitsegevel kikerulhetjuk a rekurziot, ezaltal
% csokkentve a memoria igenyt. Bovebben a repeatrol itt, illetve a feldolg/0
% definíciója után található nevgyujt/0 variációk elemzésével.

feldolg(end_of_file).
feldolg(adat(Nev,_)):-
atom_codes(Nev,[Kezdo|_]),
atom_codes(FileNev,[Kezdo|".pl"]),
open(FileNev,append,File),
write(File,Nev),
write(File,'\n'),
close(File).


%--------------------------------------------------------------------------------

nevgyujt_jo:-
see('adatok.pl'),
repeat,
read(Szem),
kiir(Szem),
Szem==end_of_file,
!,
seen.

nevgyujt_rossz:-
see('adatok.pl'),
read(Szem),
kiir(Szem),
Szem==end_of_file,
!,
seen.

nevgyujt_haromszor:-
haromszor,
see('adatok.pl'),
read(Szem),
kiir(Szem),
Szem==end_of_file,
!,
seen.

kiir(adat(Nev,_)):- !,write(Nev),nl.
kiir(_).

haromszor:- member(E,[1,2,3]).