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

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

Към профила на Станислав Гатев

Резултати

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

Код

class Integer
def prime?
self > 1 and (2..self**0.5).none? { |n| (self % n).zero? }
end
def divisors
(1..self.abs).select { |n| (self % n).zero? }
end
def prime_divisors
divisors.select { |n| n.prime? }
end
end
class Range
def fizzbuzz
to_a.tap do |result|
each_with_index.select { |n, i| (n % 3).zero? or (n % 5).zero? }.map do |n, i|
result[i] = :"#{ "fizz" if (n % 3).zero? }#{ "buzz" if (n % 5).zero? }"
end
end
end
end
class Hash
def group_values
Hash.new { |h, k| h[k] = [] }.tap { |result| each { |k, v| result[v] << k } }
end
end
class Array
def densities
map { |n| count n }
end
end

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

........

Finished in 0.00764 seconds
8 examples, 0 failures

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

Станислав обнови решението на 13.10.2012 03:30 (преди над 11 години)

+class Integer
+ def prime?
+ self > 1 and (2..Math.sqrt(self).to_i).all? { |n| self % n != 0 }
+ end
+
+ def divisors
+ (1..self).select { |n| self.%(n).zero? }
+ end
+
+ def prime_divisors
+ self.divisors.select { |n| n.prime? }
+ end
+end
+
+class Range
+ def fizzbuzz
+ self.to_a.tap do |result|
+ each_with_index.select { |n, i| (n % 3).zero? or (n % 5).zero? }.collect do |n, i|
+ result[i] = ("#{ "fizz" if (n % 3).zero? }#{ "buzz" if (n % 5).zero? }").to_sym
+ end
+ end
+ end
+end
+
+class Hash
+ def group_values
+ Hash.new { |hash, key| hash[key] = Array.new }.tap do |result|
+ each { |key, value| result[value] << key }
+ end
+ end
+end
+
+class Array
+ def densities
+ self.collect { |n| self.count(n) }
+ end
+end

Станислав обнови решението на 13.10.2012 13:25 (преди над 11 години)

class Integer
def prime?
- self > 1 and (2..Math.sqrt(self).to_i).all? { |n| self % n != 0 }
+ self > 1 and (2..self ** 0.5).all? { |n| self % n != 0 }
end
def divisors
(1..self).select { |n| self.%(n).zero? }
end
def prime_divisors
self.divisors.select { |n| n.prime? }
end
end
class Range
def fizzbuzz
self.to_a.tap do |result|
- each_with_index.select { |n, i| (n % 3).zero? or (n % 5).zero? }.collect do |n, i|
- result[i] = ("#{ "fizz" if (n % 3).zero? }#{ "buzz" if (n % 5).zero? }").to_sym
+ each_with_index.select { |n, i| (n % 3).zero? or (n % 5).zero? }.map do |n, i|
+ result[i] = :"#{ "fizz" if (n % 3).zero? }#{ "buzz" if (n % 5).zero? }"
end
end
end
end
class Hash
def group_values
Hash.new { |hash, key| hash[key] = Array.new }.tap do |result|
each { |key, value| result[value] << key }
end
end
end
class Array
def densities
- self.collect { |n| self.count(n) }
+ map { |n| self.count(n) }
end
end

Станислав обнови решението на 13.10.2012 13:44 (преди над 11 години)

class Integer
def prime?
- self > 1 and (2..self ** 0.5).all? { |n| self % n != 0 }
+ self > 1 and (2..self ** 0.5).none? { |n| remainder(n).zero? }
end
def divisors
- (1..self).select { |n| self.%(n).zero? }
+ (1..self).select { |n| remainder(n).zero? }
end
def prime_divisors
- self.divisors.select { |n| n.prime? }
+ divisors.select { |n| n.prime? }
end
end
class Range
def fizzbuzz
self.to_a.tap do |result|
each_with_index.select { |n, i| (n % 3).zero? or (n % 5).zero? }.map do |n, i|
result[i] = :"#{ "fizz" if (n % 3).zero? }#{ "buzz" if (n % 5).zero? }"
end
end
end
end
class Hash
def group_values
Hash.new { |hash, key| hash[key] = Array.new }.tap do |result|
each { |key, value| result[value] << key }
end
end
end
class Array
def densities
map { |n| self.count(n) }
end
end

Станислав обнови решението на 13.10.2012 14:00 (преди над 11 години)

class Integer
def prime?
- self > 1 and (2..self ** 0.5).none? { |n| remainder(n).zero? }
+ self > 1 and (2..self ** 0.5).none? { |n| (self % n).zero? }
end
def divisors
- (1..self).select { |n| remainder(n).zero? }
+ (1..self).select { |n| (self % n).zero? }
end
def prime_divisors
divisors.select { |n| n.prime? }
end
end
class Range
def fizzbuzz
- self.to_a.tap do |result|
+ to_a.tap do |result|
each_with_index.select { |n, i| (n % 3).zero? or (n % 5).zero? }.map do |n, i|
result[i] = :"#{ "fizz" if (n % 3).zero? }#{ "buzz" if (n % 5).zero? }"
end
end
end
end
class Hash
def group_values
- Hash.new { |hash, key| hash[key] = Array.new }.tap do |result|
- each { |key, value| result[value] << key }
+ Hash.new { |h, k| h[k] = Array.new }.tap do |result|
+ each { |k, v| result[v] << k }
end
end
end
class Array
def densities
map { |n| self.count(n) }
end
end

