Георги обнови решението на 14.10.2012 12:39 (преди около 12 години)
+class Integer
+ def prime_divisors
+ #work with absolute value only
+ real_self = self.abs
+
+ result = []
+ (2..real_self).each do |k|
+ if (real_self % k == 0) and k.is_prime?
+ then result << k
+ end
+ end
+ result
+ end
+
+ #works with positive numbers only, but I will use it only with positives anyway
+ def is_prime?
+ if self < 2
+ false
+ end
+
+ (2..self-1).each do |k|
+ if (self%k == 0)
+ then return false
+ end
+ end
+ true
+ end
+end
+
+
+
+class Range
+ def fizzbuzz
+ our_range = self.to_a
+ result = []
+ our_range.each do |k|
+ if k% 15 == 0
+ then result << :fizzbuzz
+ elsif k % 3 == 0
+ then result << :fizz
+ elsif k% 5 == 0
+ then result << :buzz
+ else
+ result << k
+ end
+ end
+ result
+ end
+end
+
+
+class Hash
+ def group_values
+ result = {}
+ self.each_value do |value|
+ result[value]=get_keys value
+ end
+ result
+ end
+
+ def get_keys(value)
+ result = []
+ self.each do |key,v|
+ if v == value
+ then result << key
+ end
+ end
+ result
+ end
+end
+
+class Array
+ def densities
+ result = []
+ self.each do |k|
+ density = get_density k
+ result << density
+ end
+ result
+ end
+
+ def get_density(k)
+ density = 0
+ self.each do |t|
+ if t == k
+ then density+=1
+ end
+ end
+ density
+ end
+end
-
self.
може и трябва да се изпусне навсякъде, където го ползваш ти, тъй като се подразбира - Коментарите ти са излишни в случая; кодът трябва да е достатъчно ясен, за да няма нужда от коментари, а с тази задача това може да се постигне лесно (освен това не отговарят на стила за коментари в style guide-а).
- На ред 18 не връщаш (нямаш
return
) и имплементацията наis_prime?
ти е бъгава. -
real_self
не е добро име на променлива; защо да е по-real отself
? :) - На ред 8-ми изпускай скобите около условиет
- Пробвай да напишеш
fizzbuzz
иdensities
сmap
, вместо сeach
- Когато пишеш
if
на няколко реда,then
винаги се изпуска - Пробвай да напишеш
get_keys
съсselect
-
t
,k
и сродни не са добри имена на променливи. Виж това мнение по темата: http://37signals.com/svn/posts/3250-clarity-over-brevity-in-variable-and-method-names