Remove Duplicates

Краен срок
06.11.2014 12:00

Срокът за предаване на решения е отминал

Remove Duplicates

Обичате Ruby повече отколкото обичате спагети?

Готови сте с трета задача и ви сърбят пръстите за едно 5-минутно предизвикателство?

Няма проблеми - за тренировка и преговор на Enumerable, пускаме микроскопично предизвикателство.

Искаме да имплементирате функцията remove_duplicates, която получава масив от цели числа и връща масив, в който няма повтарящи се елементи.

remove_duplicates [-1, 4, -1, 33, 33, 42, 4] # [-1, 4, 33, 42]

Забележки

  • Забранена е употребата на метода Array#uniq
  • Забранена е употребата на метода Array#uniq!
  • Масивът ще съдържа единствено цели числа
  • Масивът може да бъде празен
  • Запазете първоначалния ред на елементите на масива
  • Няма да подаваме невалидни данни
  • Очакваме елегантни решения

Примерен тест

Примерните тестове се намират в GitHub хранилището с домашните. За информация как да ги изпълните, погледнете README-то на хранилището.

Решения

Емилиан Станков
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Емилиан Станков
def remove_duplicates(array)
array.to_set.to_a
end
....

Finished in 0.00875 seconds
4 examples, 0 failures
Габриела Лухова
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Габриела Лухова
def remove_duplicates(array)
unique_elements = []
hash = Hash.new(0)
array.each{ |number| hash[number] += 1 }
unique_elements = hash.keys
end
....

Finished in 0.00879 seconds
4 examples, 0 failures
Божидар Горов
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Божидар Горов
# def remove_duplicates(array)
# temp = Array.new
# array.each do |elem|
# unless temp.include? elem
# temp << elem
# end
# end
# temp
# end
def remove_duplicates(array)
array & array
end
....

Finished in 0.00877 seconds
4 examples, 0 failures
Александър Александров
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Александър Александров
def remove_duplicates (array)
array & array
end
....

Finished in 0.00868 seconds
4 examples, 0 failures
Людмила Савова
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Людмила Савова
def remove_duplicates(array)
array & array
end
....

Finished in 0.00871 seconds
4 examples, 0 failures
Александър Петков
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Александър Петков
require 'set'
def remove_duplicates(numbers)
numbers.to_set.to_a
end
....

Finished in 0.00873 seconds
4 examples, 0 failures
Николина Гюрова
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Николина Гюрова
def remove_duplicates source
result = []
source.each { |e| result << e unless result.include? e}
result
end
....

Finished in 0.00858 seconds
4 examples, 0 failures
Мая Терзиева
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Мая Терзиева
def remove_duplicates(numbers)
numbers.group_by { |number| number }.keys
end
....

Finished in 0.00864 seconds
4 examples, 0 failures
Георги Костов
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Георги Костов
def remove_duplicates(integers)
counts = Hash.new(0)
integers.each { |number| counts[number] += 1 }
counts.keys
end
....

Finished in 0.00879 seconds
4 examples, 0 failures
Гюлджан Купен
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Гюлджан Купен
def remove_duplicates(array)
new_array = []
array.each do |number|
unless new_array.include?(number)
new_array << number
end
end
new_array
end
....

Finished in 0.00874 seconds
4 examples, 0 failures
Николай Димитров
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Николай Димитров
def remove_duplicates(array)
array.group_by { |x| x }.keys
end
....

Finished in 0.0082 seconds
4 examples, 0 failures
Светлозар Тодоров
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Светлозар Тодоров
def remove_duplicates(numbers)
uniques = []
numbers.each { |number| uniques << number unless uniques.include?(number) }
uniques
end
....

Finished in 0.0086 seconds
4 examples, 0 failures
Мартин Христов
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Мартин Христов
def remove_duplicates array
array & array
end
....

Finished in 0.00852 seconds
4 examples, 0 failures
Ивайло Георгиев
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Ивайло Георгиев
def remove_duplicates array
hash = Hash.new
array.each_with_index { |item,index| hash[item] = index}
hash.keys
end
....

Finished in 0.00877 seconds
4 examples, 0 failures
Здравко Георгиев
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Здравко Георгиев
def remove_duplicates(container)
container & container
end
....

Finished in 0.0087 seconds
4 examples, 0 failures
Мария Дулева
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Мария Дулева
def remove_duplicates(array_of_integers)
numbers=[]
array_of_integers.each do |i|
unless numbers.include? i
numbers<<i
end
end
numbers
end
....

Finished in 0.00866 seconds
4 examples, 0 failures
Диана Генева
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Диана Генева
def remove_duplicates(array)
unique = []
array.each { |number| unique<<number unless unique.include? number }
unique
end
....

