Решение на Първа задача от Пламен Тотев

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

Към профила на Пламен Тотев

Резултати

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

Код

class Integer
def prime_divisors
return abs.prime_divisors if self < 0
return [] if self == 0 || self == 1
divisors.select { |n| n.prime? }
end
def divisors
return [] if zero?
return abs.divisors if self < 0
1.upto(self).select { |n| self % n == 0 }
end
def prime?
return false if self < 2
2.upto(self - 1).all? { |n| self % n > 0 }
end
end
class Range
def fizzbuzz
map do |n|
if n % 5 == 0 && n % 3 == 0
:fizzbuzz
elsif n % 3 == 0
:fizz
elsif n % 5 == 0
:buzz
else
n
end
end
end
end
class Hash
def group_values
result = Hash.new { |hash, key| hash[key] = [] }
each_pair { |key, value| result[value] << key }
result
end
end
class Array
def densities
map { |n| count n }
end
end

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

........

Finished in 0.00743 seconds
8 examples, 0 failures

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

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

+class Integer
+ def prime_divisors
+ return abs.prime_divisors if self < 0
+ return nil if self == 0 || self == 1
+
+ divisors = []
+ value = self
+ 2.upto(self) do |n|
+ break if n > value
+
+ if value % n == 0
+ divisors << n
+ value /= n while value % n == 0
+ end
+ end
+
+ divisors
+ end
+end
+
+class Range
+ def fizzbuzz
+ result = []
+ each do |n|
+ if n % 5 == 0 && n % 3 == 0
+ result << :fizzbuzz
+ elsif n % 3 == 0
+ result << :fizz
+ elsif n % 5 == 0
+ result << :buzz
+ else
+ result << n
+ end
+ end
+
+ result
+ end
+end
+
+class Hash
+ def group_values
+ result = Hash.new { |hash, key| hash[key] = [] }
+ each_pair { |key, value| result[value] << key }
+
+ result
+ end
+end
+
+class Array
+ def densities
+ map { |n| count n }
+ end
+end

Пламен обнови решението на 15.10.2012 13:33 (преди около 12 години)

class Integer
def prime_divisors
return abs.prime_divisors if self < 0
return nil if self == 0 || self == 1
- divisors = []
- value = self
- 2.upto(self) do |n|
- break if n > value
-
- if value % n == 0
- divisors << n
- value /= n while value % n == 0
- end
- end
+ divisors = 2.upto(self).select { |n| self % n == 0 }
+ divisors.select { |n| n.prime? }
+ end
+
+ def prime?
+ return false if self < 2
- divisors
+ 2.upto(self - 1).all? { |n| self % n > 0 }
end
end
class Range
def fizzbuzz
- result = []
- each do |n|
+ map do |n|
if n % 5 == 0 && n % 3 == 0
- result << :fizzbuzz
+ :fizzbuzz
elsif n % 3 == 0
- result << :fizz
+ :fizz
elsif n % 5 == 0
- result << :buzz
+ :buzz
else
- result << n
+ n
end
end
-
- result
end
end
class Hash
def group_values
result = Hash.new { |hash, key| hash[key] = [] }
each_pair { |key, value| result[value] << key }
result
end
end
class Array
def densities
map { |n| count n }
end
end

Пламен обнови решението на 15.10.2012 13:33 (преди около 12 години)

class Integer
def prime_divisors
return abs.prime_divisors if self < 0
return nil if self == 0 || self == 1
divisors = 2.upto(self).select { |n| self % n == 0 }
divisors.select { |n| n.prime? }
end
def prime?
return false if self < 2
- 2.upto(self - 1).all? { |n| self % n > 0 }
+ 2.upto(self - 1).all? { |n| self % n > 0 }
end
end
class Range
def fizzbuzz
map do |n|
if n % 5 == 0 && n % 3 == 0
:fizzbuzz
elsif n % 3 == 0
:fizz
elsif n % 5 == 0
:buzz
else
n
end
end
end
end
class Hash
def group_values
result = Hash.new { |hash, key| hash[key] = [] }
each_pair { |key, value| result[value] << key }
result
end
end
class Array
def densities
map { |n| count n }
end
end

Пламен обнови решението на 15.10.2012 14:19 (преди около 12 години)

class Integer
def prime_divisors
return abs.prime_divisors if self < 0
- return nil if self == 0 || self == 1
+ return [] if self == 0 || self == 1
- divisors = 2.upto(self).select { |n| self % n == 0 }
divisors.select { |n| n.prime? }
+ end
+
+ def divisors
+ return [] if zero?
+ return abs.divisors if self < 0
+
+ 1.upto(self).select { |n| self % n == 0 }
end
def prime?
return false if self < 2
2.upto(self - 1).all? { |n| self % n > 0 }
end
end
class Range
def fizzbuzz
map do |n|
if n % 5 == 0 && n % 3 == 0
:fizzbuzz
elsif n % 3 == 0
:fizz
elsif n % 5 == 0
:buzz
else
n
end
end
end
end
class Hash
def group_values
result = Hash.new { |hash, key| hash[key] = [] }
each_pair { |key, value| result[value] << key }
result
end
end
class Array
def densities
map { |n| count n }
end
end