Георги обнови решението на 22.10.2011 13:01 (преди около 13 години)
+class Array
+
+ def to_hash
+ res = {}
+ self.each do |v|
+ res[v[0]] = v[1]
+ end
+ res
+ end
+
+ def subarray_count(sub)
+ res = 0
+ (0..(self.length - sub.length)).each do |v|
+ if sub == self[v, sub.length]
+ res += 1
+ end
+ end
+ res
+ end
+
+ def index_by
+ res = {}
+ self.each do |v|
+ res[yield v] = v
+ end
+ res
+ end
+
+ def occurences_count
+ res = Hash.new(0)
+ self.each do |v|
+ res[v] = self.count(v)
+ end
+ res
+ end
+
+end
-
self.
на всички места е излишно. - Идентираш с табулаци. Ruby се идентира с два интервала. Оправи си редактора.
-
res
,v
иsub
са странни имена. - скобите се поставят така:
res[yield(v)]
- Вместо да правиш
(0..(self.length - sub.length)).each
, можеш да направиш1.upto(length - sub.length).count
. Така можеш да елиминираш temp-аres
.
Решението ти е добро, с изключение на кратките имена и табулациите.