Finished in 0.01061 seconds
4 examples, 0 failures
Ангел Ангелов
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Ангел Ангелов
def remove_duplicates(collection)
filtered = []
collection.each { |x| filtered << x unless filtered.include? x }
filtered
end
....

Finished in 0.00871 seconds
4 examples, 0 failures
Йоана Тодорова
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Йоана Тодорова
def remove_duplicates(array)
array & array
end
....

Finished in 0.01044 seconds
4 examples, 0 failures
Атанас Димитров
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Атанас Димитров
def remove_duplicates(numbers)
numbers.zip(numbers).to_h.keys
end
....

Finished in 0.00845 seconds
4 examples, 0 failures
Петя Петрова
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Петя Петрова
def remove_duplicates array
array & array
end
....

Finished in 0.00862 seconds
4 examples, 0 failures
Светлозар Стефанов
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Светлозар Стефанов
def remove_duplicates(array)
if array.empty?
[]
end
array & array
end
....

Finished in 0.00865 seconds
4 examples, 0 failures
Иван Кавалджиев
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Иван Кавалджиев
def remove_duplicates(array)
array & array
end
....

Finished in 0.00865 seconds
4 examples, 0 failures
Снежана Спасова
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Снежана Спасова
def remove_duplicates(array)
array.reduce({}) { |hash, n| hash.update(n => hash.fetch(n, 0) + 1) }.keys()
end
....

Finished in 0.00866 seconds
4 examples, 0 failures
Георги Димов
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Георги Димов
def remove_duplicates(set)
set & set
end
....

Finished in 0.01008 seconds
4 examples, 0 failures
Герасим Станчев
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Герасим Станчев
def remove_duplicates(array)
array & array
end
....

Finished in 0.00861 seconds
4 examples, 0 failures
Ясен Трифонов
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Ясен Трифонов
def remove_duplicates(array)
array.each_with_object(Hash.new(0)) { |key, hash| hash[key] += 1 }.keys
end
....

Finished in 0.00871 seconds
4 examples, 0 failures
Веселин Добрев
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Веселин Добрев
def remove_duplicates(array)
reduced_array = []
array.each do |element|
reduced_array << element unless reduced_array.include? element
end
reduced_array
end
....

Finished in 0.0087 seconds
4 examples, 0 failures
Стефан Илев
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Стефан Илев
def remove_duplicates(array)
array & array
end
....

Finished in 0.00832 seconds
4 examples, 0 failures
Любомир Папазов
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Любомир Папазов
def remove_duplicates(array)
unique_hash = {}
array.each do |el|
unique_hash.has_key?(el) ? unique_hash[el]+=1 : unique_hash[el]=1
end
res = []
array.each do |el|
if unique_hash[el]!=0
res << el
unique_hash[el]=0
end
end
res
end
....

Finished in 0.00878 seconds
4 examples, 0 failures
Георги Павлов
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Георги Павлов
def remove_duplicates(int_set)
unique = []
int_set.each do |i|
unique << i unless unique.member?(i)
end
unique
end
....

Finished in 0.00861 seconds
4 examples, 0 failures
Димитър Мутаров
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Димитър Мутаров
def remove_duplicates array
array & array
end
....

Finished in 0.00863 seconds
4 examples, 0 failures
Петър Киров
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Петър Киров
def remove_duplicates(arr)
set = {}
arr.each { |x| set[x] = true }
set.keys
# ^~~~ ruby guarantees that the keys will
# come out in the order of insertion
end
....

Finished in 0.00869 seconds
4 examples, 0 failures
Димитър Шукерски
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Димитър Шукерски
def remove_duplicates(ary)
ary & ary
end
....

Finished in 0.00895 seconds
4 examples, 0 failures
Константин Тодоров
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Константин Тодоров
def remove_duplicates(array)
result_array = []
array.each do |number|
result_array << number if !result_array.include? number
end
result_array
end
....

Finished in 0.00871 seconds
4 examples, 0 failures
Екатерина Горанова
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Екатерина Горанова
def remove_duplicates(array)
array | array
end
....

Finished in 0.00959 seconds
4 examples, 0 failures
Деян Гюрджеклиев
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Деян Гюрджеклиев
def remove_duplicates(array)
array.each_with_object([]) do |element, accumulator|
accumulator << element unless accumulator.include?(element)
end
end
....

Finished in 0.0087 seconds
4 examples, 0 failures
София Петрова
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
София Петрова
def remove_duplicates(array)
array.to_set.to_a
end
....

