Решение на Първа задача от Кирчо Кирев

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

Към профила на Кирчо Кирев

Резултати

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

Код

class Integer
def prime_divisors
def prime?(number)
(2...number.abs).each do |i|
return false if number % i == 0
end
true
end
result = Array.new
(2..self.abs).each do |i|
result << i if self % i == 0 and prime? i
end
result
end
end
class Range
def fizzbuzz
def fizzbuzz_set(value)
if value % 3 == 0
value % 5 == 0 ? :fizzbuzz : :fizz
else
value % 5 == 0 ? :buzz : value
end
end
result = Array.new
each { |i| result << fizzbuzz_set(i) }
result
end
end
class Hash
def group_values
result = Hash.new { |hash, key| hash[key] = Array.new }
each { |key, value| result[value] << key }
result
end
end
class Array
def densities
result = Array.new
each { |item| result << count(item) }
result
end
end

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

........

Finished in 0.00753 seconds
8 examples, 0 failures

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

Кирчо обнови решението на 14.10.2012 16:14 (преди над 11 години)

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

Кирчо обнови решението на 14.10.2012 20:20 (преди над 11 години)

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

Кирчо обнови решението на 14.10.2012 20:50 (преди над 11 години)

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

Кирчо обнови решението на 14.10.2012 20:56 (преди над 11 години)

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

Кирчо обнови решението на 14.10.2012 21:14 (преди над 11 години)

class Integer
def prime_divisors
def prime?(number)
- (2...number.abs).each do |item|
- return false if number % item == 0
+ (2...number.abs).each do |i|
+ return false if number % i == 0
end
true
end
result = Array.new
- (2..self.abs).each do |item|
- result << item if self % item == 0 and prime? item
+ (2..self.abs).each do |i|
+ result << i if self % i == 0 and prime? i
end
result
end
end
class Range
def fizzbuzz
def fizzbuzz_set(value)
if value % 3 == 0
value % 5 == 0 ? :fizzbuzz : :fizz
else
value % 5 == 0 ? :buzz : value
end
end
result = Array.new
- each { |item| result << fizzbuzz_set(item) }
+ each { |i| result << fizzbuzz_set(i) }
result
end
end
class Hash
def group_values
result = Hash.new { |hash, key| hash[key] = Array.new }
each { |key, value| result[value] << key }
result
end
end
class Array
def densities
result = Array.new
each { |item| result << count(item) }
result
end
end
  • Влагането на методи просто не работи така в Ruby.
  • Array.new се записва като []
  • Условието ти за fizzbuzz е по-сложно, отколкото трябва да бъде.
  • В densities можеш да ползваш map вместо each. Аналогично, none? или any? в prime?
  • fizzbuzz_set е лошо име на метод. Това е добър момент да приложиш принципа "ако ми е трудно да му дам добро име, може би трябва да го напиша по друг начин". Тръгвайки по този принцип, най-добре е това да бъде inline-нато.