Решение на Първа задача от Деян Гюрджеклиев

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

Към профила на Деян Гюрджеклиев

Резултати

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

Код

class Integer
def prime_divisors
result = []
2.upto(abs) {|digit| result << digit if self % digit == 0 and digit.prime?}
result
end
def prime?
flag_for_prime = true
(2..self - 1).each {|x| flag_for_prime = false if self % x == 0}
flag_for_prime
end
end
class Range
def fizzbuzz
result = to_a
result.each_with_index do |element,index|
if element % 3 == 0 and element % 5 != 0
result[index] = :fizz
elsif element % 5 == 0 and element % 3 != 0
result[index] = :buzz
elsif element % 5 == 0 and element % 3 == 0
result[index] = :fizzbuzz
end
end
result
end
end
class Hash
def group_values
result = {}
list_of_keys = []
each_value do |value|
break if result.has_key?(value)
each_key {|key| list_of_keys << key if self[key] == value}
result[value] = list_of_keys
list_of_keys = []
end
result
end
end
class Array
def densities
result = []
each {|value| result << count(value)}
result
end
end

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

........

Finished in 0.00737 seconds
8 examples, 0 failures

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

Деян обнови решението на 14.10.2012 21:56 (преди около 12 години)

+ class Integer
+ def prime_divisors
+ result = []
+ 2.upto(self.abs) do |n|
+ result << n if self % n == 0 and n.prime?
+ end
+ result
+ end
+
+ def prime?
+ isPrime = true
+ (2..self - 1).each do |x|
+ isPrime = false if self % x == 0
+ end
+ isPrime
+ end
+end
+
+class Range
+ def fizzbuzz
+ result = self.to_a
+ result.each_with_index do |element,index|
+ if element % 3 == 0
+ if element % 5 == 0
+ result[index] = :fizzbuzz
+ else
+ result[index] = :fizz
+ end
+ elsif element % 5 == 0
+ result[index] = :buzz
+ end
+ end
+ result
+ end
+end
+
+class Hash
+ def group_values
+ my_hash = Hash.new
+ tmp = []
+ self.each_value do |value|
+ break if my_hash.has_key?(value)
+ self.each_key do |x|
+ tmp << x if self[x] == value
+ end
+ my_hash[value]=tmp
+ tmp=[]
+ end
+ my_hash
+ end
+end
+
+class Array
+ def densities
+ result = []
+ self.each do |value|
+ result << self.count(value)
+ end
+ result
+ end
+end
  • Индентацията ти е тотално объркана. Ако не я оправиш, ще ти вземем точки.
  • isPrime не е добро име на нищо в Ruby. Погледни style guide-а.
  • my_hash и tmp са лоши имена на променливи. Първото е по-лошо от второто. Кръсти ги контекстно, а не с произволни думички, които са ти хрумнали докато пишеш.
  • Като цяло, имената на променливите ти са зле, за което също ще вземем точки.
  • self. е напълно излишно на всички места, на които си го ползвал.
  • Влагането на if element % 5 в if element % 3 прави кода по-трудно четим. Най-лесно ще бъде, ако имаш if/elsif/eslif/else.
  • Има маста, на които можеш да ползваш map, all? или any? и не го правиш.

Деян обнови решението на 15.10.2012 12:45 (преди около 12 години)

- class Integer
- def prime_divisors
- result = []
- 2.upto(self.abs) do |n|
- result << n if self % n == 0 and n.prime?
- end
- result
+class Integer
+
+ def prime_divisors
+ result = []
+ 2.upto(abs) {|digit| result << digit if self % digit == 0 and digit.prime?}
+ result
end
- def prime?
- isPrime = true
- (2..self - 1).each do |x|
- isPrime = false if self % x == 0
- end
- isPrime
- end
+ def prime?
+ flag_for_prime = true
+ (2..self - 1).each {|x| flag_for_prime = false if self % x == 0}
+ flag_for_prime
+ end
+
end
class Range
+
def fizzbuzz
- result = self.to_a
+
+ result = to_a
+
result.each_with_index do |element,index|
- if element % 3 == 0
- if element % 5 == 0
- result[index] = :fizzbuzz
- else
- result[index] = :fizz
- end
- elsif element % 5 == 0
- result[index] = :buzz
- end
- end
+ if element % 3 == 0 and element % 5 != 0
+ result[index] = :fizz
+ elsif element % 5 == 0 and element % 3 != 0
+ result[index] = :buzz
+ elsif element % 5 == 0 and element % 3 == 0
+ result[index] = :fizzbuzz
+ end
+ end
result
end
+
end
class Hash
+
def group_values
- my_hash = Hash.new
- tmp = []
- self.each_value do |value|
- break if my_hash.has_key?(value)
- self.each_key do |x|
- tmp << x if self[x] == value
- end
- my_hash[value]=tmp
- tmp=[]
+ result = {}
+ list_of_keys = []
+ each_value do |value|
+ break if result.has_key?(value)
+ each_key {|key| list_of_keys << key if self[key] == value}
+ result[value] = list_of_keys
+ list_of_keys = []
end
- my_hash
- end
+ result
+ end
+
end
class Array
+
def densities
result = []
- self.each do |value|
- result << self.count(value)
- end
- result
+ each {|value| result << count(value)}
+ result
end
+
end