Jump to content

Word wrap: Difference between revisions

m
Line 2,421:
 
 
Alternative greedy wrapping: <lang haskell>import Data.List (inits, tailstail, tailtails)
 
wWrap :: Int -> String -> String
testString =
wWrap n =
concat
unlines
[ "In olden times when wishing still helped one, there lived a king"
. map unwords
, " whose daughters were all beautiful, but the youngest was so beautiful"
. wWrap'' n
, " that the sun itself, which has seen so much, was astonished whenever"
. words
, " it shone in her face. Close by the king's castle lay a great dark"
. concat
, " forest, and under an old lime-tree in the forest was a well, and when"
. lines
, " the day was very warm, the king's child went out into the forest and"
, " sat down by the side of the cool fountain, and when she was bored she"
, " took a golden ball, and threw it up on high and caught it, and this"
, " ball was her favorite plaything."
]
 
wWrap'' :: Int -> [String] -> [[String]]
wWrap'' _ [] = []
wWrap'' in ss =
(\(a, b) -> a : wWrap'' in b) $
last . filter ((<= in) . length . unwords . fst) $ zip (inits ss) (tails ss)
zip (inits ss) (tails ss)
 
wWrap :: Int -> String -> String
wWrap i = unlines . map unwords . wWrap'' i . words . concat . lines
 
main :: IO ()
main = putStrLn $ wWrap 80 testString</lang>
main =
putStrLn $
wWrap 80 $
concat
[ "In olden times when wishing still helped one, there lived a king",
" there lived a king whose daughters were all",
, " whose daughters were all " beautiful, but the youngest was so beautiful",
, " that the sun itself, which has seen so much, was astonished whenever",
" was astonished whenever, it shone in her",
, " it shone in her " face. Close by the king's castle lay a great dark",
, " dark forest, and under an old lime-tree in the forest was a well", and when"
" the forest was a well, and when the day was",
, " the day was " very warm, the king's child went out into the forest and",
" forest and sat down by the side of the cool",
, " sat down by the side of the cool" fountain, and when she was bored she took a",
, " took a " golden ball, and threw it up on high and caught it", and this"
" caught it, and this ball was her favorite",
, " ball was her favorite " plaything."
]</lang>
 
=={{header|Icon}} and {{header|Unicon}}==
9,655

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.