You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
# 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 `<STDIN>`.