Student Records


Ruby Lambda functions Splats Public New

Hard 

15min


Implement the StudentRecords.filter method. It should accept a list of students and a variable number of filters. The filters will be passed in as lambdas, each of which will take one student record and return a boolean value.

StudentRecords.filter should return a list of student records that have passed through all the filters.

If no filters are provided, the list of student records should be returned as is. If no students pass through all the provided filters (or if no students are provided), return an empty array.

For example, consider the following code:

students = [
  { name: 'Thomas Edison', gpa: 3.45 },
  { name: 'Grace Hopper', gpa: 3.99 },
  { name: 'Leonardo DaVinci', gpa: 2.78 }
]

honor_roll = ->(record) { record[:gpa] > 3.0 }

StudentRecords.filter(students, honor_roll) should return:

[{:name=>"Thomas Edison", :gpa=>3.45},{:name=>"Grace Hopper", :gpa=>3.99}]
Ruby 2.5.1
   

  •   Example case: Wrong answer
  •   No filters case and no matching filters case: Wrong answer
  •   One filter returns only relevant students: Wrong answer
  •   Multiple filters return only students who match all filters: Wrong answer