Иван обнови решението на 19.10.2011 14:53 (преди около 13 години)
+class Array
+ def to_hash
+ to_return = {}
+ self.each { |el| to_return[ el.first ] = el.last }
+ to_return
+ end
+
+ def index_by
+ raise ArgumentError unless block_given?
+ to_return = {}
+ self.each { |el| to_return[yield el] = el }
+ to_return
+ end
+
+ def subarray_count(subarray)
+ raise ArgumentException if subarray.empty?
+ to_return = 0
+ victim = self.dup
+ while victim.length >= subarray.length do
+ to_return += 1 if victim.first(subarray.length) == subarray
+ victim.shift
+ end
+ to_return
+ end
+
+ def occurences_count
+ to_return = Hash.new(0)
+ self.each do |el|
+ next if to_return.has_key? el
+ diff = self - Array(el)
+ to_return[el] = self.length - diff.length
+ end
+ to_return
+ end
+end
-
raise "index_by requires a block" unless block_given?
е малко по-добре. Аз не бих го писал, понеже така или иначе ще получиш грешка. -
self.
пред всички тези неща е излишен -
victim
го коментирахме в час