# Task #1 Write a script to display months from the year 1900 to 2019 where you find 5 weekends i.e. 5 Friday, 5 Saturday and 5 Sunday. ## Solution Months that contain five full weekends have 31 days and start on a Friday. Use `cal` to display March 2019 as an example. ``` #$ cal -h -m 3 2019 # cal is a UNIX utility March 2019 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 ``` The solution runs `cal` and displays months that match this unique layout. # Task #2 Write a script that can wrap the given paragraph at a specified column using the greedy algorithm. A simple way to do word wrapping is to use a greedy algorithm that puts as many words on a line as possible, then moving on to the next line to do the same until there are no more words left to place. This method is used by many modern word processors, such as OpenOffice.org Writer and Microsoft Word[citation needed]. This algorithm always uses the minimum possible number of lines but may lead to lines of widely varying lengths. The following pseudocode implements this algorithm: ``` SpaceLeft := LineWidth for each Word in Text if (Width(Word) + SpaceWidth) > SpaceLeft insert line break before Word in Text SpaceLeft := LineWidth - Width(Word) else SpaceLeft := SpaceLeft - (Width(Word) + SpaceWidth) ``` Where LineWidth is the width of a line, SpaceLeft is the remaining width of space on the line to fill, SpaceWidth is the width of a single space character, Text is the input text to iterate over and Word is a word in this text. ## Solution The solution follows the recommended pseudocode. Minor improvements avoid trailing whitespace. The script uses `Text::ParseWords::shellwords` from the standard library to extract chunks of words from ``.