Иван обнови решението на 14.10.2012 14:52 (преди около 12 години)
+class Integer
+ def prime_divisors
+
+ def is_prime(n)
+ 2.upto(n-1) do |x|
+ if n % x ==0 then return false
+ end
+ end
+ return true
+ end
+
+ help_var = self
+
+ if help_var<0 then help_var = help_var*(-1)
+ end
+
+ list=[]
+
+ 2.upto(help_var) do |i|
+ if help_var % i == 0 and is_prime(i) then list<<i
+ end
+ end
+
+ list
+
+ end
+end
+
+class Range
+ def fizzbuzz
+
+ help_range = self
+ list = []
+
+ help_range.each do |i|
+ if i % 3 == 0 then list<< :fizz
+ end
+ if i % 5 == 0 then list<< :buzz
+ end
+ if i % 3 == 0 and i % 5 == 0 then list<< :fizzbuzz
+ end
+ if not(i % 3 == 0) and not(i % 5 == 0) then list<< i
+ end
+ end
+
+ list
+
+ end
+end
+
+class Hash
+ def group_values
+
+ help_hash = self
+ new_hash = Hash.new
+ list_values = []
+
+ help_hash.each_value do |x|
+ if not(list_values.include?(x)) then list_values<<x
+ end
+ end
+
+ list_values.each do |i|
+ list=[]
+ help_hash.each_pair do |k, v|
+ if v == i then list<<k
+ end
+ end
+ new_hash[i] = list
+ end
+
+ new_hash
+
+ end
+end
+
+class Array
+ def densities
+
+ help_arr = self
+ list = []
+
+ help_arr.each do |x|
+ list<< help_arr.count(x)
+ end
+
+ list
+
+ end
+end
-
help_var
е едно от най-лошите имена на променливи, които съм виждал в тази задача. -
is_prime
не е име на метод в Ruby. Пише сеprime?
. -
help_var*(-1)
се записва като-help_var
. С изключение на името, разбира се. - Подравняването ти е ужасно. Моля погледни style guide-а.
- В Ruby методи на могат да се влагат.
Всичко това ще ти струва 1 точка.