Николай обнови решението на 24.10.2011 01:09 (преди около 14 години)
+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, виж реализацията на този метод при Стефан, ако все още не си
