/*funkcja sprawdza czy to nie koniec pliku*/ czyKoniecPliku(strumienPliku) := fposition(strumienPliku)>flength(strumienPliku)$ /*logarytm dwojkowy bo w maximie nie ma*/ log2(x):=log(x)/log(2)$ /*lispowa funkcja odczytywania znaku z pliku*/ :lisp (defun $read_char(strumienPliku)(read-char strumienPliku)) /*zmapowanie jej do maximy + wyrzucenie 3 znaków bo maxima dodaje*/ readChar(strumienPliku):= substring(string(read_char(strumienPliku)),3) /*lispowa funkcja sprawdzania czy istnieje dany plik*/ :lisp (defun $file_exists(nazwaPliku)(probe-file nazwaPliku)) /*znowu mapowanie do maximy*/ fileExists(nazwaPliku):= if(file_exists(nazwaPliku) = false) then false else true$ /*funkcja generuje nazwe kolejnego pliku*/ nastepnyPlik(nazwaPliku):= block([], rozszerzenie:sreverse(substring(sreverse(nazwaPliku),1,5)), prefixPliku:sreverse(substring(sreverse(nazwaPliku),9)), licznikPliku:sreverse(substring(sreverse(nazwaPliku),5,9)), licznikLiczba:parse_string(licznikPliku)+10000, licznikLiczba:licznikLiczba+1, licznikPliku:substring(string(licznikLiczba),2), return (concat(prefixPliku,concat(licznikPliku,rozszerzenie))) )$ /*wartosci ustawiane przy inicjowniu pamieci, ulatwiajace potem dzialanie na tej pamieci*/ wymiarX:0; wymiarY:0; iloscPamieci:0 /*funkcja testowa do sprawdzania pliku, w sumie nie istotna*/ sprawdzPlik(nazwa):= block([], licznik:0, strumienPliku: openr(nazwa), while(not czyKoniecPliku(strumienPliku)) do block([], znak:readChar(strumienPliku), if(znak=",") then block([],wymiarY:wymiarY+1,if(licznik>wymiarX) then wymiarX:licznik,iloscPamieci:iloscPamieci+licznik,licznik:0) else licznik:licznik+1 ), close(strumienPliku) )$ /*inicjowanie pamieci zaczynajacej sie plikiem podanym w nazwie*/ /*format nazwy np c:\\dane\\pamiec0001.txt*/ inicjalizujPamiec(nazwaPliku):= block([], wymiarX:0, wymiarY:0, adresPliku:nazwaPliku, sprawdzPlik(nazwaPliku), while (fileExists(nastepnyPlik(nazwaPliku))) do block([], nazwaPliku:nastepnyPlik(nazwaPliku), sprawdzPlik(nazwaPliku) ) )$ /*odczytywanie pamieci pod zadanym adresem*/ czytajPamiec(x,y):= block([], licznikX:0, licznikY:0, wynik:"X", mamWynik:false, staryAdres:adresPliku, wymiarOK:false, if(x