The Umbrella Challenge


About the challenge


  • This challenge is an individual one
  • The aim is to push you to discover what we can do with basic simple technology
  • Keep in mind that you will be assessed on problem solving, technology usage, creativity and any add-on value to the challenge

  • Scenario


    Cedric works at CompanyX. Every day he walks to work and back home. During rainy days, Cedric hates to get wet on his journey to and from work.

    If it rains in the morning and Cedric has an umbrella at home, he takes his umbrella and keeps it at CompanyX. If it rains in the afternoon and Cedric has an umbrella at work, he takes the umbrella and walk back home.

    Your task is to help out Cedric to determine the minimum number of umbrella he needs to start with for some days so that he does not get drenched. The known info is an array of weather conditions for each half-day. The possible values are "clear", "sunny", "cloudy", "rainy", "windy" or "thunderstorms".

    For example, the input is ["sunny", "rainy", "cloudy", "clear"] the first two values represent a day which is sunny in the morning and rainy in the afternoon. Cedric can have some umbrellas at home and some at CompanyX. However, he will never take an umbrella if it does not rain.

    So far, it seems simple. Unfortunately, Cedric will not understand a simple meaningless array input and integer output if presented to him. You should create an user friendly weather interface where Cedric will be able to input the weather conditions days and your page will present him the information on the minimum number of umbrellas he will need at start.


    Some test cases:

    minimumUmbrellas(["rainy", "clear", "rainy", "cloudy"]) - should return 2 because Cedric takes an umbrella from home on the first morning. In the afternoon since the weather is clear, he does not need an umbrella. However, the next morning, the weather is rainy, so Cedric needs an umbrella at home.

    minimumUmbrellas(["sunny", "clear"]) - should return 0 since it never rains.


    Assessment


    1. Create a JS function that takes as input an array of string ("clear", "sunny", "cloudy", "rainy", "windy" or "thunderstorms") and returns the minimum number of umbrella that Cedric must start with - 30 points
    2. Create a weather widget that takes as input the array, parse it to the above function and present the information to Cedric - 40 points
    3. Create a web component that will wrap the weather widget with a good UI so that Cedric may be able to input the data and obtain the information he needs - 30 points

    Solution


    Run the demo (Might take some time to load. Be patient...) - Desktop ONLY
    View code on Github
    View UI/UX Design on Behance