Решение на Първа задача от Ангел Лазаров

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

Към профила на Ангел Лазаров

Резултати

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

Код

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

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

..F..............

Failures:

  1) Array#to_hash works when the keys and values are arrays
     Failure/Error: [[1, [2, 3]], [[4, 5], 6]].to_hash.should eq(1 => [2, 3], [4, 5] => 6)
       
       expected {1=>[2, 3], [4, 5]=>6}
            got {1=>2, 3=>4, 5=>6}
       
       (compared using ==)
       
       Diff:
       @@ -1,2 +1,2 @@
       -{1=>[2, 3], [4, 5]=>6}
       +{1=>2, 3=>4, 5=>6}
     # /tmp/d20111025-2903-zhbdin/spec.rb:11:in `block (2 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/homework/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

Finished in 0.28341 seconds
17 examples, 1 failure

Failed examples:

rspec /tmp/d20111025-2903-zhbdin/spec.rb:10 # Array#to_hash works when the keys and values are arrays

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

Ангел обнови решението на 18.10.2011 00:07 (преди над 12 години)

+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