Finished in 0.0088 seconds
4 examples, 0 failures
Георги Железов
  • Некоректно
  • 3 успешни тест(а)
  • 1 неуспешни тест(а)
Георги Железов
def merge_sort(list)
if list.size <= 1
return list
end
left, right, result = [], [], []
middle = list.size / 2
for x in 0...middle
left << list[x]
end
for middle in middle...list.size
right << list[middle]
end
left = merge_sort left
right = merge_sort right
merge(left, right)
end
def merge(left, right)
result = []
while left.size > 0 or right.size > 0
if left.size > 0 and right.size > 0
if left[0] <= right[0]
result << left.shift
else
result << right.shift
end
elsif left.size > 0
result << left.shift
elsif right.size > 0
result << right.shift
end
end
result
end
def remove_duplicates(list)
merge, uniq = merge_sort(list), []
merge.each.with_index do |element, index|
if merge[index] != merge[index+1]
uniq << element
end
end
uniq
end
...F

Failures:

  1) remove_duplicates removes duplicates and preserves the order
     Failure/Error: expect(remove_duplicates [42, 2, -2, 4, 5, 5, 7, 33, 42, 5, 14, -2]).
       
       expected: [42, 2, -2, 4, 5, 7, 33, 14]
            got: [-2, 2, 4, 5, 7, 14, 33, 42]
       
       (compared using ==)
     # /tmp/d20141106-18133-5df0r2/spec.rb:20:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

Finished in 0.00927 seconds
4 examples, 1 failure

Failed examples:

rspec /tmp/d20141106-18133-5df0r2/spec.rb:19 # remove_duplicates removes duplicates and preserves the order
Любомир Петков
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Любомир Петков
def remove_duplicates(array)
array.group_by {|integer| integer}.keys
end
....

Finished in 0.00865 seconds
4 examples, 0 failures
Тодор Табаков
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Тодор Табаков
def remove_duplicates(arguments)
matches = arguments.reduce(Hash.new(0)) { |total, e| total[e] += 1 ;total}
matches.keys
end
....

Finished in 0.00861 seconds
4 examples, 0 failures
Георги Буюклиев
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Георги Буюклиев
def remove_duplicates(a)
a & a
end
....

Finished in 0.00867 seconds
4 examples, 0 failures
Людмил Делчев
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Людмил Делчев
def remove_duplicates(array)
array.reject.with_index{|number, index| array.index(number) != index}
end
....

Finished in 0.00866 seconds
4 examples, 0 failures
Светослав Кръстев
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Светослав Кръстев
def remove_duplicates(numbers)
numbers & numbers
end
....

Finished in 0.00868 seconds
4 examples, 0 failures
Дамян Димитров
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Дамян Димитров
def remove_duplicates(array)
array.each_with_object([]) do |number, result|
result << number unless result.any? { |el| el == number }
end
end
....

Finished in 0.00862 seconds
4 examples, 0 failures
Любослава Димитрова
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Любослава Димитрова
def remove_duplicates(array)
array & array
end
....

Finished in 0.00834 seconds
4 examples, 0 failures
Камен Канев
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Камен Канев
def remove_duplicates(array)
array.map{|p| [p, array.count(p)] }.to_h.to_a.map { |p| p[0] }
end
....

Finished in 0.00823 seconds
4 examples, 0 failures
Венцислав Димитров
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Венцислав Димитров
require 'set'
def remove_duplicates input
input.to_set.to_a
end
....

Finished in 0.00874 seconds
4 examples, 0 failures
Бисер Кръстев
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Бисер Кръстев
def remove_duplicates(list)
Hash[list.collect { |v| [ v, nil ] }].to_a.flatten.compact
end
....

Finished in 0.00873 seconds
4 examples, 0 failures
Иван Станков
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Иван Станков
def remove_duplicates(array)
array & array
end
....

Finished in 0.0084 seconds
4 examples, 0 failures
Станислав Венков
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Станислав Венков
def remove_duplicates(array_with_duplicates)
array_without_duplicates = Array.new
array_with_duplicates.each do |number|
array_without_duplicates << number if ! array_without_duplicates.include? number
end
array_without_duplicates
end
....

Finished in 0.00862 seconds
4 examples, 0 failures
Нели Василева
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Нели Василева
require 'set'
def remove_duplicates array
Set.new(array).to_a
end
....

Finished in 0.00885 seconds
4 examples, 0 failures
Камен Станев
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Камен Станев
def remove_duplicates(array)
array.group_by { |i| i }.keys
end
....

Finished in 0.00884 seconds
4 examples, 0 failures
Александър Пирнарев
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Александър Пирнарев
def remove_duplicates(array)
hash = Hash[array.map { |key| [key] }]
array = hash.map { |key, value| key }
end
....

