Ангел обнови решението на 18.10.2011 00:07 (преди около 13 години)
+class Array
+ def to_hash
+ return Hash[*self.flatten]
+ end
+
+ def index_by
+ hash = {}
+ self.each { |n| hash[yield(n)] = n }
+ return hash
+ end
+
+ def subarray_count(pat_arr)
+ cnt = 0
+ for i in (0...self.size)
+ cnt += 1 if pat_arr == self[i...(i+pat_arr.size)]
+ end
+ return cnt
+ end
+
+ def occurences_count
+ hash = Hash.new(0)
+ self.each { |n| hash[n] = hash.fetch(n,0) + 1 }
+ return hash
+ end
+end
-
Hash[*array.flatten]
очевидно не работи - Няма нужда от
return
-овете - Не ползвай съкратени имена като
cnt
иpar_arr
, понеже е трудно човек да се сети откъде идват. - В
#occurences_count
може да напишеш простоhash[n] += 1