Rosetta Code/Rank languages by popularity

From Rosetta Code
Revision as of 14:08, 30 January 2009 by rosettacode>Mwn3d (Put in RC cat)
Task
Rosetta Code/Rank languages by popularity
You are encouraged to solve this task according to the task description, using any language you may know.

Sort most popular programming languages based in number of members in Rosetta Code categories (from http://www.rosettacode.org/w/index.php?title=Special:Categories&limit=500)

Output:

1. 246 - Programming_Tasks 
2. 203 - Python 
3. 201 - Ada 
4. 188 - OCaml 
5. 171 - Perl 
6. 169 - Java 
7. 168 - Haskell 
8. 157 - C 
9. 141 - Forth 
10. 140 - Ruby 
...

Filtering wrong results is optional. You can check against http://www.rosettacode.org/wiki/Special:MostLinkedCategories

Python

Works with: Python 2.6

<python>import urllib import re

def key1(x):

   return int(x.split()[0])

a = urllib.urlopen("http://www.rosettacode.org/w/index.php?title=Special:Categories&limit=500")

entries = []

for line in a:

   match = re.search('>([^<>]*)</a> \((\d+) members?\)', line)
   if match: entries.append(match.group(2) + ' - ' + match.group(1))        

a.close()

for c, line in enumerate(sorted(entries, key=key1, reverse=True),start=1):

   print "%3d. %s" % (c, line)</python>

Ruby

require 'open-uri'

entries = []

open("http://www.rosettacode.org/w/index.php?title=Special:Categories&limit=500") do |f|

 for line in f
   match = line.match(%r{>([^<>]*)</a> \((\d+) members?\)})
   entries << match[2] + ' - ' + match[1] if match
 end

end

entries.sort_by {|x| -x.to_i}.each_with_index do |line, c|

 puts "%3d. %s" % [c+1, line]

end