count_sizes := proc(arr_name,arr_pop,i,lst) local index := i; local language; for language in lst do language := language[1]: arr_name(index) := txt["query"]["pages"][language]["title"][10..]: if(assigned(txt["query"]["pages"][language]["categoryinfo"]["size"])) then arr_pop(index) := txt["query"]["pages"][language]["categoryinfo"]["size"]: else: arr_pop(index) := 0: end if: index++: end do: return index: end proc: txt := JSON:-ParseFile("http://rosettacode.org/mw/api.php?action=query&generator=categorymembers&gcmtitle=Category:Programming%20Languages&gcmlimit=350&prop=categoryinfo&format=json"): arr_name := Array(): arr_pop := Array(): i := count_sizes(arr_name, arr_pop, 1, [indices(txt["query"]["pages"])]): while (assigned(txt["continue"]["gcmcontinue"])) do continue := txt["continue"]["gcmcontinue"]: txt := JSON:-ParseFile(cat("http://rosettacode.org/mw/api.php?action=query&generator=categorymembers&gcmtitle=Category:Programming%20Languages&gcmlimit=350&prop=categoryinfo&format=json", "&continue=", txt["continue"]["continue"], "&gcmcontinue=", txt["continue"]["gcmcontinue"])): i:=count_sizes(arr_name,arr_pop,i,[indices(txt["query"]["pages"])]): end do: arr_name:= arr_name[sort(arr_pop,output=permutation)]: arr_pop := sort(arr_pop, output=sorted): i := i-1: for x from i to 1 by -1 do printf("rank %d %d examples %s\n", i-x+1, arr_pop[x], arr_name[x]): end do: