i trying find duplicate values in array of strings between 1 1000000.
however, code have, output entries doubled.
so instance, if have [1,2,3,4,3,4], gives me output of 3 4 3 4 instead of 3 4.
here code:
array = [gets] if array.uniq.length == array.length puts "array not contain duplicates" else puts "array contain duplicates" print array.select{ |x| array.count(x) > 1} end also, every time test code, have define array array = [1,2,3,4,5,3,5]. puts works not print when use array [gets].
can me how fix these 2 problems?
array#difference comes rescue yet again. (i confess @user123's answer more straightforward, unless pretend array#difference built-in method. array#difference more efficient of two, avoids repeated invocations of count.) see answer here description of method , links use. in nutshell, differs array#- illustrated in following example:
a = [1,2,3,4,3,2,4,2] b = [2,3,4,4,4] - b #=> [1] a.difference b #=> [1, 3, 2, 2] one day i'd see built-in.
for present problem, if:
arr = [1,2,3,4,3,4] the duplicate elements given by:
arr.difference(arr.uniq).uniq #=> [3, 4]
Comments
Post a Comment