//------------------------------------------------------------------------------------------------------------------
// YOUR CODE: Create your Zoo "object literal" and Animal "constructor" and "prototypes" here.
//------------------------------------------------------------------------------------------------------------------

var bi = []
var qu = []

var Animal = function(name, legs) {
  this.name = name,
  this.legs = legs
}

var Zoo = {

  init: function(animals){
    for (var i = 0, l = animals.length; i < l; i++){
      if (animals[i].legs === 2) {
        bi.push(animals[i]);
      } else if (animals[i].legs === 4) {
        qu.push(animals[i]);
      } 
    }
  },

  bipeds: function(){
    return bi
  },

  quadrupeds: function(){
    return qu
  }
}

Animal.prototype.identify = function() {
  return "I am a " + this.name +" with " + this.legs + " legs."
}

//------------------------------------------------------------------------------------------------------------------
// DRIVER CODE: Do **NOT** change anything below this point. Your task is to implement code above to make this work.
//------------------------------------------------------------------------------------------------------------------

function assert(test, message) {  
  if (!test) {
    throw "ERROR: " + message;
  }
  return true;
}

var animals = [
  new Animal("Human", 2),
  new Animal("Monkey", 2),
  new Animal("Kangaroo", 2),
  new Animal("Horse", 4),
  new Animal("Cow", 4),
  new Animal("Centipede", 100)
];

Zoo.init(animals);

assert(
  Zoo.bipeds().length === 3, "the Zoo should have 3 bipeds"
);
assert(
  Zoo.quadrupeds().length === 2, "the Zoo should have 2 bipeds"
);
assert(
  animals[0].identify() === "I am a Human with 2 legs.", "humans have 2 legs"
);
assert(
  animals[2].name === "Kangaroo", "expected 'Kangaroo'"
);
assert(
  animals[0].identify === animals[5].identify, "only one implementation of the identify() function should exist"
);