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

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

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

Резултати

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

Код

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

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

▸ Покажи лога

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

Иван обнови решението на 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 точка.