Code Review Videos > Map, Filter, Reduce

Map, Filter, Reduce

In this exercise there are several small problems that can be solved using map, filter, and reduce.

The challenges should be really easy to solve – if you know the language. The aim is to get hands on with doing regular, routine workflows, rather than learning syntax and solving maths problems.

I’m going to specify the problems as a quasi-Gherkin syntax, intentionally language agnostic. I am aware these are not brilliant examples of Gherkin. Perhaps I should have said Kwasi Gherkin. A UK economy joke there.

For specific implementations, or to follow along, see either the specific language pages, or Github.

Easy Reduce

Scenario: Using reduce to sum numbers Given an array of zero elements When reduced Then the outcome should be zero Given an array of one number When reduced Then the outcome should be that same number Given an array of multiple numbers When reduced Then the outcome should be the sum of all numbers Scenario: Using reduce to concatenate strings Given an array of zero elements When reduced Then the outcome should be an empty string Given an array of one string When reduced Then the outcome should be that same string Given an array of multiple strings When reduced Then the outcome should be a concatenation of all strings Scenario: Using reduce to find nothing but the truth Given an array of zero elements When reduced Then the outcome should be false Given an array of one boolean When reduced Then the outcome should be that same boolean Given an array of multiple booleans When all booleans are truthy Then the outcome should be true Given an array of multiple booleans When all booleans are falsy Then the outcome should be false Given an array of multiple booleans When any value is falsy Then the outcome should be false
Code language: PHP (php)

Easy Filter

Scenario: Using filter to find even numbers Given an array of zero elements When filtered Then the outcome should be an empty array Given an array of one odd number When filtered Then the outcome should be an empty array Given an array of one even number When filtered Then the outcome should be equivalent to the original array Given an array of multiple numbers When filtered Then the outcome should be an array of only the even numbers Scenario: Using filter to remove empty strings, and any string containing the letter A Given an array of zero elements When filtered Then the outcome should be an empty array Given an array of one empty string When filtered Then the outcome should be an empty array Given an array of one string with the value "a" When filtered Then the outcome should be an empty array Given an array of one string with the value "b" When filtered Then the outcome should be an array containing "b" Given an array of multiple strings When filtered Then the outcome should be an array of any non empty elements that do not contain the letter A Scenario: Using filter to find nothing but the truth Given an array of zero elements When filtered Then the outcome should be an empty array Given an array of one boolean with the value "false" When filtered Then the outcome should be an empty array Given an array of one boolean with the value "true" When filtered Then the outcome should be an array containing "true" Given an array of multiple boolean values where all are "false" When filtered Then the outcome should be an empty array Given an array of multiple boolean values where all are "true" When filtered Then the outcome should be equivalent to the original array Given an array of multiple boolean values where there are both "true" and "false" values When filtered Then the outcome should be only the truthy values
Code language: PHP (php)

Easy Map

Scenario: Using map to square numbers Given an array of zero elements When mapped Then the outcome should be an empty array Given an array of one number When mapped Then the outcome should be an array with the original number squared Given an array of multiple numbers When mapped Then the outcome should be an array with each original number squared Scenario: Using map to convert strings to title case Given an array of zero elements When mapped Then the outcome should be an empty array Given an array of one empty string When mapped Then the outcome should be an empty array Given an array of one string with the value "a" When mapped Then the outcome should be an array containing "A" Given an array of one string with the value "XYZ AbC" When mapped Then the outcome should be an array containing "Xyz abc" Given an array of multiple strings When mapped Then the outcome should be an array of where all elements are in "Title case" Scenario: Using map to stringify boolean values Given an array of zero elements When mapped Then the outcome should be an empty array Given an array of one boolean with the value "false" When mapped Then the outcome should be an array containing the string "false" Given an array of one boolean with the value "true" When mapped Then the outcome should be an array containing the string "true" Given an array of multiple boolean values where there are both "true" and "false" values When mapped Then the outcome should be an array where all boolean values have been stringified
Code language: PHP (php)

Predicted challenges here may be:

  • The zero element array, and satisfying the type system that the given input is the same type that the function expects
  • Strings vs Chars in some languages
  • Logic for tracking the boolean outcomes

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: