/
ch-2.rb
39 lines (37 loc) · 1.29 KB
/
ch-2.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Task 2: H-Index
# Submitted by: Mohammad S Anwar
#
# You are given an array of integers containing citations a researcher has received for each paper.
# Write a script to compute the researcher’s H-Index. For more information please checkout the wikipedia page.
#
# The H-Index is the largest number h such that h articles have at least h citations each. For example, if an author has five publications, with 9, 7, 6, 2, and 1 citations (ordered from greatest to least), then the author’s h-index is 3, because the author has three publications with 3 or more citations. However, the author does not have four publications with 4 or more citations.
#
#
# Example 1
# Input: @citations = (10,8,5,4,3)
# Output: 4
#
# Because the 4th publication has 4 citations and the 5th has only 3.
#
# Example 2
# Input: @citations = (25,8,5,3,3)
# Output: 3
#
# The H-Index is 3 because the fourth paper has only 3 citations.
def main(input)
if input.length < 1 \
or \
input.select{ |i| i[/\D/] }.length > 0
then
puts "Input error"
exit(0)
end
output = []
input.map(&:to_i).sort.reverse.each_with_index { |element, index|
if element >= index+1
output.append(element)
end
}
printf "Output: %d\n", output.length
end
main ARGV