Решение на Първа задача от Николай Хубанов

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

Към профила на Николай Хубанов

Резултати

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

Код

class Array
def to_hash
result = {}
self.each { |pair| result[pair[0]] = pair[1] }
result
end
def index_by(&index_block)
result = {}
self.each do |element|
index = yield element
result[index] = element
end
result
end
def subarray_count(subarray)
result = 0
for i in 0..(self.size - subarray.size)
result = result + 1 if self[i...(i + subarray.size)] == subarray
end
result
end
def occurences_count
result = Hash.new(0)
self.each { |element| result[element] = result.fetch(element, 0) + 1 }
result
end
end

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

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

Finished in 0.01391 seconds
17 examples, 0 failures

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

Николай обнови решението на 24.10.2011 01:09 (преди около 13 години)

+class Array
+ def to_hash
+ result = {}
+ self.each { |pair| result[pair[0]] = pair[1] }
+ result
+ end
+
+ def index_by(&index_block)
+ result = {}
+ self.each do |element|
+ index = yield element
+ result[index] = element
+ end
+ result
+ end
+
+ def subarray_count(subarray)
+ result = 0
+ for i in 0..(self.size - subarray.size)
+ result = result + 1 if self[i...(i + subarray.size)] == subarray
+ end
+ result
+ end
+
+ def occurences_count
+ result = Hash.new(0)
+ self.each { |element| result[element] = result.fetch(element, 0) + 1 }
+ result
+ end
+end
  • Няма нужда от експлицитно указан self в случаите на викане на метод в клас, когато методът не завършва на =; например self.each ... е по-добре само като each ...
  • В index_by няма нужда да взимаш блока, подаван на метода, в променлива (index_block), която по-долу не ползваш никъде; просто си го викай с yield и толкова
  • Относно subarray_count, виж реализацията на този метод при Стефан, ако все още не си