Решение на Втора задача - хешове, масиви и структура от Михаил Здравков

Обратно към всички решения

Към профила на Михаил Здравков

Резултати

  • 6 точки от тестове
  • 0 бонус точки
  • 6 точки общо
  • 15 успешни тест(а)
  • 0 неуспешни тест(а)

Код

module HashAndArrayMethods
def fetch_deep(path)
key, rest = path.split '.', 2
value = get_value key
return value if rest.nil? || value.nil?
value.fetch_deep rest
end
end
class Hash
prepend HashAndArrayMethods
def get_value(key)
self[key] || self[key.to_sym]
end
def reshape(shape)
result = {}
shape.each do |k, v|
result[k] = v.is_a?(Hash) ? reshape(v) : fetch_deep(v)
end
result
end
end
class Array
prepend HashAndArrayMethods
def get_value(key)
self[Integer(key)]
end
def reshape(shape)
result = []
self.each do |v|
result.push v.reshape shape
end
result
end
end

Лог от изпълнението

...............

Finished in 0.00949 seconds
15 examples, 0 failures

История (1 версия и 0 коментара)

Михаил обнови решението на 22.10.2016 13:55 (преди над 7 години)

+module HashAndArrayMethods
+ def fetch_deep(path)
+ key, rest = path.split '.', 2
+ value = get_value key
+ return value if rest.nil? || value.nil?
+ value.fetch_deep rest
+ end
+end
+
+class Hash
+ prepend HashAndArrayMethods
+
+ def get_value(key)
+ self[key] || self[key.to_sym]
+ end
+
+ def reshape(shape)
+ result = {}
+ shape.each do |k, v|
+ result[k] = v.is_a?(Hash) ? reshape(v) : fetch_deep(v)
+ end
+ result
+ end
+end
+
+class Array
+ prepend HashAndArrayMethods
+
+ def get_value(key)
+ self[Integer(key)]
+ end
+
+ def reshape(shape)
+ result = []
+ self.each do |v|
+ result.push v.reshape shape
+ end
+ result
+ end
+end