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

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

Към профила на Веселин Русинов

Резултати

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

Код

class Integer
def prime?
number = abs
(2..number-1).each { |cur_num| return false if (number%cur_num == 0) }
true
end
def prime_divisors
number = abs
factor = []
(2..number-1).each { |cur_num| factor << cur_num if ( number%cur_num == 0 and cur_num.prime?)}
return factor
end
end
class Range
def fizzbuzz
result = []
each do |cur_num|
if ( cur_num % 3 == 0) && (cur_num % 5 == 0)
result << :fizzbuzz
elsif cur_num % 3 == 0
result << :fizz
elsif cur_num % 5 == 0
result << :buzz
else
result << cur_num
end
end
return result
end
end
class Hash
def group_values
hash = {}
each {|key, value| (hash[value] ||= []) << key}
return hash
end
end
class Array
def densities
hash = Hash.new(0)
each {|cur_num| hash[cur_num] += 1}
arr = []
each {|cur_num| arr << hash[cur_num]}
return arr
end
end

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

........

Finished in 0.00734 seconds
8 examples, 0 failures

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

Веселин обнови решението на 14.10.2012 17:14 (преди над 11 години)

+class Integer
+ def prime?
+ number = abs
+ (2..number-1).each { |cur_num| return false if (number%cur_num == 0) }
+ true
+ end
+
+ def prime_divisors
+ number = abs
+ factor = []
+ (2..number-1).each { |cur_num| factor << cur_num if ( number%cur_num == 0 and cur_num.prime?)}
+ return factor
+ end
+end
+
+class Range
+ def fizzbuzz
+ result = []
+ each do |cur_num|
+ if ( cur_num % 3 == 0) && (cur_num % 5 == 0)
+ result << :fizzbuzz
+ elsif cur_num % 3 == 0
+ result << :fizz
+ elsif cur_num % 5 == 0
+ result << :buzz
+ else
+ result << cur_num
+ end
+ end
+
+ return result
+ end
+end
+
+class Hash
+ def group_values
+ hash = {}
+ each {|key, value| (hash[value] ||= []) << key}
+ return hash
+ end
+end
+
+class Array
+ def densities
+ hash = Hash.new(0)
+ each {|cur_num| hash[cur_num] += 1}
+
+ arr = []
+ each {|cur_num| arr << hash[cur_num]}
+ return arr
+ end
+end
  • cur_num е лошо име на променлива, дори да дава материал за забавни лекции. Първо защото е съкращение и второ, защото "current" частта предполага число, което е предишно или следващо, каквото няма.
  • (hash[value] ||= []) << key е гадно. Това е по-добре да се запише на два реда - по-четимо е.
  • Не си много консистентен с поставяне на whitespace
  • return-а на края на всеки метод не просто не е задължителен, но дори е противопоказателен.
  • Изпуснал си няколко възможности да правиш map и правиш each вместо това.