Finished in 0.00883 seconds
4 examples, 0 failures
Делян Димитров
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Делян Димитров
def remove_duplicates(numbers)
unique_numbers = []
met_numbers = {}
numbers.each do |number|
if met_numbers[number] == nil
unique_numbers << number
met_numbers[number] = 1
end
end
unique_numbers
end
....

Finished in 0.00862 seconds
4 examples, 0 failures
Пламен Каращранов
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Пламен Каращранов
def remove_duplicates (array_1)
array_2 = array_1
array_1 & array_2
end
....

Finished in 0.00854 seconds
4 examples, 0 failures
Елена Орешарова
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Елена Орешарова
def remove_duplicates(array)
[] | array
end
....

Finished in 0.00877 seconds
4 examples, 0 failures
Стилиян Стоянов
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Стилиян Стоянов
def remove_duplicates (array)
new_array = array.dup
new_array.each_with_index do |elem, i|
new_array[i] = "temporary_value"
new_array.reject! { |x| x == elem }
new_array[i] = elem
end
end
....

Finished in 0.00862 seconds
4 examples, 0 failures
Йоан Динков
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Йоан Динков
def remove_duplicates(input)
input & input
end
....

Finished in 0.00871 seconds
4 examples, 0 failures
Явор Михайлов
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Явор Михайлов
def remove_duplicates(raw_array)
unique_array = []
raw_array.each do |number|
unique_array << number unless unique_array.include?(number)
end
unique_array
end
....

Finished in 0.00862 seconds
4 examples, 0 failures
Евгений Бояджиев
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Евгений Бояджиев
require 'set'
def remove_duplicates arr
arr.to_set.to_a
end
....

Finished in 0.00887 seconds
4 examples, 0 failures
Кристиан Цветков
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Кристиан Цветков
def remove_duplicates(array)
array.group_by { |n| n }.keys
end
....

Finished in 0.00863 seconds
4 examples, 0 failures
Деян Боиклиев
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Деян Боиклиев
require 'set'
def remove_duplicates(numbers)
set = Set.new
numbers.each { |number| set << number }
set.to_a
end
....

Finished in 0.00877 seconds
4 examples, 0 failures
Божидар Григоров
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Божидар Григоров
def remove_duplicates(arr)
result = [];
arr.each{ |x| result << x if !result.include? x }
result;
end
....

Finished in 0.00861 seconds
4 examples, 0 failures
Мартина Радева
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Мартина Радева
def remove_duplicates(input)
output = []
input.each { |current| output << current if !output.include? current }
output
end
....

Finished in 0.00875 seconds
4 examples, 0 failures
Станимир Митев
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Станимир Митев
def remove_duplicates(array)
array & array
end
....

Finished in 0.00874 seconds
4 examples, 0 failures
Яни Малцев
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Яни Малцев
def remove_duplicates(array)
ret = []
array.each {|x| ret<<x unless ret.include?(x)}
ret
end
....

Finished in 0.00876 seconds
4 examples, 0 failures
Бетина Иванова
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Бетина Иванова
def remove_duplicates(array)
array & array
end
....

Finished in 0.00869 seconds
4 examples, 0 failures
Велислав Симеонов
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Велислав Симеонов
def remove_duplicates ( array_to_sort )
array_to_sort & array_to_sort
end
....

Finished in 0.00865 seconds
4 examples, 0 failures
Звездалина Димитрова
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Звездалина Димитрова
def remove_duplicates int_array
uniq_array = []
int_array.each { |int| uniq_array << int if not (uniq_array.any? { |check| int == check } ) }
uniq_array
end
....

Finished in 0.00873 seconds
4 examples, 0 failures
Методи Димитров
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Методи Димитров
def remove_duplicates(numbers)
numbers & numbers
end
....

Finished in 0.00855 seconds
4 examples, 0 failures
Атанас Цанков
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Атанас Цанков
def remove_duplicates(array)
new_array = []
array.each{|i| new_array.push(i) unless new_array.include? i}
new_array
end
....

Finished in 0.0087 seconds
4 examples, 0 failures
Любомир Иванов
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Любомир Иванов
def remove_duplicates(array)
array & array
end
....

Finished in 0.0086 seconds
4 examples, 0 failures
Симеон Цветков
  • Коректно
  • 4 успешни тест(а)
  • 0 неуспешни тест(а)
Симеон Цветков
require 'set'
def remove_duplicates(array)
array.to_set.to_a
end
....

Finished in 0.00873 seconds
4 examples, 0 failures