Станислав обнови решението на 13.10.2012 14:12 (преди над 11 години)

class Integer
def prime?
self > 1 and (2..self ** 0.5).none? { |n| (self % n).zero? }
end
def divisors
(1..self).select { |n| (self % n).zero? }
end
def prime_divisors
divisors.select { |n| n.prime? }
end
end
class Range
def fizzbuzz
to_a.tap do |result|
each_with_index.select { |n, i| (n % 3).zero? or (n % 5).zero? }.map do |n, i|
result[i] = :"#{ "fizz" if (n % 3).zero? }#{ "buzz" if (n % 5).zero? }"
end
end
end
end
class Hash
def group_values
- Hash.new { |h, k| h[k] = Array.new }.tap do |result|
+ Hash.new { |h, k| h[k] = [] }.tap do |result|
each { |k, v| result[v] << k }
end
end
end
class Array
def densities
map { |n| self.count(n) }
end
end

Станислав обнови решението на 13.10.2012 23:30 (преди над 11 години)

class Integer
def prime?
self > 1 and (2..self ** 0.5).none? { |n| (self % n).zero? }
end
def divisors
- (1..self).select { |n| (self % n).zero? }
+ (1..self.abs).select { |n| (self % n).zero? }
end
def prime_divisors
divisors.select { |n| n.prime? }
end
end
class Range
def fizzbuzz
to_a.tap do |result|
each_with_index.select { |n, i| (n % 3).zero? or (n % 5).zero? }.map do |n, i|
result[i] = :"#{ "fizz" if (n % 3).zero? }#{ "buzz" if (n % 5).zero? }"
end
end
end
end
class Hash
def group_values
Hash.new { |h, k| h[k] = [] }.tap do |result|
each { |k, v| result[v] << k }
end
end
end
class Array
def densities
map { |n| self.count(n) }
end
end

Станислав обнови решението на 15.10.2012 14:01 (преди над 11 години)

class Integer
def prime?
self > 1 and (2..self ** 0.5).none? { |n| (self % n).zero? }
end
def divisors
(1..self.abs).select { |n| (self % n).zero? }
end
def prime_divisors
divisors.select { |n| n.prime? }
end
end
class Range
def fizzbuzz
to_a.tap do |result|
each_with_index.select { |n, i| (n % 3).zero? or (n % 5).zero? }.map do |n, i|
result[i] = :"#{ "fizz" if (n % 3).zero? }#{ "buzz" if (n % 5).zero? }"
end
end
end
end
class Hash
def group_values
Hash.new { |h, k| h[k] = [] }.tap do |result|
each { |k, v| result[v] << k }
end
end
end
class Array
def densities
- map { |n| self.count(n) }
+ map { |n| count n }
end
end

Станислав обнови решението на 15.10.2012 14:16 (преди над 11 години)

class Integer
def prime?
- self > 1 and (2..self ** 0.5).none? { |n| (self % n).zero? }
+ self > 1 and (2..self**0.5).none? { |n| (self % n).zero? }
end
def divisors
(1..self.abs).select { |n| (self % n).zero? }
end
def prime_divisors
divisors.select { |n| n.prime? }
end
end
class Range
def fizzbuzz
to_a.tap do |result|
each_with_index.select { |n, i| (n % 3).zero? or (n % 5).zero? }.map do |n, i|
result[i] = :"#{ "fizz" if (n % 3).zero? }#{ "buzz" if (n % 5).zero? }"
end
end
end
end
class Hash
def group_values
Hash.new { |h, k| h[k] = [] }.tap do |result|
each { |k, v| result[v] << k }
end
end
end
class Array
def densities
map { |n| count n }
end
end

Станислав обнови решението на 15.10.2012 15:31 (преди над 11 години)

class Integer
def prime?
self > 1 and (2..self**0.5).none? { |n| (self % n).zero? }
end
def divisors
(1..self.abs).select { |n| (self % n).zero? }
end
def prime_divisors
divisors.select { |n| n.prime? }
end
end
class Range
def fizzbuzz
to_a.tap do |result|
each_with_index.select { |n, i| (n % 3).zero? or (n % 5).zero? }.map do |n, i|
result[i] = :"#{ "fizz" if (n % 3).zero? }#{ "buzz" if (n % 5).zero? }"
end
end
end
end
class Hash
def group_values
- Hash.new { |h, k| h[k] = [] }.tap do |result|
- each { |k, v| result[v] << k }
- end
+ Hash.new { |h, k| h[k] = [] }.tap { |result| each { |k, v| result[v] << k } }
end
end
class Array
def densities
map { |n| count n }
end
end
  • Range е Enumerable и напълно спокойно си можел да направиш директно map. В твоя случай (май) реално игнорираш това, което връща map и си го ползваш като още 1 each_with_index със side effect
  • Използвай по-описателни имена на променливите (още дори нямаш ограничение в дължината на реда :))
  • 1.upto(10) е по-добре от (1..10)
  • fizzbuzz-а ти е много сложен. Далеч по-просто е да направиш един map, в който да има if/elsif/elsif/else.
  • Две нива на влагане на фигурно скоби на един ред е твърде много (Hash#group_values)