Решение на Първа задача от Владимир Алексиев

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

Към профила на Владимир Алексиев

Резултати

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

Код

class Integer
def prime_divisors
(2..self.abs-1).select do |n|
n.prime? && (self.abs%n==0)
end
end
def prime?
(2..self.abs-1).each do |n|
return false unless self.abs % n != 0
end
true
end
end
class Range
def fizzbuzz
result = []
self.each do |n|
if(n%3 == 0 && n%5==0)
result << :fizzbuzz
elsif(n%3 == 0)
result<<:fizz
elsif(n%5 == 0)
result << :buzz
else
result<<n
end
end
result
end
end
class Hash
def group_values
result = {}
self.each do |key, val|
result[val] ||= []
result[val] << key.to_sym
end
result
end
end
class Array
def densities
count = {}
result = []
self.each do |val|
count[val] ||= 0
count[val] += 1
end
self.each_with_index do |val, key|
result[key] = count[val]
end
result
end
end

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

........

Finished in 0.00761 seconds
8 examples, 0 failures

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

Владимир обнови решението на 15.10.2012 10:54 (преди около 12 години)

+class Integer
+
+ def prime_divisors
+ (2..self.abs-1).select do |n|
+ n.prime? && (self.abs%n==0)
+ end
+ end
+
+ def prime?
+ (2..self.abs-1).each do |n|
+ return false unless self.abs % n != 0
+ end
+ true
+ end
+
+end
+
+class Range
+
+ def fizzbuzz
+ result = []
+ self.each do |n|
+ if(n%3 == 0 && n%5==0)
+ result << :fizzbuzz
+ elsif(n%3 == 0)
+ result<<:fizz
+ elsif(n%5 == 0)
+ result << :buzz
+ else
+ result<<n
+ end
+ end
+ result
+ end
+
+end
+
+class Hash
+
+ def group_values
+ result = {}
+ self.each do |key, val|
+ result[val] ||= []
+ result[val] << key.to_sym
+ end
+ result
+ end
+
+end
+
+class Array
+
+ def densities
+ count = {}
+ result = []
+ self.each do |val|
+ count[val] ||= 0
+ count[val] += 1
+ end
+ self.each_with_index do |val, key|
+ result[key] = count[val]
+ end
+ result
+ end
+
+end
  • Не оставяй празен ред след началото на дефиниция на клас (class Something) и преди края й (end)
  • self. е излишно на всички места, на които го ползваш; в такива случаи се изпуска по конвенция
  • Не спазваш съвсем конвенциите за поставяне на whitespace, по-специално около "оператори" от типа на %, == и други; за справка виж ръководството за стил на курса, защото занапред ще взимаме точки за това
  • fizzbuzz и densities се получават много добре с map; допълнително, densities се прави на един ред, с този код: map { |item| count item } :)

Другото като цяло е прилично за първо решение. За справка може да разгледаш решенията на които сме дали бонус точки, както и може да видиш нашето примерно решение в слайдовете от предния път, ако си го пропуснал.