= projekty - zdrojové kódy - Jihočeská univerzita - programování - C# (Csharp) - opengl - java - databaze - SQL - WWW - PHP =

Projekty a zdrojové kódy - Jihočeská univerzita

Zdrojový kód programu

Pozn.: V sekci DOWNLOAD jsou kompletní zdrojové kódy i s uplnýma komentářema.


/******************** START OF APPLICATION *********************/

/*

    #########################################################
    #########################################################
    ###                                                   ###
    ###                                                   ###
    ###            ---------------------------            ###
    ###             lzw-compressor-en.pl v1.0             ###
    ###               ... created by JK ...               ###
    ###            ---------------------------            ###
    ###                                                   ###
    ###                                                   ###
    ###                   DESCRIPTION:                    ###
    ###                                                   ###
    ###   Simple application for compression ASCII text   ###
    ###       from input or text file to LZW code.        ###
    ###                                                   ###
    ###                                                   ###
    #########################################################
    #########################################################

*/



/**************************
   Start of program ...
**************************/

start:-
       nl,
       nl,
       write('-------------------------------------------------'),
       nl,
       write('Welcome user in application lzw-compressor-en.pl!'),
       nl,
       write('-------------------------------------------------'),
       nl,
       nl,
       write('Do you want input from file? (yes/no) '),
       read(Answer),
       nowWhat(Answer),
       nl.



help:-
       nl,
       nl,
       write('For start application type command: start.'),
       nl,
       nl,
       write('For more information visit URL adress:'),
       nl,
       write('----------------------------------------------'),
       nl,
       write('http://home.pf.jcu.cz/'),
       write(~),
       write('krhanj00/lgp/app'),
       nl,
       write('----------------------------------------------'),
       nl,
       nl.



/******************************
   Input data form user ...
******************************/

