Решение на Първа задача от Георги Бойваленков

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

Към профила на Георги Бойваленков

Резултати

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

Код

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

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

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

Finished in 0.01625 seconds
17 examples, 0 failures

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

Георги обнови решението на 22.10.2011 13:01 (преди над 12 години)

+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.

Решението ти е добро, с изключение на кратките имена и табулациите.