Решение на Първа задача от Борис Русев

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

Към профила на Борис Русев

Резултати

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

Код

class Array
def to_hash
hash = {}
self.each { |x| hash[x.first] = x.last }
return hash
end
def index_by(&block)
hash = {}
self.each { |x| hash[block.(x)] = x }
return hash
end
def subarray_count(array)
count = 0
return 0 if array == nil or array == []
self.each_cons(array.length) { |elem| count += 1 if elem == array }
return count
end
def occurences_count
hash = Hash.new{ 0 }
self.each { |elem| hash[elem] += 1 }
return hash
end
end

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

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

Finished in 0.01395 seconds
17 examples, 0 failures

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

Борис обнови решението на 18.10.2011 22:00 (преди над 12 години)

+class Array
+ def to_hash
+ hash = {}
+ self.each { |x| hash[x.first] = x.last }
+ return hash
+ end
+
+ def index_by(&block)
+ hash = {}
+ self.each { |x| hash[block.(x)] = x }
+ return hash
+ end
+
+ def subarray_count(array)
+ count = 0
+ return 0 if array == nil or array == []
+ self.each_cons(array.length) { |elem| count += 1 if elem == array }
+ return count
+ end
+
+ def occurences_count
+ hash = Hash.new{ 0 }
+ self.each { |elem| hash[elem] += 1 }
+ return hash
+ end
+end
  • В Ruby се идентира с 2 интервала; не с 4 интервала или табове с "ширина 2"
  • Пропускай експлицитния return, когато не е нужен; например в края на функцията, за да върнеш стойността на променливата x, напиши просто x
  • Няма нужда от експлицитно указан self в случаите на викане на метод в клас, който не завършва на =; например self.each ... е по-добре само като each ...
  • sth.nil? е по-добре от sth == nil, както и some_array.empty? от some_array == [] (макар варианта с метода да е една идея по-бавен, се предпочита с оглед на по-добрата четимост)