http://www.perlmonks.org?node_id=864463


in reply to Re^2: Perl Puzzles
in thread Perl Puzzles

That reminds me of a Rosetta code problem I did a few years ago at Perl Monks.

Write a Perl function to reverse a string of words. For example, given an input string of:
" one two three four "
the function should produce:
"four three two one"
That is, the input string reversed word by word, with a single space between each word and with no leading or trailing space. You may assume the input string consists only of alphabetic characters, spaces and tabs.

When you've written your function, you can view many solutions to this problem in Perl and other languages at Five Ways to Reverse a String of Words (C#, Perl 5, Perl 6, Ruby, Haskell).

Update: Two more.

Given an input string, for example "ZBBBCZZ", produce a list, for example, ["Z", "BBB", "C", "ZZ"]. That is, break the input string into pieces based on change of character. Solutions at Yet Another Rosetta Code Problem (Perl, Ruby, Python, Haskell, ...).

Given a list of strings, for example ("a", "bb", "c", "d", "e", "f", "g", "h"), and a chunksize, for example 3, write a subroutine to return a multi-line string, for example:

a bb c d e f g h
The output string must contain a single space between each array element and a newline every chunksize items. Note that no trailing space is permitted on any line and the last line must be properly newline-terminated. Solutions at Rosetta code: Split an array into chunks.