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

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

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

Резултати

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

Код

class Integer
def prime_divisors
factors = []
(2..abs).each do |number|
factors << number if (self % number == 0) && factors.all? { |factor| number % factor != 0 }
end
factors
end
end
class Range
def fizzbuzz
map do |n|
if n % 15 == 0
:fizzbuzz
elsif n % 5 == 0
:buzz
elsif n % 3 == 0
:fizz
else
n
end
end
end
end
class Hash
def group_values
result = {}
each do |key, value|
result[value] ||= []
result[value] << key
end
result
end
end
class Array
def densities
map { |element| count(element) }
end
end

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

........

Finished in 0.00933 seconds
8 examples, 0 failures

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

Георги обнови решението на 14.10.2012 02:59 (преди около 12 години)

+class Integer
+ def prime_divisors
+ factors = []
+ (2..self.abs).each do |number|
+ if self % number == 0 && !factors.find { |factor| number % factor == 0 }
+ factors.push(number)
+ end
+ end
+ factors
+ end
+end
+
+class Range
+ def fizzbuzz
+ self.map do |n|
+ if n % 15 == 0
+ :fizzbuzz
+ elsif n % 5 == 0
+ :buzz
+ elsif n % 3 == 0
+ :fizz
+ else
+ n
+ end
+ end
+ end
+end
+
+class Hash
+ def group_values
+ result = {}
+ self.each do |key, value|
+ if result.key?(value)
+ result[value].push(key)
+ else
+ result[value] = [].push(key)
+ end
+ end
+ result
+ end
+end
+
+class Array
+ def densities
+ self.map do |element|
+ element = self.count(element)
+ end
+ end
+end
  • Приятелю, идентирай си и си подреди правилно кода. Следвай указанията в https://github.com/fmi/ruby-style-guide
  • Изпускай self., в твоя случай никъде не е нужно и обикновено се изпуска в тези ситуации
  • За #densities e добре, че си открил как да ползваш Enumerable#count, но това присвояване в map-а е абсолютно излишно
  • В #prime_divisors може би е по-подходящо да ползваш Enumerable#any?/Enumerable#all?, отколкото find?. push също се избягва, обикновено се ползва <<

За group_values има една типична конструкция, нещо от типа на:

result[value] ||= []
result[value] << key

Георги обнови решението на 14.10.2012 23:31 (преди около 12 години)

+
class Integer
- def prime_divisors
- factors = []
- (2..self.abs).each do |number|
- if self % number == 0 && !factors.find { |factor| number % factor == 0 }
- factors.push(number)
- end
- end
- factors
- end
+ def prime_divisors
+ factors = []
+ (2..abs).each do |number|
+ factors << number if (self % number == 0) && factors.all? { |factor| number % factor != 0 }
+ end
+ factors
+ end
end
-class Range
- def fizzbuzz
- self.map do |n|
- if n % 15 == 0
- :fizzbuzz
- elsif n % 5 == 0
- :buzz
- elsif n % 3 == 0
- :fizz
- else
- n
- end
- end
- end
+class Range
+ def fizzbuzz
+ map do |n|
+ if n % 15 == 0
+ :fizzbuzz
+ elsif n % 5 == 0
+ :buzz
+ elsif n % 3 == 0
+ :fizz
+ else
+ n
+ end
+ end
+ end
end
class Hash
- def group_values
- result = {}
- self.each do |key, value|
- if result.key?(value)
- result[value].push(key)
- else
- result[value] = [].push(key)
- end
- end
- result
- end
+ def group_values
+ result = {}
+ each do |key, value|
+ result[value] ||= []
+ result[value] << key
+ end
+ result
+ end
end
class Array
- def densities
- self.map do |element|
+ def densities
- element = self.count(element)
+ map { |element| count(element) }
- end
+ end
- end
+end
-end