--specialni simvoli
--koito sa razdeliteli mejdu dumite
specialChars::[Char]
specialChars = ['\n','\t',' '] --,'.',',',';',':','\'','"']
--vrushta dumata, koqto e v nachaloto na niza
getWord::String->String
getWord []=[]
getWord (s:s1)
| elem s specialChars = []
| otherwise=s : (getWord s1)
--vrushta niza kato premahva dumata, koqto e v nachaloto mu
dropWord::String->String
dropWord []=[]
dropWord (s:s1)
| elem s specialChars = s : s1
| otherwise = dropWord s1
--premahva specialnite simvoli, koito sa v nachaloto na niza
dropSpecialChars::String->String
dropSpecialChars []=[]
dropSpecialChars (s:s1)
| elem s specialChars = dropSpecialChars s1
| otherwise = s : s1
--otdelq vsichki dumi ot niz v spisuk ot dumi
allWordsFrom::String->[String]
allWordsFrom []=[]
allWordsFrom l
| ((getWord l) == []) = allWordsFrom (dropSpecialChars l)
| otherwise = (getWord l) : allWordsFrom (dropWord l)

--otdelq dumite koito mogat da se suberat na
--edin red s opredelena duljina. ostavq se po edin simvol dopylnitelno za razdelitel
getSingleRow::[String]->Int->[String]
getSingleRow [] _ = []
getSingleRow (x:xs) l
| length x > l =[]
| otherwise = x : (getSingleRow xs (l-(length x)-1))
--premahva dumite, koito mogat da se suberat
--na red s opredelena duljina
dropSingleRow::[String]->Int->[String]
dropSingleRow [] _ = []
dropSingleRow (x:xs) l
| length x > l =(x:xs)
| otherwise = (dropSingleRow xs (l-(length x)-1))
--razdelq spisuka ot dumi na spisuk ot redove s dumi
--kato duljinata na reda e opredelena
toRows :: [String] -> Int -> [[String]]
toRows [] _ = []
toRows words lenRow =
(getSingleRow words lenRow): toRows ( dropSingleRow words lenRow) lenRow


--otpechatvane na 1 red ot dumi
printLine:: [String] -> IO()
printLine [] = putStr("")
printLine (x:xs)=putStr(x++" ")>>(printLine xs)
--otpechatvane po redove
printText::[[String]]->IO()
printText [] = putStr("")
printText (x:xs) = (printLine x)>>putStrLn("")>>(printText xs)
Last modified: Saturday, 12 November 2011, 5:38 PM