Вычесть значения в хэше из соответствующих значений в другом хэше

Я хотел бы иметь возможность вычесть два хэша и получить третий хэш в Ruby.

Два хэша выглядят так:

h1 = {"Cat" => 100, "Dog" => 5, "Bird" => 2, "Snake" => 10}
h1.default = 0

h2 = {"cat" => 50, "dog" => 3, "BIRD" => 4, "Mouse" => 75, "Snake" => 10}
h2.default = 0

Я хотел бы иметь возможность вызывать метод на h1 следующим образом:

h1.difference(h2)

и получить этот хеш в результате:

{"Cat" => 50, "Dog" => 2, "BIRD" => -2, "Mouse" => -75}

Я хотел бы создать новый хэш с ключами из обоих хэшей, а значениями нового хэша должны быть значения ключа в первом хеше за вычетом значения этого ключа во втором хэше. Подвох в том, что мне нравится, что этот метод Hash работает независимо от случая ключей. Другими словами, я "хотел бы" Cat " сопоставить с "кошкой".

Вот что я имею до сих пор:

class Hash
  def difference(another_hash)
    (keys + another_hash.keys).map { |key| key.strip }.uniq.inject(Hash.new(0)) { |acc, key| acc[key] = (self[key] - another_hash[key]); acc }.delete_if { |key, value| value == 0 }
  end
end

Это нормально, но, к сожалению, результат не тот, который я хочу.

Любая помощь будет оценена.

Ответы на вопрос(5)

Ваш ответ на вопрос