nowWhat(Answer):-
       Answer = 'yes',
       !,
       nl,
       write('
              Type name of file (relative path whitin simple
              apostroph ended dot - forexample: ''text.txt''.)
              '),
       nl,
       read(NameOfFile),
       nl,
       see(NameOfFile),
       read(String),
       seen,
       write('Input text from file: '),
       nl,
       loadFile(NameOfFile),
       nl,
       makeCompression(String).

nowWhat(Answer):-
       nl,
       write('
       Type string for compression (string must be whitin simple
       apostroph ended dot - forexample: ''hello hello''.)
       '),
       nl,
       read(String),
       nl,
       makeCompression(String).



/********************************
   Reading data from file ...
********************************/

loadFile(NameOfFile):-
       see(NameOfFile),
       repeat,
              get0(ASCIIChar),
              not helpPrint(ASCIIChar),
              ASCIIChar = (-1),
              !,
       seen.



helpPrint(ASCIIChar):-
       char(ASCIIChar),
       !,
       name(Char,[ASCIIChar]),
       write(Char).



/*******************************
   Engine of compression ...
*******************************/

makeCompression(String):-
       stringToASCIIChars(String,Chars),
       makeDictionary,
       nl,
       write('LZW code for input string: '),
       nl,
       engine(Chars,128),
       !.

makeCompression(String):-
       retractall(replace(_,_)).



engine([],I):-!.

engine(Chars,I):-
       findall(Number,sublist(Chars,Number),List),
       maximum(Code,List),
       write(Code),
       write('-'),
       replace(Code,Value),
       concatenation(Value,NewChars,Chars),
       addCodeValue(Value,Chars,Result),
       assertz(replace(I,Result)),
       I1 is I + 1,
       engine(NewChars,I1).



/*****************************
   Utilities for engin ...
*****************************/

stringToASCIIChars(String,Chars):-
       atom_chars(String,ASCIIChars),
       aSCIICharsToChars(ASCIIChars,Chars).



aSCIICharsToChars([],[]):-!.

aSCIICharsToChars([H|T],[H1|T1]):-
       atom_chars(H1,[H]),
       aSCIICharsToChars(T,T1).



addCodeValue(Value,Chars,Result):-
       concatenation(Value,[Head|TaleOfChars],Chars),
       addToEnd(Head,Value,Result).


/*****************************
   Utilities for lists ...
*****************************/

addToEnd(X,[],[X]).

addToEnd(X,[H|T],[H|T1]):-
       addToEnd(X,T,T1).



concatenation([],L,L).

concatenation([X|L1],L2,[X|L3]):-
       concatenation(L1,L2,L3).



maximum(X,L):-
       bubbleSort(L,[X|_]).



bubbleSort(L,SortedL) :-
       append(L0,[X,Y|T],L),
       Y > X,
       !,
       append(L0,[Y,X|T],L1),
       bubbleSort(L1,SortedL).

bubbleSort(SortedL,SortedL).


sublist([V|_],C):- replace(C,[V]).
sublist([V,W|_],C):- replace(C,[V,W]).
sublist([V,W,X|_],C):- replace(C,[V,W,X]).
sublist([V,W,X,Y|_],C):- replace(C,[V,W,X,Y]).
sublist([V,W,X,Y,Z|_],C):- replace(C,[V,W,X,Y,Z]).
sublist([V,W,X,Y,Z,A|_],C):- replace(C,[V,W,X,Y,Z,A]).
sublist([V,W,X,Y,Z,A,B|_],C):- replace(C,[V,W,X,Y,Z,A,B]).



/********************
   Dictionary ...
********************/

makeDictionary:-
       % SOME CHARS WE ARE NOT USE
       /*
       assertz(replace(0,[''])),
       assertz(replace(1,['?'])),
       assertz(replace(2,['?'])),
       assertz(replace(3,['?'])),
       assertz(replace(4,['?'])),
       assertz(replace(5,['?'])),
       assertz(replace(6,['?'])),
       assertz(replace(7,['?'])),
       assertz(replace(8,['?'])),
       assertz(replace(9,['?'])),
       assertz(replace(10,['?'])),
       assertz(replace(11,['?'])),
       assertz(replace(12,['?'])),
       assertz(replace(13,['?'])),
       assertz(replace(14,['?'])),
       assertz(replace(15,['¤'])),
       assertz(replace(16,['?'])),
       assertz(replace(17,['?'])),
       assertz(replace(18,['?'])),
       assertz(replace(19,['?'])),
       assertz(replace(20,['¶'])),
       assertz(replace(21,['§'])),
       assertz(replace(22,['?'])),
       assertz(replace(23,['?'])),
       assertz(replace(24,['?'])),
       assertz(replace(25,['?'])),
       assertz(replace(26,['?'])),
       assertz(replace(27,['?'])),
       assertz(replace(28,['?'])),
       assertz(replace(29,['?'])),
       assertz(replace(30,['?'])),
       assertz(replace(31,['?'])),
       */
       assertz(replace(32,[' '])),
       assertz(replace(33,['!'])),
       assertz(replace(34,['"'])),
       assertz(replace(35,['#'])),
       assertz(replace(36,['$'])),
       assertz(replace(37,['%'])),
       assertz(replace(38,['&'])),
       assertz(replace(39,[''''])),
       assertz(replace(40,['('])),
       assertz(replace(41,[')'])),
       assertz(replace(42,['*'])),
       assertz(replace(43,['+'])),
       assertz(replace(44,[','])),
       assertz(replace(45,['-'])),
       assertz(replace(46,['.'])),
       assertz(replace(47,['/'])),
       assertz(replace(48,['0'])),
       assertz(replace(49,['1'])),
       assertz(replace(50,['2'])),
       assertz(replace(51,['3'])),
       assertz(replace(52,['4'])),
       assertz(replace(53,['5'])),
       assertz(replace(54,['6'])),
       assertz(replace(55,['7'])),
       assertz(replace(56,['8'])),
       assertz(replace(57,['9'])),
       assertz(replace(58,[':'])),
       assertz(replace(59,[';'])),
       assertz(replace(60,['<'])),
       assertz(replace(61,['='])),
       assertz(replace(62,['>'])),
       assertz(replace(63,['?'])),
       assertz(replace(64,['@'])),
       assertz(replace(65,['A'])),
       assertz(replace(66,['B'])),
       assertz(replace(67,['C'])),
       assertz(replace(68,['D'])),
       assertz(replace(69,['E'])),
       assertz(replace(70,['F'])),
       assertz(replace(71,['G'])),
       assertz(replace(72,['H'])),
       assertz(replace(73,['I'])),
       assertz(replace(74,['J'])),
       assertz(replace(75,['K'])),
       assertz(replace(76,['L'])),
       assertz(replace(77,['M'])),
       assertz(replace(78,['N'])),
       assertz(replace(79,['O'])),
       assertz(replace(80,['P'])),
       assertz(replace(81,['Q'])),
       assertz(replace(82,['R'])),
       assertz(replace(83,['S'])),
       assertz(replace(84,['T'])),
       assertz(replace(85,['U'])),
       assertz(replace(86,['V'])),
       assertz(replace(87,['W'])),
       assertz(replace(88,['X'])),
       assertz(replace(89,['Y'])),
       assertz(replace(90,['Z'])),
       assertz(replace(91,['['])),
       assertz(replace(92,['\'])),
       assertz(replace(93,[']'])),
       assertz(replace(94,['^'])),
       assertz(replace(95,['_'])),
       assertz(replace(96,['`'])),
       assertz(replace(97,['a'])),
       assertz(replace(98,['b'])),
       assertz(replace(99,['c'])),
       assertz(replace(100,['d'])),
       assertz(replace(101,['e'])),
       assertz(replace(102,['f'])),
       assertz(replace(103,['g'])),
       assertz(replace(104,['h'])),
       assertz(replace(105,['i'])),
       assertz(replace(106,['j'])),
       assertz(replace(107,['k'])),
       assertz(replace(108,['l'])),
       assertz(replace(109,['m'])),
       assertz(replace(110,['n'])),
       assertz(replace(111,['o'])),
       assertz(replace(112,['p'])),
       assertz(replace(113,['q'])),
       assertz(replace(114,['r'])),
       assertz(replace(115,['s'])),
       assertz(replace(116,['t'])),
       assertz(replace(117,['u'])),
       assertz(replace(118,['v'])),
       assertz(replace(119,['w'])),
       assertz(replace(120,['x'])),
       assertz(replace(121,['y'])),
       assertz(replace(122,['z'])),
       assertz(replace(123,['{'])),
       assertz(replace(124,['|'])),
       assertz(replace(125,['}'])),
       assertz(replace(126,[~])),
       assertz(replace(127,['¦'])).



/********************* END OF APPLICATION *********************/