Rosetta Code/Count examples

From Rosetta Code
Revision as of 20:57, 30 March 2018 by Thundergnat (talk | contribs) (→‎{{header|Perl 6}}: Use a better matcher to cut down on both the false positives and false negatives)
Task
Rosetta Code/Count examples
You are encouraged to solve this task according to the task description, using any language you may know.

Find the total number of programming examples for each task and the total for all tasks.

Essentially, count the number of occurrences of =={{header| on each task page.

Output:

100 doors: 20 examples.
99 Bottles of Beer: 29 examples.
Abstract type: 10 examples.

Total: X examples.

You'll need to use the Media Wiki API, which you can find out about locally, here, or in Media Wiki's API documentation at, API:Query

Ada

Library: AWS

Parsing XML file with XMLAda from AdaCore <lang Ada>with Aws.Client, Aws.Messages, Aws.Response, Aws.Resources, Aws.Url; with Dom.Readers, Dom.Core, Dom.Core.Documents, Dom.Core.Nodes, Dom.Core.Attrs; with Input_Sources.Strings, Unicode, Unicode.Ces.Utf8; with Ada.Strings.Unbounded, Ada.Strings.Fixed, Ada.Text_IO, Ada.Command_Line; with Ada.Containers.Vectors;

use Aws.Client, Aws.Messages, Aws.Response, Aws.Resources, Aws.Url; use Dom.Readers, Dom.Core, Dom.Core.Documents, Dom.Core.Nodes, Dom.Core.Attrs; use Aws, Ada.Strings.Unbounded, Ada.Strings.Fixed, Input_Sources.Strings; use Ada.Text_IO, Ada.Command_Line;

procedure Count_Examples is

  package Members_Vectors is new Ada.Containers.Vectors (
     Index_Type => Positive,
     Element_Type => Unbounded_String);
  use Members_Vectors;
  Exemples      : Vector;
  Nbr_Lg, Total : Natural := 0;
  procedure Get_Vector (Category : in String; Mbr_Vector : in out Vector) is
     Reader  : Tree_Reader;
     Doc     : Document;
     List    : Node_List;
     N       : Node;
     A       : Attr;
     Page    : Aws.Response.Data;
     Uri_Xml : constant String :=
        "http://rosettacode.org/mw/api.php?action=query&list=categorymembers"
        &
        "&format=xml&cmlimit=500&cmtitle=Category:";
  begin
     Page := Client.Get (Uri_Xml & Category);
     if Response.Status_Code (Page) not  in Messages.Success then
        raise Client.Connection_Error;
     end if;
     declare
        Xml    : constant String := Message_Body (Page);
        Source : String_Input;
     begin
        Open
          (Xml'Unrestricted_Access,
           Unicode.Ces.Utf8.Utf8_Encoding,
           Source);
        Parse (Reader, Source);
        Close (Source);
     end;
     Doc  := Get_Tree (Reader);
     List := Get_Elements_By_Tag_Name (Doc, "cm");
     for Index in 1 .. Length (List) loop
        N := Item (List, Index - 1);
        A := Get_Named_Item (Attributes (N), "title");
        Append (Mbr_Vector, To_Unbounded_String (Value (A)));
     end loop;
     Free (List);
     Free (Reader);
  end Get_Vector;
  function Scan_Page (Title : String) return Natural is
     Page                      : Aws.Response.Data;
     File                      : Aws.Resources.File_Type;
     Buffer                    : String (1 .. 1024);
     Languages, Position, Last : Natural := 0;
  begin
     Page :=
        Client.Get
          ("http://rosettacode.org/mw/index.php?title=" &
           Aws.Url.Encode (Title) &
           "&action=raw");
     Response.Message_Body (Page, File);
     while not End_Of_File (File) loop
        Resources.Get_Line (File, Buffer, Last);
        Position :=
           Index
             (Source  => Buffer (Buffer'First .. Last),
              Pattern => "=={{header|");
        if Position > 0 then
           Languages := Languages + 1;
        end if;
     end loop;
     Close (File);
     return Languages;
  end Scan_Page;

begin

  Get_Vector ("Programming_Tasks", Exemples);
  for I in First_Index (Exemples) .. Last_Index (Exemples) loop
     declare
        Title : constant String :=
           To_String (Members_Vectors.Element (Exemples, I));
     begin
        Nbr_Lg := Scan_Page (Title);
        Total  := Total + Nbr_Lg;
        Put_Line (Title & " :" & Integer'Image (Nbr_Lg) & " exemples.");
     end;
  end loop;
  Put_Line ("Total :" & Integer'Image (Total) & " exemples.");

end Count_Examples; </lang> Output :

100 doors : 107 exemples.
24 game : 30 exemples.
....
Yahoo! search interface : 10 exemples.
Zig-zag matrix : 49 exemples.
Total : 17238 exemples.

AutoHotkey

<lang AutoHotkey>UrlDownloadToFile

 , http://www.rosettacode.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:Programming_Tasks&cmlimit=500&format=xml
 , tasks.xml

FileRead, tasks, tasks.xml pos = 0 quote = "  ; " regtitle := "<cm.*?title=" . quote . "(.*?)" . quote While, pos := RegExMatch(tasks, regtitle, title, pos + 1) {

 UrlDownloadToFile
   , % "http://www.rosettacode.org/w/index.php?title=" . title1 . "&action=raw"
   , task.xml
 FileRead, task, task.xml
 RegExReplace(task, "\{\{header\|", "", count)
 current :=  title1 . ": " . count . " examples.`n"
 output .= current
 TrayTip, current, % current

} MsgBox % output Return</lang>

BBC BASIC

<lang bbcbasic> VDU 23,22,640;512;8,16,16,128+8 : REM Enable UTF-8 support

     SYS "LoadLibrary", "URLMON.DLL" TO urlmon%
     SYS "GetProcAddress", urlmon%, "URLDownloadToFileA" TO UDTF
     special$ = "+()'"
     
     url$ = "http://www.rosettacode.org/w/api.php?action=query" + \
     \      "&list=categorymembers&cmtitle=Category:Programming_Tasks" + \
     \      "&cmlimit=500&format=xml"
     file$ = @tmp$ + "tasks.xml"
     SYS UDTF, 0, url$, file$, 0, 0 TO fail%
     IF fail% ERROR 100, "File download failed (tasks)"
     
     Total% = 0
     file% = OPENIN(file$)
     WHILE NOT EOF#file%
       a$ = GET$#file%
       i% = 0
       REPEAT
         i% = INSTR(a$, "title=", i%+1)
         IF i% THEN
           j% = INSTR(a$, ">", i%)
           title$ = MID$(a$, i%+7, j%-i%-10)
           REM Replace HTML codes:
           REPEAT
             k% = INSTR(title$, "&")
             IF k% THEN
               l% = INSTR(title$, ";", k%)
               title$ = LEFT$(title$,k%-1) + \
               \        FNhtml(MID$(title$,k%,l%-k%+1)) + MID$(title$,l%+1)
             ENDIF
           UNTIL k% = 0
           t$ = title$
           REM Substitute characters not allowed in a URL:
           FOR s% = 1 TO LEN(special$)
             REPEAT
               s$ = MID$(special$, s%, 1)
               k% = INSTR(t$, s$)
               IF k% t$ = LEFT$(t$,k%-1) + "%" + STR$~ASCs$ + MID$(t$,k%+1)
             UNTIL k% = 0
           NEXT
           url$ = "http://www.rosettacode.org/w/index.php?title=" + t$ + \
           \      "&action=raw"
           file$ = @tmp$ + "title.htm"
           SYS UDTF, 0, url$, file$, 0, 0 TO fail%
           IF fail% ERROR 100, "File download failed " + t$
           examples% = 0
           task% = OPENIN(file$)
           WHILE NOT EOF#task%
             IF INSTR(GET$#task%, "=={{header|") examples% += 1
           ENDWHILE
           CLOSE #task%
           Total% += examples%
           PRINT title$ ": " ; examples% " examples."
         ENDIF
       UNTIL i% = 0
       i% = INSTR(a$, "cmcontinue=")
       IF i% THEN
         CLOSE #file%
         j% = INSTR(a$, """", i%+1)
         k% = INSTR(a$, """", j%+1)
         url$ = "http://www.rosettacode.org/w/api.php?action=query" + \
         \      "&list=categorymembers&cmtitle=Category:Programming_Tasks" + \
         \      "&cmlimit=500&format=xml&cmcontinue=" + MID$(a$,j%+1,k%-j%)
         REPEAT
           i% = INSTR(url$, "|")
           IF i% url$ = LEFT$(url$,i%-1) + "%7C" + MID$(url$,i%+1)
         UNTIL i% = 0
         file$ = @tmp$ + "tasks.xml"
         SYS UDTF, 0, url$, file$, 0, 0 TO fail%
         IF fail% ERROR 100, "File download failed (continue)"
         file% = OPENIN(file$)
       ENDIF
     ENDWHILE
     CLOSE #file%
     PRINT ' "Total: " ; Total% " examples."
     END
     
     DEF FNhtml(h$)
     IF LEFT$(h$,2) = "&#" THEN = CHR$(VALMID$(h$,3))
     CASE h$ OF
       WHEN """: = """"
     ENDCASE
     = h$</lang>

Sample output:

100 doors: 154 examples.
24 game: 53 examples.
24 game/Solve: 30 examples.
99 Bottles of Beer: 181 examples.
A+B: 124 examples.
Abstract type: 49 examples.
Accumulator factory: 65 examples.
Ackermann function: 126 examples.
Active Directory/Connect: 12 examples.
Active Directory/Search for a user: 13 examples.
......
XML/DOM serialization: 33 examples.
XML/Input: 50 examples.
XML/Output: 41 examples.
XML/XPath: 33 examples.
Y combinator: 51 examples.
Yahoo! search interface: 13 examples.
Yin and yang: 36 examples.
Zebra puzzle: 11 examples.
Zeckendorf number representation: 14 examples.
Zig-zag matrix: 64 examples.

Total: 27004 examples.

Bracmat

<lang bracmat>( ( get-page

 =   
   .   sys$(str$("wget -q -O wget.out \"" !arg \"))
     & get$("wget.out",HT ML)
 )

& get-page$"http://rosettacode.org/wiki/Category:Programming_Tasks"

 : ? (table.?) ?tasklist (.table.) ?

& 0:?list & whl

 ' ( !tasklist
   :   ?
       ( a
       .   (href.@(?:"/wiki/" ?href)) (title.?title)
         &   get-page$(str$("http://rosettacode.org/wiki/" !href))
           : ?task
         & 0:?cnt
         &   whl
           ' (   !task
               :   ?
                   (   (span.(class.mw-headline) (id.?))
                       ?span
                       (.span.)
                       ?task
                   &   !span
                     :   ?
                         ( a
                         .   (href.@(?:"/wiki/Category:" ?))
                             (title.@(?:"Category:" ?))
                         )
                         @
                         (.a.)
                         ?
                   )
             & 1+!cnt:?cnt
             )
         & (!cnt.!title)+!list:?list
       )
       ?tasklist
   )

& lst$(list,taskfreq,NEW) )</lang> Output (in file tasqfreq):

list=
  (2."OLE Automation")
+ (3."Canny edge detector")
+ ( 3
  . "Continued fraction/Arithmetic/G(matrix NG, Contined Fraction N1, Contined Fraction N2)"
  )
+ (4."Colour pinstripe/Printer")
+ (4."Vogel's approximation method")
+ (5."Catmull–Clark subdivision surface")
+ (5."Percolation/Bond percolation")
+ (5.Pinstripe/Printer)
+ (5."Zeckendorf arithmetic")
+ (6."Continued fraction/Arithmetic/G(matrix NG, Contined Fraction N)")
+ (6."Percolation/Mean cluster density")
+ (7."Bitmap/PPM conversion through a pipe")
+ (7."Deconvolution/2D+")
+ (7."K-d tree")
  ....
+ (125."Greatest element of a list")
+ (127."Averages/Arithmetic mean")
+ (131.Arrays)
+ (131."Increment a numerical string")
+ (132."Greatest common divisor")
+ (133.Loops/While)
+ (134."Conditional structures")
+ (136.Arithmetic/Integer)
+ (137.Loops/For)
+ (145.Loops/Infinite)
+ (147."Ackermann function")
+ (148."Reverse a string")
+ (152."A+B")
+ (152."Function definition")
+ (160."Empty program")
+ (163."Fibonacci sequence")
+ (164.Factorial)
+ (182.FizzBuzz)
+ (187."100 doors")
+ (188.Comments)
+ (216."99 Bottles of Beer")
+ (269."Hello world/Text");

C#

Object-oriented solution.

<lang csharp>using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; using System.Net;

class Task {

   private string _task;
   private int _examples;
   public Task(string task, int examples) {
       _task = task;
       _examples = examples;
   }
   public string Name {
       get { return _task; }
   }
   public int Examples {
       get { return _examples; }
   }
   public override string ToString() {
       return String.Format("{0}: {1} examples.", this._task, this._examples);
   }

}

class Program {

   static List<string> GetTitlesFromCategory(string category, WebClient wc) {
       string content = wc.DownloadString(
           String.Format("http://www.rosettacode.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:{0}&cmlimit=500&format=json", category)
       );
       return new Regex("\"title\":\"(.+?)\"").Matches(content).Cast<Match>().Select(x => x.Groups[1].Value.Replace("\\/", "/")).ToList();
   }
   static string GetSourceCodeFromPage(string page, WebClient wc) {
       return wc.DownloadString(
           String.Format("http://www.rosettacode.org/w/index.php?title={0}&action=raw", page)
       );
   }
   static void Main(string[] args) {
       WebClient wc = new WebClient();
       List<Task> tasks = new List<Task>();
       List<string> tasknames = GetTitlesFromCategory("Programming_Tasks", wc);
       foreach (string task in tasknames) {
           string content = GetSourceCodeFromPage(task, wc);
           int count = new Regex("=={{header", RegexOptions.IgnoreCase).Matches(content).Count;
           Task t = new Task(task, count);
           Console.WriteLine(t);
           tasks.Add(t);
       }
       Console.WriteLine("\nTotal: {0} examples.", tasks.Select(x => x.Examples).Sum());
   }

}</lang>

Clojure

<lang clojure>(ns count-examples

 (:import [java.net URLEncoder])
 (:use [clojure.contrib.http.agent :only (http-agent string)]
       [clojure.contrib.json :only (read-json)]
       [clojure.contrib.string :only (join)]))

(defn url-encode [v] (URLEncoder/encode (str v) "utf-8"))

(defn rosettacode-get [path params]

 (let [param-string (join "&" (for [[n v] params] (str (name n) "=" (url-encode v))))]
   (string (http-agent (format "http://www.rosettacode.org/w/%s?%s" path param-string)))))

(defn rosettacode-query [params]

 (read-json (rosettacode-get "api.php" (merge {:action "query" :format "json"} params))))

(defn list-cm

 ([params] (list-cm params nil))
 ([params continue]
    (let [cm-params (merge {:list "categorymembers"} params (or continue {}))
          result (rosettacode-query cm-params)]
      (concat (-> result (:query) (:categorymembers))
              (if-let [cmcontinue (-> result (:query-continue) (:categorymembers))]
                (list-cm params cmcontinue))))))

(defn programming-tasks []

 (let [result (list-cm {:cmtitle "Category:Programming_Tasks" :cmlimit 50})]
   (map #(:title %) result)))

(defn task-count [task]

 [task (count
        (re-seq #"==\{\{header"
                (rosettacode-get "index.php" {:action "raw" :title task})))])

(defn print-result []

 (let [task-counts (map task-count (programming-tasks))]
   (doseq [[task count] task-counts]
     (println (str task ":") count)
     (flush))
   (println "Total: " (reduce #(+ %1 (second %2)) 0 task-counts))))

</lang> <lang clojure>count-examples> (print-result) 100 doors: 73 24 game: 18 24 game/Solve: 14 99 Bottles of Beer: 89 Abstract type: 27 Accumulator factory: 23 Ackermann function: 73 Active Directory/Connect: 4 Active Directory/Search for a user: 3 Active object: 14 Add a variable to a class instance at runtime: 21 Address of a variable: 20 ... Total: 11216 nil </lang>

D

Works with: Tango

<lang D> import tango.io.Stdout; import tango.net.http.HttpClient; import tango.net.http.HttpHeaders; import tango.text.xml.Document; import tango.text.Util;

alias HttpHeader.ContentLength CL;

auto url = "http://www.rosettacode.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:Programming_Tasks&cmlimit=500&format=xml"; void main() {

   auto client = new HttpClient (HttpClient.Get, url);
   client.open();
   char[] mainData, tmp;
   int total, i;
   void cat(void[] content) { tmp ~= cast(char[]) content; }
   if (client.isResponseOK) {
       client.read(&cat, client.getResponseHeaders.getInt(CL));
       mainData = tmp;
       tmp = null;
       auto doc = new Document!(char);
       doc.parse(mainData);
       foreach (n; doc.query.descendant("cm").attribute("title")) {
           auto subClient = new HttpClient(HttpClient.Get, 
                   "http://www.rosettacode.org/w/index.php?title=" ~
                   replace(n.value.dup, ' ', '_') ~ "&action=raw");
           subClient.open();
           if (! subClient.isResponseOK) {
               Stderr (client.getResponse);
                break;
           }
           subClient.read(&cat, subClient.getResponseHeaders.getInt(CL));
           foreach (segment; patterns(cast(char[])tmp, "=={{header|")) i++;
           --i;
           if (i) --i;
           Stdout.formatln ("{0,-40} - {}", n.value, i);
           total += i;
           tmp = null;
           i = 0;
       }
       Stdout("total examples: ", total).newline;
   } else {
       Stderr (client.getResponse);
   }

} </lang>

EGL

Works with: EDT
EGL: Graphical client implementation

A graphical implementation with a grid showing the number of implementations for each Rosetta Code task as well as total task and implementation counts. Uses MediaWiki API service call to fetch tasks/categories in a JSON format and meets API data limit and continuation requirements to consume 100% of the items.

User Interface: RosettaCodeHandler.egl <lang EGL>package com.eglexamples.client;

import org.eclipse.edt.rui.widgets.*;

handler RosettaCodeHandler type RUIhandler{initialUI =[ui], title = "Rosetta Code Tasks and Counts"}

   ui GridLayout{columns = 3, rows = 4, cellPadding = 4, children = [ b1, dg1, l1, l2, l3, l4 ]};
   
   b1 Button{ layoutData = new GridLayoutData{ row = 1, column = 1 }, text = "Go!", onClick ::= b1_onClick };
   l1 TextLabel{ layoutData = new GridLayoutData{ row = 1, column = 2 }, text = "Total Tasks:" };
   l2 TextLabel{ layoutData = new GridLayoutData{ row = 1, column = 3 }, text = "0" };
   l3 TextLabel{ layoutData = new GridLayoutData{ row = 2, column = 2 }, text = "Total Implementations:" };
   l4 TextLabel{ layoutData = new GridLayoutData{ row = 2, column = 3 }, text = "0" };
   
   dg1 DataGrid{ layoutData = new GridLayoutData{ row = 3, column = 1, horizontalSpan = 3 },
   	pageSize = 10, showScrollbar = true,

columns = [ new DataGridColumn{name = "title", displayName = "Task", width=220}, new DataGridColumn{name = "count", displayName = "Count", width=100} ] };

   cmcontinue string?;
   title string?;
   allTasks Task[];
   restBindingTasks IHttp? = new HttpRest{
       restType = eglx.rest.ServiceType.TrueRest, 
  	request.uri = "http://rosettacode.org/mw/api.php?action=query&list=categorymembers&cmtitle=Category:Programming_Tasks&cmlimit=1&format=json"};
   restBindingPageDetail IHttp? = new HttpRest{
       restType = eglx.rest.ServiceType.TrueRest, 
  	request.uri = "http://rosettacode.org/mw/index.php"};
   function b1_onClick(event Event in)

call ProxyFunctions.listTasks("") using restBindingTasks

   	    returning to listTasksCallBack onException exceptionHandler;
   end
  
   function listTasksCallBack(retResult RosettaCodeJSON in)

title = retResult.query.categorymembers[1].title; cmcontinue = retResult.queryContinue.categorymembers.cmcontinue;

call ProxyFunctions.fetchPageDetail(title) using restBindingPageDetail

	    returning to pageDetailCallBack onException exceptionHandler;
   end
   function pageDetailCallBack(pageResults string in)
  	count int = countSubstring("=={{header", pageResults);
  	allTasks.appendElement(new Task { title = title, count = count });

l2.text = l2.text as int + 1; l4.text = l4.text as int + count;

  	if(cmcontinue != null)

call ProxyFunctions.listTasks(cmcontinue) using restBindingTasks returning to listTasksCallBack onException exceptionHandler; else dg1.data = allTasks as any[]; end

   end
  
   function countSubstring(substr string in, str string in) returns(int)

if(str.length() > 0 and substr.length() > 0) return (str.length() - str.replaceStr(subStr, "").length()) / subStr.length(); else return 0; end

   end 
  function exceptionHandler(exp AnyException in)
  end

end

record Task title string; count int; end</lang>

Service Interface: ProxyFunctions.egl <lang EGL>package com.eglexamples.client;

library ProxyFunctions

   function listTasks(continueLocation String in) returns (RosettaCodeJSON) {

@Rest{method = _GET, uriTemplate = "&cmcontinue={continueLocation}", requestFormat = None, responseFormat = JSON}

   }
   end	
   function fetchPageDetail(title String in) returns (String) {

@Rest{method = _GET, uriTemplate = "?title={title}&action=raw", requestFormat = None, responseFormat = None}

   }
   end	

end

record RosettaCodeJSON

   query Query;
   queryContinue QueryContinue{JSONName = "query-continue"};

end

record Query

   categorymembers Categorymembers[];

end

record Categorymembers

   cmcontinue string?;
   pageid int?;
   ns int?;
   title string?;

end

record QueryContinue

   categorymembers Categorymembers;

end</lang>


Erlang

Library: xmerl

<lang erlang> -module(rosseta_examples). -include_lib("xmerl/include/xmerl.hrl").

-export([main/0]).

main() ->

  application:start(inets), 
  Titles = read_titles(empty),
  Result = lists:foldl(fun(Title,Acc) -> Acc + calculate_one(Title) end, 0, Titles),
  io:format("Total: ~p examples.\n",[Result]),
  application:stop(inets).

read_titles(CurrentContinue) ->

  URL0 = "http://rosettacode.org/mw/api.php?" ++
        "action=query&list=categorymembers&cmtitle=Category:Programming_Tasks" ++
        "&cmlimit=500&format=xml",
  URL = 
     case CurrentContinue of 
        empty -> URL0;
        _ -> URL0 ++ "&cmcontinue=" ++ CurrentContinue
     end,
  {ok,Answer} = httpc:request(URL),
  {Document,_} = xmerl_scan:string(lists:last(tuple_to_list(Answer))),
  Continue = 
     [Value || #xmlAttribute{value = Value} <- xmerl_xpath:string("//@cmcontinue", Document)],
  Titles = 
    [Value || #xmlAttribute{value = Value} <- xmerl_xpath:string("//@title", Document)],
  case Continue of
     []->
        Titles;
     [ContValue | _] -> 
        Titles ++ read_titles(ContValue)
  end.

calculate_one(Title0) ->

  Title = replace_chars(Title0),
  URL = "http://www.rosettacode.org/w/index.php?title=" ++
        Title ++ "&action=raw",
  case httpc:request(URL) of
     {ok,Result} ->
           {match,Found} = 
              re:run(lists:last(tuple_to_list(Result)), "\n=={{header(|)", [global]),
           io:format("~ts: ~p examples.\n",[Title0,length(Found)]),
           length(Found);
     {error,socket_closed_remotely} -> 
        io:format("Socket closed remotely. Retry.\n"),
        calculate_one(Title0)
  end.

replace_chars(String) ->

  replace_chars(String,[]).
 

replace_chars([$ | T],Acc) ->

  replace_chars(T, [$_| Acc]);

replace_chars([$+| T],Acc) ->

  replace_chars(T, lists:reverse("%2B") ++ Acc);

replace_chars([8211| T],Acc) ->

  replace_chars(T, lists:reverse("%E2%80%93") ++ Acc);

replace_chars([Other| T],Acc) ->

  replace_chars(T, [Other| Acc]);

replace_chars([],Acc) ->

  lists:reverse(Acc).

</lang>


Outputs:

> rosseta_examples:main().
100 doors: 165 examples.
24 game: 56 examples.
24 game/Solve: 33 examples.
...
Zebra puzzle: 12 examples.
Zeckendorf number representation: 18 examples.
Zig-zag matrix: 65 examples.
Total: 28629 examples.

F#

Using asynchronous workflows to perform downloads concurrently:

<lang fsharp>#r "System.Xml.Linq.dll"

let uri1 = "http://www.rosettacode.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:Programming_Tasks&cmlimit=500&format=xml" let uri2 task = sprintf "http://www.rosettacode.org/w/index.php?title=%s&action=raw" task

[|for xml in (System.Xml.Linq.XDocument.Load uri1).Root.Descendants() do

   for attrib in xml.Attributes() do
     if attrib.Name.LocalName = "title" then
       yield async {
         let uri = uri2 (attrib.Value.Replace(" ", "_") |> System.Web.HttpUtility.UrlEncode)
         use client = new System.Net.WebClient()
         let! html = client.AsyncDownloadString(System.Uri uri)
         let sols' = html.Split([|"{{header|"|], System.StringSplitOptions.None).Length - 1
         lock stdout (fun () -> printfn "%s: %d examples" attrib.Value sols')
         return sols' }|]

|> Async.Parallel |> Async.RunSynchronously |> fun xs -> printfn "Total: %d examples" (Seq.sum xs)</lang>

This is 21× faster than the python thanks to the concurrency.

Factor

Runs in about a minute. The number of threads is limited to 10 avoid cloudfare's protection mechanism.

<lang factor>USING: arrays assocs concurrency.combinators concurrency.semaphores formatting hashtables http.client io json.reader kernel math math.parser sequences splitting urls.encoding ; IN: rosetta-code.count-examples

CONSTANT: list-url "http://rosettacode.org/mw/api.php?action=query&list=categorymembers&cmtitle=Category:Programming_Tasks&cmlimit=500&cmprop=title&format=json"

titles ( query -- titles )
 "query" of "categorymembers" of [ "title" of ] map ;
continued-url ( query -- url/f )
 "query-continue" of "categorymembers" of
 [ assoc>query list-url swap "&" glue ] [ f ] if* ;
(all-programming-titles) ( titles url -- titles' url' )
 http-get nip json> [ titles append ] [ continued-url ] bi
 [ (all-programming-titles) ] [ f ] if* ;
all-programming-titles ( -- titles ) { } list-url (all-programming-titles) drop ;

CONSTANT: content-base-url "http://rosettacode.org/mw/index.php?title=&action=raw"

content-url ( title -- url )
 " " "_" replace
 "title" associate assoc>query
 content-base-url swap "&" glue ;
occurences ( seq subseq -- n ) split-subseq length 1 - ;
count-examples ( title -- n )
 content-url http-get nip "=={{header|" occurences ;
print-task ( title n -- ) "%s: %d examples.\n" printf ;
print-total ( assoc -- ) values sum "Total: %d examples.\n" printf ;
fetch-counts ( titles -- assoc )
 10 <semaphore> [
   [ dup count-examples 2array ] with-semaphore
 ] curry parallel-map ;
print-counts ( titles -- )
 [ [ print-task ] assoc-each nl ] [ print-total ] bi ;
rosetta-examples ( -- )
 all-programming-titles fetch-counts print-counts ;

MAIN: rosetta-examples</lang> Outputs:

100 doors: 169 examples.
24 game: 58 examples.
...
Zeckendorf number representation: 22 examples.
Zig-zag matrix: 66 examples.

Total: 30745 examples.

Go

<lang go>package main

import (

   "bytes"
   "encoding/xml"
   "fmt"
   "io"
   "io/ioutil"
   "net/http"
   "net/url"
   "strings"

)

func req(u string, foundCm func(string)) string {

   resp, err := http.Get(u)
   if err != nil {
       fmt.Println(err) // connection or request fail
       return ""
   }
   defer resp.Body.Close()
   for p := xml.NewDecoder(resp.Body); ; {
       t, err := p.RawToken()
       switch s, ok := t.(xml.StartElement); {
       case err == io.EOF:
           return ""
       case err != nil:
           fmt.Println(err)
           return ""
       case !ok:
           continue
       case s.Name.Local == "cm":
           for _, a := range s.Attr {
               if a.Name.Local == "title" {
                   foundCm(a.Value)
               }
           }
       case s.Name.Local == "categorymembers" && len(s.Attr) > 0 &&
           s.Attr[0].Name.Local == "cmcontinue":
           return url.QueryEscape(s.Attr[0].Value)
       }
   }
   return ""

}

func main() {

   taskQuery := "http://rosettacode.org/mw/api.php?action=query" +
       "&format=xml&list=categorymembers&cmlimit=500" +
       "&cmtitle=Category:Programming_Tasks"
   continueAt := req(taskQuery, count)
   for continueAt > "" {
       continueAt = req(taskQuery+"&cmcontinue="+continueAt, count)
   }
   fmt.Printf("Total: %d examples.\n", total)

}

var marker = []byte("=={{header|") var total int

func count(cm string) {

   taskFmt := "http://rosettacode.org/mw/index.php?title=%s&action=raw"
   taskEsc := url.QueryEscape(strings.Replace(cm, " ", "_", -1))
   resp, err := http.Get(fmt.Sprintf(taskFmt, taskEsc))
   var page []byte
   if err == nil {
       page, err = ioutil.ReadAll(resp.Body)
       resp.Body.Close()
   }
   if err != nil {
       fmt.Println(err)
       return
   }
   examples := bytes.Count(page, marker)
   fmt.Printf("%s: %d\n", cm, examples)
   total += examples

}</lang>

Output
(May 25, 2011):
...
Y combinator: 40
Yahoo! search interface: 10
Yin and yang: 18
Zig-zag matrix: 50
Total: 18290 examples.

Haskell

Library: HTTP XML

from HackageDB

<lang haskell>import Network.Browser import Network.HTTP import Network.URI import Data.List import Data.Maybe import Text.XML.Light import Control.Arrow

justifyR w = foldl ((.return).(++).tail) (replicate w ' ') showFormatted t n = t ++ ": " ++ justifyR 4 (show n)

getRespons url = do

   rsp <- Network.Browser.browse $ do
     setAllowRedirects True
     setOutHandler $ const (return ())     -- quiet
     request $ getRequest url
   return $ rspBody $ snd rsp

getNumbOfExampels p = do

 let pg = intercalate "_" $ words p
 rsp <- getRespons $ "http://www.rosettacode.org/w/index.php?title=" ++ pg ++ "&action=raw"
 let taskPage = rsp
     countEx = length $ filter (=="=={{header|") $ takeWhile(not.null) $ unfoldr (Just. (take 11 &&& drop 1)) taskPage
 return countEx
 

progTaskExamples = do

 rsp <- getRespons "http://www.rosettacode.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:Programming_Tasks&cmlimit=500&format=xml"
 let xmls = onlyElems $ parseXML $ rsp
     tasks = concatMap (map (fromJust.findAttr (unqual "title")). filterElementsName (== unqual "cm")) xmls
 taskxx <- mapM getNumbOfExampels tasks
 let ns = taskxx
     tot = sum ns
 mapM_ putStrLn $ zipWith showFormatted tasks ns
 putStrLn $ ("Total: " ++) $ show tot</lang>

some output: <lang haskell>*Main> progTaskExamples 100 doors: 56 24 game: 11 24 game Player: 9 99 Bottles of Beer: 73 Abstract type: 23 Ackermann Function: 61 Active object: 9 ... Total: 9156</lang>

Icon and Unicon

The following code uses features exclusive to Unicon. This version handles all tasks, not just the first 500.

<lang Unicon>$define RCINDEX "http://rosettacode.org/mw/api.php?format=xml&action=query&list=categorymembers&cmtitle=Category:Programming_Tasks&cmlimit=500" $define RCTASK "http://rosettacode.org/mw/index.php?action=raw&title=" $define RCUA "User-Agent: Unicon Rosetta 0.1" $define RCXUA "X-Unicon: http://unicon.org/" $define TASKTOT "* Total Tasks *" $define TOTTOT "* Total Headers*"

link strings link hexcvt

procedure main(A) # simple single threaded read all at once implementation

   Tasks := table(0)
   every task := taskNames() do {
      Tasks[TASKTOT] +:= 1                            # count tasks
      every lang := languages(task) do {              # count languages
         Tasks[task] +:= 1                     
         Tasks[TOTTOT] +:= 1
         }
      }
   every insert(O := set(),key(Tasks))                # extract & sort keys 
   O := put(sort(O--set(TOTTOT,TASKTOT)),TASKTOT,TOTTOT)  # move totals to end
   every write(k := !O, " : ", Tasks[k]," examples.") # report

end

  1. Generate task names

procedure taskNames()

   continue := ""
   while \(txt := ReadURL(RCINDEX||continue)) do {
       txt ? {
           while tab(find("<cm ") & find(s :="title=\"")+*s) do
               suspend tab(find("\""))\1
           if tab(find("cmcontinue=")) then {
               continue := "&"||tab(upto(' \t'))
               }
           else break
           }
       }

end

  1. Generate language headers in a task

procedure languages(task)

   static WS
   initial WS := ' \t'
   page := ReadURL(RCTASK||CleanURI(task))
   page ? while (tab(find("\n==")),tab(many(WS))|"",tab(find("{{"))) do {
              header := tab(find("=="))
              header ? {
                  while tab(find("{{header|")) do {
                      suspend 2(="",tab(find("")))\1
                      }
                  }
              }

end

procedure CleanURI(u) #: clean up a URI

   static tr,dxml                     # xml & http translation
   initial {
      tr := table()
      every c := !string(~(&digits++&letters++'-_.!~*()/\'`')) do 
         tr[c] := "%"||hexstring(ord(c),2)
      every /tr[c := !string(&cset)] := c
      tr[" "] := "_"                                      # wiki convention
      every push(dxml := [],"&#"||right(ord(c := !"&<>'\""),3,"0")||";",c)
      }

   dxml[1] := u                       # insert URI as 1st arg
   u := replacem!dxml                 # de-xml it
   every (c := "") ||:= tr[!u]        # reencode everything
   c := replace(c,"%3E","'")          # Hack to put single quotes back in
   c := replace(c,"%26quot%3B","\"")  # Hack to put double quotes back in
   return c   

end

procedure ReadURL(url) #: read URL into string

   page := open(url,"m",RCUA,RCXUA) | stop("Unable to open ",url)
   text := ""
   if page["Status-Code"] < 300 then while text ||:= reads(page,-1)
   else write(&errout,image(url),": ",
                      page["Status-Code"]," ",page["Reason-Phrase"])
   close(page)
   return text

end</lang>

strings provides replacem hexcvt provides hexstring

Sample Output for July 6, 2013 (abridged):

100 doors : 171 examples.
24 game : 60 examples.
24 game/Solve : 37 examples.
9 billion names of God the integer : 12 examples.
99 Bottles of Beer : 199 examples.
A+B : 137 examples.
Abstract type : 54 examples.
Accumulator factory : 67 examples.
Ackermann function : 137 examples.
...
Y combinator : 56 examples.
Yahoo! search interface : 18 examples.
Yin and yang : 39 examples.
Zebra puzzle : 12 examples.
Zeckendorf arithmetic : 3 examples.
Zeckendorf number representation : 21 examples.
Zig-zag matrix : 67 examples.
* Total Tasks * : 676 examples.
* Total Headers* : 31146 examples.

J

Solution:
Using getCategoryMembers from Find unimplemented tasks. <lang j>require 'web/gethttp'

getAllTaskSolnCounts=: monad define

 tasks=.  getCategoryMembers 'Programming_Tasks'
 counts=. getTaskSolnCounts &> tasks
 tasks;counts

)

getTaskSolnCounts=: monad define

 makeuri=. 'http://www.rosettacode.org/w/index.php?title=' , ,&'&action=raw'
 wikidata=. gethttp makeuri urlencode y
 ([: +/ '{{header|'&E.) wikidata

)

formatSolnCounts=: monad define

 'tasks counts'=. y
 tasks=. tasks , &.>':'
 res=. ;:^:_1 tasks ,. (8!:0 counts) ,. <'examples.'
 res , 'Total examples: ' , ": +/counts

)</lang>

Example Usage: <lang j> formatSolnCounts getAllTaskSolnCounts 100 doors: 61 examples. 24 game: 15 examples. 24 game Player: 11 examples. 99 Bottles of Beer: 76 examples. ...</lang>

Java

Works with: Java version 1.5+

<lang java5> import java.util.ArrayList; import ScreenScrape;

public class CountProgramExamples {

   private static final String baseURL = "http://rosettacode.org/wiki/";
   private static final String rootURL = "http://www.rosettacode.org/w/"
       + "api.php?action=query&list=categorymembers"
       + "&cmtitle=Category:Programming_Tasks&cmlimit=500&format=xml";
   private static final String taskBegin = "title=\"";
   private static final String taskEnd = "\"";
   private static final String exmplBegin = "";
   private static final String exmplEnd = "";
   private static final String editBegin = "";
   /**
    * @param args
    */
   public static void main(String[] args) {
       int exTotal = 0;
       try {
           // Get root query results
           ArrayList<String> tasks = new ArrayList<String>();
           ScreenScrape ss = new ScreenScrape();
           String rootPage = ss.read(rootURL);
           while (rootPage.contains(taskBegin)) {
               rootPage = rootPage.substring(rootPage.indexOf(taskBegin)
                   + taskBegin.length());
               String title = rootPage.substring(0, rootPage.indexOf(taskEnd));
               if (!title.contains("Category:")) {
                   tasks.add(title);
               }
               rootPage = rootPage.substring(rootPage.indexOf(taskEnd));
           }
           // Loop through each task and print count
           for (String task : tasks) {
               String title = task.replaceAll("'", "'");
               String taskPage = ss.read(baseURL + title.replaceAll(" ", "_"));
               int exSubTot;
               if (taskPage.contains(exmplBegin)) {
                   int startPos = taskPage.lastIndexOf(exmplBegin)
                       + exmplBegin.length();
                   String countStr = taskPage.substring(startPos,
                       taskPage.indexOf(exmplEnd, startPos));
                   exSubTot = Integer
                       .parseInt(countStr.contains(".") ? countStr
                           .substring(0, countStr.indexOf("."))
                           : countStr);
               } else {
                   exSubTot = 0;
                   while (taskPage.contains(editBegin)) {
                       taskPage = taskPage.substring(taskPage
                           .indexOf(editBegin) + editBegin.length());
                       exSubTot++;
                   }
               }
               exTotal += exSubTot;
               System.out.println(title + ": " + exSubTot + " examples.");
           }
           // Print total
           System.out.println("\nTotal: " + exTotal + " examples.");
       } catch (Exception e) {
           System.out.println(title);
           System.out.println(startPos + ":"
               + taskPage.indexOf(exmplEnd, startPos));
           System.out.println(taskPage);
           e.printStackTrace(System.out);
       }
   }

} </lang> ScreenScrape class


jq

jq does not duplicate the functionality of `curl` but works seamlessly with it, as illustrated by the following bash script. Note in particular the use of jq's `@uri` filter in the bash function `titles`.

<lang bash>#!/bin/bash

  1. Produce lines of the form: URI TITLE

function titles {

   local uri="http://www.rosettacode.org/mw/api.php?action=query&list=categorymembers"
   uri+="&cmtitle=Category:Programming_Tasks&cmlimit=5000&format=json"
   curl -Ss "$uri" |
     jq -r '.query.categorymembers[] | .title | "\(@uri) \(.)"'

}

  1. Syntax: count URI

function count {

   local uri="$1"
   curl -Ss "http://rosettacode.org/mw/index.php?title=${uri}&action=raw" |
     jq -R -n 'reduce (inputs|select(test("=={{header\\|"))) as $x(0; .+1)'

}

local n=0 i while read uri title do

   i=$(count "$uri")
   echo "$title: $i examples."
   n=$((n + i))

done < <(titles) echo Total: $n examples.</lang>

Output:
100 doors: 252 examples.
15 Puzzle Game: 36 examples.
2048: 24 examples.
...
Order two numerical lists: 65 examples.
Ordered Partitions: 28 examples.
Ordered words: 85 examples.
Palindrome detection: 136 examples.
Total: 32416 examples.

Lasso

<lang Lasso>local(root = json_deserialize(curl('http://rosettacode.org/mw/api.php?action=query&list=categorymembers&cmtitle=Category:Programming_Tasks&cmlimit=10&format=json')->result)) local(tasks = array, title = string, urltitle = string, thiscount = 0, totalex = 0) with i in #root->find('query')->find('categorymembers') do => {^ #thiscount = 0 #title = #i->find('title') #urltitle = #i->find('title') #urltitle->replace(' ','_')

#title+': ' local(src = curl('http://rosettacode.org/mw/index.php?title='+#urltitle->asBytes->encodeurl+'&action=raw')->result->asString) #thiscount = (#src->split('==[[:Category:{PercentEncode Xr}

       else
          {Append &%|{PercentEncode Xr}
       else
          {Append &%]] [[Category:{PercentEncode Xr}
       else
          {Append &%]] Property "Implemented in language" (as page type) with input value "{PercentEncode Xr}</br>        else</br>           {Append &%" contains invalid characters or is incomplete and therefore can cause unexpected results during a query or annotation process.
       end
    end
 end
 
 fun {ToHex2 X}
    [{ToHex1 X div 16} {ToHex1 X mod 16}]
 end
 
 fun {ToHex1 X}
    if X >= 0 andthen X =< 9 then &0 + X
    elseif X >= 10 andthen X =< 15 then &A + X - 10
    end
 end

in

 {Main}</lang>

Example output:

100 doors: 86 examples.
24 game: 22 examples.
24 game/Solve: 15 examples.
99 Bottles of Beer: 108 examples.
A+B: 59 examples.
...
Xiaolin Wu's line algorithm: 5 examples.
Y combinator: 29 examples.
Yahoo! Search: 10 examples.
Zig-zag matrix: 43 examples.
Total: 14099 examples.

Perl

<lang Perl>use LWP::Simple;

my $site = "http://rosettacode.org"; my $list_url = "/mw/api.php?action=query&list=categorymembers&cmtitle=Category:Programming_Tasks&cmlimit=500&format=xml";

for (get("$site$list_url") =~ /cm.*?title="(.*?)"/g) {

   (my $slug = $_) =~ tr/ /_/;
   my $count = () = get("$site/wiki/$slug") =~ /toclevel-1/g;
   print "$_: $count examples\n";

}</lang>

Library: Mojolicious

<lang Perl>use v5.10; use Mojo::UserAgent;

my $site = "http://rosettacode.org"; my $list_url = "/mw/api.php?action=query&list=categorymembers&cmtitle=Category:Programming_Tasks&cmlimit=500&format=xml";

my $ua = Mojo::UserAgent->new; $ua->get("$site$list_url")->res->dom->find('cm')->each(sub {

   (my $slug = $_->{title}) =~ tr/ /_/;
   my $count = $ua->get("$site/wiki/$slug")->res->dom->find("#toc .toclevel-1")->size;
   say "$_->{title}: $count examples";

});</lang>

Perl 6

Works with: Rakudo version 2018.03

Retrieves counts for both Tasks and Draft Tasks. Save / Display results as a sortable wikitable rather than a static list. Click on a column header to sort on that column. To do a secondary sort, hold down the shift key and click on a second column header. Tasks have a gray (default) background, Draft Tasks have a yellow background. <lang perl6>use HTTP::UserAgent; use URI::Escape; use JSON::Fast;

class Progress-Bar {

   has $.width = 40;
   has $.count is rw = 0;
   has @!bar = < ▏ ▎ ▍ ▌ ▋ ▊ ▉ █ >;
   method inc {
       ($.count += 1) mod= $.width * 8;
       self.clear ~ @!bar.tail x $.count div 8 ~ @!bar[ $.count % 8 ]
           ~ ' ' x $.width - 1 - ($.count / 8).floor
   }
   method clear {
       "\r" ~ ' ' x $.width ~ "\r"
   }

}

  1. Friendlier descriptions for task categories

my %cat = (

   'Programming_Tasks' => 'Task',
   'Draft_Programming_Tasks' => 'Draft'

);

my $client = HTTP::UserAgent.new;

my $url = 'http://rosettacode.org/mw';

my $hashfile = './RC_Task_count.json'; my $tablefile = './RC_Task_count.txt';

my %tasks;

  1. =begin update

note 'Retrieving task information...';

my $progress = Progress-Bar.new(width => 79);

for %cat.keys -> $cat {

   mediawiki-query(
       $url, 'pages',
       :generator<categorymembers>,
       :gcmtitle("Category:$cat"),
       :gcmlimit<350>,
       :rawcontinue(),
       :prop<title>
   ).map({
       my $page =
         $client.get("{ $url }/index.php?title={ uri-escape .<title> }&action=raw").content;
       my $count = +$page.comb(/ ^^'==' <-[\n=]>* '{{header|' \w+ \N+ '==' \h* $$ /);
       %tasks{.<title>} = {'cat' => %cat{$cat}, :$count};
       print $progress.inc;
   })

}

print $progress.clear;

note "\nTask information saved to local file: {$hashfile.IO.absolute}"; $hashfile.IO.spurt(%tasks.&to-json);

  1. =end update
  1. Load information from local file

%tasks = $hashfile.IO.e ?? $hashfile.IO.slurp.&from-json !! ( );

  1. Convert saved task / author info to a table

note "\nBuilding table..."; my $count = +%tasks; my $taskcnt = +%tasks.grep: *.value.<cat> eq %cat<Programming_Tasks>; my $draftcnt = $count - $taskcnt; my $total = sum %tasks{*}»<count>;

  1. Dump table to a file

my $out = open($tablefile, :w) or die "$!\n";

  1. Add table boilerplate and caption

$out.say:

'

', "\n",
   '{|class="wikitable sortable"', "\n",
   "|+ As of { Date.today } :: Tasks: { $taskcnt } :: Draft Tasks: ",
   "{ $draftcnt } :: Total Tasks: { $count } :: Total Examples: { $total }\n",
   "! Count !! Task !! Category"
  1. Sort tasks by count then add row

for %tasks.sort: { [-.value<count>, .key] } -> $task {

   $out.say:
     ( $task.value<cat> eq 'Draft'
       ?? "|- style=\"background-color: #ffc\"\n"
       !! "|-\n"
     ),
     "| { $task.value<count> }\n",
     ( $task.key ~~ /\d/
       ?? "|data-sort-value=\"{ $task.key.&naturally }\"| [[{uri-escape $task.key}|{$task.key}]]\n"
       !! "| [[{uri-escape $task.key}|{$task.key}]]\n"
     ),
     "| { $task.value<cat> }"

}

$out.say( "|}\n", '

' );

$out.close;

note "Table file saved as: {$tablefile.IO.absolute}";

sub mediawiki-query ($site, $type, *%query) {

   my $url = "$site/api.php?" ~ uri-query-string(
       :action<query>, :format<json>, :formatversion<2>, |%query);
   my $continue = ;
   gather loop {
       my $response = $client.get("$url&$continue");
       my $data = from-json($response.content);
       take $_ for $data.<query>.{$type}.values;
       $continue = uri-query-string |($data.<query-continue>{*}».hash.hash or last);
   }

}

sub uri-query-string (*%fields) { %fields.map({ "{.key}={uri-escape .value}" }).join("&") }

sub naturally ($a) { $a.lc.subst(/(\d+)/, ->$/ {0~(65+$0.chars).chr~$0},:g) } </lang>

Output:
As of 2018-03-30 :: Tasks: 871 :: Draft Tasks: 209 :: Total Tasks: 1080 :: Total Examples: 55684
Count Task Category
382 Hello world/Text Task
270 99 Bottles of Beer Task
262 100 doors Task
262 FizzBuzz Task
239 Comments Task
239 Fibonacci sequence Task
230 Factorial Task
215 Empty program Task
214 A+B Task
207 Function definition Task
194 Ackermann function Task
192 Loops/Infinite Task
188 Loops/While Task
185 Reverse a string Task
184 Arrays Task
177 Loops/For Task
176 Greatest common divisor Task
171 Arithmetic/Integer Task
171 Conditional structures Task
170 Greatest element of a list Task
167 Averages/Arithmetic mean Task
162 Integer comparison Task
158 Increment a numerical string Task
158 Repeat a string Task
157 Loops/Downward for Task
156 Array concatenation Task
156 Boolean values Task
152 Loops/For with a specified step Task
151 Copy a string Task
148 Hello world/Graphical Task
148 Sum and product of an array Task
147 Even or odd Task
146 String length Task
144 Apply a callback to an array Task
144 Loops/Foreach Task
143 Character codes Task
143 Loops/Do-while Task
141 String case Task
138 Hello world/Newline omission Task
137 Generic swap Task
137 Loops/N plus one half Task
137 String concatenation Task
136 Hailstone sequence Task
136 Integer sequence Task
136 Sum of a series Task
136 Sum of squares Task
135 Binary digits Task
135 Filter Task
134 Loops/Break Task
134 Palindrome detection Task
134 Rot-13 Task
133 Execute a system command Task
133 Towers of Hanoi Task
131 Logical operations Task
131 Sort an integer array Task
130 Dot product Task
128 Sieve of Eratosthenes Task
127 Associative array/Creation Task
127 File input/output Task
127 Tokenize a string Task
126 Higher-order functions Task
126 Leap year Task
126 Remove duplicate elements Task
125 Determine if a string is numeric Task
124 Sorting algorithms/Bubble sort Task
123 Array length Task
122 Quine Task
122 Roman numerals/Encode Task
121 Empty string Task
121 Read entire file Task
121 User input/Text Task
120 Command-line arguments Task
120 Hello world/Standard error Task
119 Create a file Task
118 Guess the number Task
118 Primality by trial division Task
117 Bitwise operations Task
117 Loop over multiple arrays simultaneously Task
117 Sorting algorithms/Quicksort Task
116 Sleep Task
116 System time Task
115 Factors of an integer Task
114 Check that file exists Task
114 Day of the week Task
114 Happy numbers Task
114 Literals/String Task
113 Caesar cipher Task
113 Least common multiple Task
113 Mutual recursion Task
113 Substring Task
112 Literals/Integer Task
112 Pascal's triangle Task
112 Stack Task
111 Flatten a list Task
111 Luhn test of credit card numbers Task
110 Include a file Task
110 Loops/Continue Task
109 Averages/Root mean square Task
109 Balanced brackets Task
109 Ethiopian multiplication Task
109 File size Task
109 Knuth shuffle Task
108 Compound data type Task
108 Date format Task
107 Associative array/Iteration Task
107 Program termination Task
106 Read a file line by line Task
106 Real constants and functions Task
106 Search a list Task
105 Anagrams Task
105 Detect division by zero Task
105 Variables Task
104 Classes Task
104 Delete a file Task
104 Rename a file Task
103 Averages/Median Task
103 Binary search Task
103 Case-sensitivity of identifiers Task
103 Formatted numeric output Task
103 Function composition Task
103 Return multiple values Task
102 ABC Problem Task
102 Count in octal Task
102 Hostname Task
102 Input loop Task
102 Loops/Nested Task
102 Null object Task
101 Arithmetic/Complex Task
101 Hash from two arrays Task
101 Random numbers Task
101 Sorting algorithms/Insertion sort Task
100 Count occurrences of a substring Task
100 Multiplication tables Task
99 Environment variables Task
99 Generate lower case ASCII alphabet Task
99 Matrix multiplication Task
99 Matrix transposition Task
99 N-queens problem Task
99 Pick random element Task
98 HTTP Task
98 Horner's rule for polynomial evaluation Task
97 Create a two-dimensional array at runtime Task
97 Guess the number/With feedback Task
97 Pangram checker Task
96 Accumulator factory Task
96 Assertions Task
96 Haversine formula Task
96 Identity matrix Task
96 Mandelbrot set Task
96 Perfect numbers Task
96 Roman numerals/Decode Task
95 Align columns Task
95 Averages/Pythagorean means Task
95 Evaluate binomial coefficients Task
95 Find limit of recursion Task
95 String matching Task
95 Strip a set of characters from a string Task
94 Temperature conversion Task
93 Catalan numbers Task
93 Run-length encoding Task
93 Substring/Top and tail Task
93 Variadic function Task
93 Zero to the zero power Task
92 Exceptions Task
92 Zig-zag matrix Task
91 Arithmetic-geometric mean Task
91 Program name Task
91 Strip whitespace from a string/Top and tail Task
90 Infinity Task
90 Letter frequency Task
90 Prime decomposition Task
90 Regular expressions Task
90 Shell one-liner Task
89 Combinations Task
89 Conway's Game of Life Task
89 String interpolation (included) Task
89 Trigonometric functions Task
88 24 game Task
88 Middle three digits Task
88 Power set Task
88 Random number generator (included) Task
88 Sierpinski triangle Task
88 Sorting algorithms/Merge sort Task
88 Sorting algorithms/Selection sort Task
87 Collections Task
87 Enumerations Task
87 Ordered words Task
87 Short-circuit evaluation Task
86 Anonymous recursion Task
86 One-dimensional cellular automata Task
85 Comma quibbling Task
85 Exponentiation operator Task
85 Inheritance/Single Task
85 Levenshtein distance Task
85 Look-and-say sequence Task
85 Sequence of non-squares Task
84 Arbitrary-precision integers (included) Task
84 First-class functions Task
84 Interactive programming Task
84 Permutations Task
84 Range extraction Task
84 Reverse words in a string Task
84 Sum multiples of 3 and 5 Task
84 Walk a directory/Non-recursively Task
83 Queue/Definition Task
83 Sort using a custom comparator Task
82 Cumulative standard deviation Task
82 Nth root Task
82 Range expansion Task
81 Bulls and cows Task
81 Five weekends Task
81 MD5 Task
81 Sorting algorithms/Gnome sort Task
81 Symmetric difference Task
80 Create an HTML table Task
80 Evolutionary algorithm Task
80 Time a function Task
80 Y combinator Task
79 Averages/Simple moving average Task
79 Forward difference Task
79 String prepend Task
79 Window creation Task
78 Abstract type Task
78 Call a function Task
78 File modification time Task
78 Price fraction Task
77 Averages/Mode Task
77 Dragon curve Task
77 Greatest subsequential sum Task
77 Monty Hall problem Task
77 Sierpinski carpet Task
77 String append Task
77 Vector products Task
76 Hamming numbers Task
76 Langton's ant Task
76 Sum digits of an integer Task
75 Babbage problem Task
75 Entropy Task
75 Menu Task
75 Simple windowed application Task
75 Sorting algorithms/Bogosort Task
75 Sorting algorithms/Cocktail sort Task
74 Harshad or Niven series Task
74 Hello world/Line printer Task
74 JSON Task
74 Non-decimal radices/Convert Task
74 Show the epoch Task
74 The Twelve Days of Christmas Task
73 Closures/Value capture Task
73 Digital root Task
73 Gray code Task
73 Map range Task
73 Monte Carlo methods Task
73 Set Task
73 Spiral matrix Task
73 Tree traversal Task
73 Walk a directory/Recursively Task
72 Execute Brain**** Task
72 Introspection Task
72 Last Friday of each month Task
72 Literals/Floating point Task
72 Man or boy test Task
72 Queue/Usage Task
72 Read a specific line from a file Task
72 SEDOLs Task
72 Web scraping Task
71 CSV to HTML translation Task
71 Number reversal game Task
71 Singly-linked list/Traversal Task
71 Sort an array of composite structures Task
71 URL decoding Task
70 Bitmap Task
70 CSV data manipulation Task
70 Count in factors Task
70 Number names Task
70 Sorting algorithms/Heapsort Task
69 Amicable pairs Task
69 Floyd's triangle Task
69 Linear congruential generator Task
68 Address of a variable Task
68 Concurrent computing Task
68 Find the missing permutation Task
68 Josephus problem Task
68 Knapsack problem/0-1 Task
68 List comprehensions Task
68 Special characters Task
68 Take notes on the command line Task
68 Terminal control/Ringing the terminal bell Task
68 Top rank per group Task
68 XML/Input Task
67 Abundant, deficient and perfect number classifications Task
67 Catamorphism Task
67 Date manipulation Task
67 Find common directory path Task
67 Roots of unity Task
67 Sockets Task
67 Sorting algorithms/Shell sort Task
67 String comparison Task
67 Strip comments from a string Task
66 Box the compass Task
66 Dynamic variable names Task
66 Kaprekar numbers Task
66 Non-decimal radices/Output Task
66 Playing cards Task
66 Polymorphism Task
66 Singly-linked list/Element definition Task
66 Soundex Task
66 Stair-climbing puzzle Task
66 URL encoding Task
66 Unicode variable names Task
65 Bitmap/Bresenham's line algorithm Task
65 Empty directory Task
65 Equilibrium index Task
65 Longest common subsequence Task
65 Lucas-Lehmer test Task
65 Order two numerical lists Task
64 Find the last Sunday of each month Task
64 Flow-control structures Task
64 N'th Task
64 Sorting algorithms/Counting sort Task
64 Write float arrays to a text file Task
63 Anagrams/Deranged anagrams Task
63 Averages/Mean angle Task
63 Exceptions/Catch an exception thrown in a nested call Task
63 Hello world/Web server Task
63 Keyboard input/Obtain a Y or N response Task
63 Multifactorial Task
63 Multiple distinct objects Task
63 Parsing/RPN calculator algorithm Task
63 Semordnilap Task
63 Sorting algorithms/Comb sort Task
63 Terminal control/Clear the screen Task
63 Word wrap Task
62 Call an object method Task
62 Compare a list of strings Task
62 Count the coins Task
62 Fibonacci n-step number sequences Task
62 Guess the number/With feedback (player) Task
62 Here document Task
62 Hofstadter Q sequence Task
62 Jensen's Device Task
62 Largest int from concatenated ints Task
62 Long multiplication Task
62 Pythagorean triples Task
62 Read a configuration file Task
62 Sorting algorithms/Stooge sort Task
62 Vigenère cipher Task
61 Animation Task
61 Convert seconds to compound duration Task
61 Enforced immutability Task
61 Hello world/Newbie Task
61 Sort disjoint sublist Task
61 Sudoku Task
61 Text processing/Max licenses in use Task
61 Trabb Pardo–Knuth algorithm Task
60 Constrained random points on a circle Task
60 Execute HQ9+ Task
60 Gamma function Task
60 Numerical integration Task
60 Operator precedence Task
60 Probabilistic choice Task
60 Sort stability Task
60 Strip control codes and extended characters from a string Task
59 Call a foreign-language function Task
59 Euler method Task
59 Fork Task
59 Four bit adder Task
59 Runtime evaluation Task
58 Benford's law Task
58 Named parameters Task
58 One of n lines in a file Task
58 Quaternion type Task
58 Remove lines from a file Task
58 Roots of a quadratic function Task
58 Singly-linked list/Element insertion Task
58 Special variables Task
58 Variable size/Get Task
57 Arithmetic/Rational Task
57 Closest-pair problem Task
57 Combinations with repetitions Task
57 Fractal tree Task
57 HTTPS Task
57 Horizontal sundial calculations Task
57 IBAN Task
57 Magic squares of odd order Task
57 Optional parameters Task
57 Phrase reversals Task
57 Pi Task
57 Priority queue Task
57 Proper divisors Draft
57 Rock-paper-scissors Task
57 Roots of a function Task
57 Undefined values Task
56 Almost prime Task
56 Catalan numbers/Pascal's triangle Task
56 Currying Task
56 Hofstadter-Conway $10,000 sequence Task
56 Host introspection Task
56 Memory allocation Task
56 Runge-Kutta method Task
56 SHA-1 Task
56 Self-describing numbers Task
56 Van der Corput sequence Task
56 Zeckendorf number representation Task
55 AKS test for primes Task
55 Best shuffle Task
55 CRC-32 Task
55 Cholesky decomposition Task
55 Draw a sphere Task
55 Fast Fourier transform Task
55 Jump anywhere Task
55 Knapsack problem/Unbounded Task
55 Modular inverse Task
55 Narcissistic decimal number Task
55 Sorting algorithms/Pancake sort Task
55 Sorting algorithms/Sleep sort Task
54 Extend your language Task
54 Inheritance/Multiple Task
54 Maze generation Task
54 Non-decimal radices/Input Task
54 Partial function application Task
54 SHA-256 Task
54 XML/Output Task
53 Calendar Task
53 Factors of a Mersenne number Task
53 Forest fire Task
53 Globally replace text in several files Task
53 Old lady swallowed a fly Task
53 Pernicious numbers Task
53 Reduced row echelon form Task
53 Stem-and-leaf plot Task
53 Test a function Task
53 Yin and yang Task
52 24 game/Solve Task
52 Documentation Task
52 Extreme floating point values Task
52 Fibonacci word Task
52 Huffman coding Task
52 Odd word problem Task
52 Singleton Task
52 Sorting algorithms/Bead sort Task
52 Synchronous concurrency Task
52 Write entire file Task
52 Write language name in 3D ASCII Task
52 XML/XPath Task
51 Animate a pendulum Task
51 Arithmetic evaluation Task
51 Binary strings Task
51 Hash join Task
51 Knapsack problem/Continuous Task
51 Rep-string Task
51 Repeat Draft
51 Sequence of primes by trial division Task
51 Stack traces Task
50 Add a variable to a class instance at runtime Task
50 Brownian tree Task
50 Compile-time calculation Task
50 Continued fraction Task
50 Miller–Rabin primality test Task
50 Rosetta Code/Rank languages by popularity Task
50 Runtime evaluation/In an environment Task
50 Scope modifiers Task
50 Semiprime Task
50 Sorting algorithms/Permutation sort Task
50 Truncate a file Task
50 Unix/ls Task
49 Averages/Mean time of day Task
49 Deal cards for FreeCell Task
49 Dinesman's multiple-dwelling problem Task
49 Draw a clock Task
49 Euler's sum of powers conjecture Task
49 Knight's tour Task
49 LZW compression Task
49 Morse code Task
49 Plot coordinate pairs Task
49 Tic-tac-toe Task
49 Truncatable primes Task
49 Unbias a random generator Task
48 Circles of given radius through two points Task
48 Doubly-linked list/Element definition Task
48 Generator/Exponential Task
48 Modular exponentiation Task
48 Modulinos Draft
48 Pointers and references Task
48 Send email Task
48 Terminal control/Display an extended character Task
48 Unicode strings Task
47 Bitmap/Write a PPM file Task
47 Dutch national flag problem Task
47 I before E except after C Task
47 Integer overflow Task
47 Left factorials Task
47 Mouse position Task
47 Multisplit Task
47 Non-continuous subsequences Task
47 Random number generator (device) Task
47 Split a character string based on change of character Task
47 Statistics/Basic Task
47 Topological sort Task
47 Wireworld Task
46 DNS query Task
46 Grayscale image Task
46 Handle a signal Task
46 Nested function Task
46 Respond to an unknown method call Task
46 Text processing/1 Task
46 Text processing/2 Task
46 User input/Graphical Task
45 Define a primitive data type Task
45 Draw a cuboid Task
45 First-class functions/Use numbers analogously Task
45 JortSort Task
45 Ludic numbers Task
45 Mad Libs Task
45 Maximum triangle path sum Task
45 Seven-sided dice from five-sided dice Task
45 Stable marriage problem Task
45 XML/DOM serialization Task
44 9 billion names of God the integer Task
44 Chinese remainder theorem Task
44 Delegates Task
44 General FizzBuzz Task
44 Heronian triangles Task
44 Matrix-exponentiation operator Task
44 Munchausen numbers Task
44 Population count Task
44 Sierpinski triangle/Graphical Task
44 Table creation/Postal addresses Task
44 Ternary logic Task
44 Thue-Morse Task
43 Bernoulli numbers Task
43 Call a function in a shared library Task
43 Discordian date Task
43 Longest increasing subsequence Task
43 Munching squares Task
43 Quickselect algorithm Task
43 Send an unknown method call Task
43 Terminal control/Cursor positioning Task
42 15 Puzzle Game Task
42 Dining philosophers Task
42 Doubly-linked list/Element insertion Task
42 Emirp primes Task
42 Polymorphic copy Task
41 Color of a screen pixel Task
41 Convert decimal number to rational Task
41 Doubly-linked list/Traversal Task
41 Echo server Task
41 Execute a Markov algorithm Task
41 Hofstadter Figure-Figure sequences Task
41 Holidays related to Easter Task
41 Inverted syntax Task
41 Iterated digits squaring Task
41 Longest string challenge Task
41 Make directory path Task
41 Rate counter Task
41 Strip block comments Task
41 Two Sum Draft
40 Exponentiation order Task
40 GUI component interaction Task
40 Keyboard input/Keypress check Task
40 Last letter-first letter Task
40 Move-to-front algorithm Task
40 Parsing/Shunting-yard algorithm Task
40 Rosetta Code/Count examples Task
40 Universal Turing machine Task
40 Verify distribution uniformity/Naive Task
39 Atomic updates Task
39 Barnsley fern Task
39 Bitmap/Flood fill Task
39 Bitmap/Read a PPM file Task
39 Extract file extension Draft
39 Get system command output Task
39 Greyscale bars/Display Task
39 Polynomial regression Task
39 Search a list of records Task
39 Terminal control/Coloured text Task
39 Zebra puzzle Task
38 Bitmap/Midpoint circle algorithm Task
38 Determine if only one instance is running Task
38 Digital root/Multiplicative digital root Task
38 FASTA format Task
38 OpenGL Task
38 Polynomial long division Task
38 Problem of Apollonius Task
38 Secure temporary file Task
38 Set consolidation Task
38 Sorting algorithms/Strand sort Task
38 Sparkline in unicode Task
37 Doubly-linked list/Definition Task
37 Fractran Task
37 Image noise Task
37 Parametric polymorphism Task
37 Perfect shuffle Task
37 Pig the dice game Task
37 Subtractive generator Task
37 Variable size/Set Task
36 Active object Task
36 Dijkstra's algorithm Draft
36 Generate Chess960 starting position Task
36 History variables Task
36 Inverted index Task
36 MD5/Implementation Task
36 Metaprogramming Task
36 Narcissist Task
36 Pascal matrix generation Task
36 Permutations by swapping Task
36 Stern-Brocot sequence Task
36 Twelve statements Task
35 Append a record to the end of a text file Task
35 Base64 encode data Draft
35 Bulls and cows/Player Task
35 Colour bars/Display Task
35 Department Numbers Task
35 Element-wise operations Task
35 Farey sequence Task
35 GUI enabling/disabling of controls Task
35 Knapsack problem/Bounded Task
35 Kronecker product Task
35 Matrix arithmetic Task
35 Parallel calculations Task
35 Percentage difference between images Task
35 Permutations/Derangements Task
35 Ray-casting algorithm Task
35 Smith numbers Task
35 Subleq Task
35 Sum to 100 Task
35 Terminal control/Dimensions Task
35 Validate International Securities Identification Number Task
35 Variable-length quantity Task
35 Visualize a tree Task
34 Amb Task
34 Archimedean spiral Task
34 Average loop length Task
34 Balanced ternary Task
34 Calendar - for "REAL" programmers Task
34 Constrained genericity Task
34 Jaro distance Task
34 Leonardo numbers Task
34 Longest common prefix Draft
34 Self-referential sequence Task
34 Statistics/Normal distribution Task
34 Tokenize a string with escaping Task
34 Topswops Task
33 Carmichael 3 strong pseudoprimes Task
33 Combinations and permutations Task
33 Gaussian elimination Task
33 Hickerson series of almost integers Task
33 Naming conventions Task
33 Parsing/RPN to infix conversion Task
33 Sorting algorithms/Radix sort Task
33 Start from a main routine Task
33 Ulam spiral (for primes) Task
32 2048 Task
32 4-rings or 4-squares puzzle Task
32 Aliquot sequence classifications Task
32 Break OO privacy Task
32 Events Task
32 Extensible prime generator Task
32 GUI/Maximum window dimensions Task
32 Knuth's algorithm S Task
32 Metered concurrency Task
32 Multiline shebang Draft
32 Order disjoint list items Task
32 Pascal's triangle/Puzzle Task
32 Password generator Task
32 S-Expressions Task
32 Test integerness Task
32 Vampire number Task
32 Voronoi diagram Task
31 CUSIP Task
31 Chaos game Task
31 Deepcopy Task
31 Keyboard input/Flush the keyboard buffer Task
31 MD4 Task
31 Permutation test Task
31 Taxicab numbers Task
31 Vector Draft
30 Bitmap/Bézier curves/Cubic Task
30 Cartesian product of two or more lists Task
30 Casting out nines Task
30 Fibonacci word/fractal Task
30 LU decomposition Task
30 Numerical integration/Gauss-Legendre Quadrature Task
30 Ordered Partitions Task
30 Permutations with repetitions Draft
30 Scope/Function names and labels Task
30 Sort three variables Task
30 Speech synthesis Task
30 Terminal control/Inverse video Task
29 Bitmap/Histogram Task
29 Conjugate transpose Task
29 Function prototype Task
29 Input/Output for Pairs of Numbers Draft
29 Maze solving Task
28 Bitmap/Bézier curves/Quadratic Task
28 Bitwise IO Task
28 Elementary cellular automaton Task
28 Executable library Task
28 Flipping bits game Task
28 Minesweeper game Task
28 Object serialization Task
28 Parse command-line arguments Draft
28 Primorial numbers Task
28 Simple database Task
28 Sutherland-Hodgman polygon clipping Task
28 Terminal control/Hiding the cursor Task
28 Terminal control/Unicode output Task
28 Topic variable Task
28 Water collected between towers Task
27 Bitcoin/address validation Task
27 Colour pinstripe/Display Task
27 File extension is in extensions list Draft
27 Find the intersection of two lines Task
27 Input/Output for Lines of Text Draft
27 Julia set Task
27 Multiple regression Task
27 Pinstripe/Display Task
27 Sattolo cycle Draft
26 Memory layout of a data structure Task
26 Numeric error propagation Task
26 Pathological floating point problems Task
26 Penney's game Task
26 RSA code Task
26 Ranking methods Task
26 Sailors, coconuts and a monkey problem Task
26 Set puzzle Task
26 Solve a Hidato puzzle Task
26 Sorting Algorithms/Circle Sort Draft
26 Use another language to call a function Task
26 Xiaolin Wu's line algorithm Task
26 Zhang-Suen thinning algorithm Task
25 Arena storage pool Task
25 Check output device is a terminal Draft
25 Continued fraction/Arithmetic/Construct from rational number Task
25 Entropy/Narcissist Task
25 Execute SNUSP Task
25 First class environments Task
25 Floyd-Warshall algorithm Task
25 Formal power series Task
25 Longest Common Substring Draft
25 Magic squares of doubly even order Task
25 Multiplicative order Task
25 Parametrized SQL statement Task
25 QR decomposition Task
25 RIPEMD-160 Task
25 Read a file character by character/UTF8 Draft
25 Rosetta Code/Find unimplemented tasks Task
25 Same Fringe Task
25 State name puzzle Task
25 Straddling checkerboard Task
25 Subset sum problem Draft
25 Textonyms Task
25 Update a configuration file Task
24 Brace expansion Task
24 Chinese zodiac Task
24 Deconvolution/1D Task
24 Distributed programming Task
24 Egyptian division Task
24 Find palindromic numbers in both binary and ternary bases Task
24 Keyboard macros Task
24 Metronome Task
24 Musical scale Draft
24 Pragmatic directives Task
24 Resistor mesh Task
24 Rosetta Code/Fix code tags Task
24 Sorting algorithms/Cycle sort Draft
23 Arithmetic-geometric mean/Calculate Pi Task
23 Cramer's rule Task
23 Death Star Task
23 Find first and last set bit of a long integer Draft
23 Lychrel numbers Task
23 Natural sorting Task
23 Paraffins Task
23 Pattern matching Task
23 Pythagoras tree Task
23 Rosetta Code/Find bare lang tags Task
23 Solve the no connection puzzle Task
23 Sort a list of object identifiers Task
23 Sorting algorithms/Patience sort Draft
23 Stream Merge Task
23 Truth table Task
23 Window creation/X11 Task
22 Active Directory/Connect Task
22 Angle difference between two bearings Task
22 Check Machin-like formulas Task
22 Checkpoint synchronization Task
22 Create a file on magnetic tape Task
22 FTP Task
22 Galton box animation Task
22 Go Fish Task
22 Prime conspiracy Draft
22 Text between Draft
22 Word count Draft
22 Write to Windows event log Task
21 Chat server Task
21 Check input device is a terminal Draft
21 Currency Draft
21 Find largest left truncatable prime in a given base Task
21 Honeycombs Task
21 Implicit type conversion Draft
21 Nautical bell Task
21 Set of real numbers Task
21 Solve a Holy Knight's tour Task
21 Sum and Product Puzzle Task
21 Table creation Draft
21 Terminal control/Cursor movement Task
21 Terminal control/Preserve screen Task
21 The ISAAC Cipher Task
21 URL parser Task
21 UTF-8 encode and decode Task
21 Verify distribution uniformity/Chi-squared test Task
20 Birthday problem Draft
20 Cycle detection Draft
20 Decimal floating point number to binary Draft
20 Function frequency Task
20 Image convolution Task
20 MAC Vendor Lookup Task
20 Multi-dimensional array Draft
20 Partition an integer X into N primes Task
20 Pentagram Task
20 Percolation/Mean run density Task
20 Permutations/Rank of a permutation Task
20 Play recorded sounds Task
20 RCRPG Task
20 Ramsey's theorem Draft
20 Safe addition Task
20 Shoelace formula for polygonal area Task
20 Simulate input/Keyboard Task
20 Substitution Cipher Draft
20 Welch's t-test Draft
20 Yahoo! search interface Task
19 Cut a rectangle Task
19 Damm algorithm Draft
19 Decision tables Draft
19 Elliptic curve arithmetic Draft
19 HTTPS/Authenticated Task
19 Idiomatically determine all the lowercase and uppercase letters Draft
19 Main step of GOST 28147-89 Task
19 Old Russian measure of length Draft
19 Record sound Task
19 Superellipse Task
19 Thiele's interpolation formula Task
19 Total circles area Task
19 Type detection Draft
18 AVL tree Task
18 Create an object at a given address Task
18 Dice game probabilities Draft
18 Egyptian fractions Task
18 Hough transform Task
18 K-means++ clustering Task
18 Make a backup file Draft
18 Parse an IP Address Task
18 Poker hand analyser Task
18 Reflection/List methods Draft
18 SOAP Task
18 Window management Task
17 Display a linear combination Draft
17 Draw a rotating cube Task
17 Integer roots Draft
17 Modular arithmetic Draft
17 Parallel Brute Force Task
17 Pig the dice game/Player Task
17 Plasma effect Task
17 Playfair cipher Draft
17 Polyspiral Task
17 Reflection/List properties Task
17 Sequence of primorial primes Draft
17 Sokoban Task
16 Elementary cellular automaton/Random Number Generator Draft
16 Idiomatically determine all the characters that can be used for symbols Draft
16 Kahan summation Draft
16 Kronecker product based fractals Task
16 Linux CPU utilization Draft
16 Median filter Task
16 Perlin noise Draft
16 Pythagorean quadruples Task
16 Simulate input/Mouse Task
16 Solve a Numbrix puzzle Task
15 Active Directory/Search for a user Task
15 Bacon cipher Draft
15 Card shuffles Draft
15 Compiler/lexical analyzer Task
15 Faulhaber's formula Draft
15 Levenshtein distance/Alignment Draft
15 Machine code Task
15 Solve a Hopido puzzle Task
14 Assertions in design by contract Draft
14 AudioAlarm Draft
14 Chebyshev coefficients Draft
14 Deming's Funnel Draft
14 Elementary cellular automaton/Infinite length Draft
14 Index finite lists of positive integers Draft
14 K-d tree Task
14 Magic squares of singly even order Task
14 Names to numbers Draft
14 Native shebang Draft
14 Negative base numbers Task
14 Reverse the gender of a string Draft
14 Selective File Copy Draft
14 Tonelli-Shanks algorithm Draft
14 Vigenère cipher/Cryptanalysis Task
14 World Cup group stage Task
13 A* search algorithm Draft
13 Apply a digital filter (direct form II transposed) Task
13 Bitcoin/public point to address Task
13 Cipolla's algorithm Draft
13 Color quantization Task
13 Convex hull Draft
13 Create an object/Native demonstration Draft
13 Fivenum Draft
13 Nonoblock Task
13 Percolation/Site percolation Task
13 Rendezvous Task
13 SQL-based authentication Task
13 Sierpinski pentagon Task
13 Superpermutation minimisation Draft
13 Video display modes Task
12 Bitmap/Read an image through a pipe Task
12 Diversity prediction theorem Draft
12 I.Q. Puzzle Draft
12 Joystick position Task
12 Lucky and even lucky numbers Task
12 Most frequent k chars distance Draft
12 Percolation/Bond percolation Task
12 Percolation/Mean cluster density Task
12 Reflection/Get source Task
12 Retrieve and search chat history Task
12 Untrusted environment Draft
12 Word break problem Draft
11 Arithmetic coding/As a generalized change of radix Draft
11 Bilinear interpolation Draft
11 Compare sorting algorithms' performance Task
11 Faulhaber's triangle Draft
11 Find URI in text Draft
11 Find the intersection of a line with a plane Task
11 Knuth's power tree Draft
11 List rooted trees Draft
11 Monads/Maybe monad Draft
11 N-body problem Draft
11 NYSIIS Draft
11 Polynomial synthetic division Draft
11 Proof Draft
11 Ramer-Douglas-Peucker line simplification Task
11 Separate the house number from the street name Draft
11 Shortest common supersequence Draft
11 Terminal control/Positional read Task
11 Vogel's approximation method Task
10 Aspect Oriented Programming Draft
10 Commatizing numbers Task
10 Compiler/code generator Task
10 Compiler/virtual machine interpreter Task
10 Determine if two triangles overlap Draft
10 Find duplicate files Draft
10 Generate random chess position Draft
10 HTTPS/Client-authenticated Task
10 Markov chain text generator Draft
10 Mersenne primes Draft
10 Monads/List monad Draft
10 Nonogram solver Task
10 P-value correction Draft
10 Primes - allocate descendants to their ancestors Task
10 Readline interface Draft
10 Topological sort/Extracted top item Draft
10 Zeckendorf arithmetic Task
9 Abbreviations, automatic Draft
9 Base58Check encoding Draft
9 Bitmap/PPM conversion through a pipe Task
9 Code segment unload Draft
9 Color wheel Draft
9 Continued fraction/Arithmetic/G(matrix NG, Contined Fraction N) Draft
9 Eertree Task
9 File size distribution Draft
9 Four is magic Draft
9 Free polyominoes enumeration Draft
9 Snake Draft
9 Suffix tree Draft
9 Transportation problem Draft
9 VList Draft
9 Word search Task
9 XML Validation Draft
8 Compiler/AST interpreter Task
8 Compiler/syntax analyzer Task
8 Hunt The Wumpus Task
8 Kosaraju Draft
8 Largest number divisible by its digits Draft
8 Loops/Increment loop index within loop body Draft
8 Montgomery reduction Draft
8 Perceptron Draft
8 Self-hosting compiler Draft
7 Abbreviations, easy Draft
7 Canny edge detector Task
7 Deconvolution/2D+ Task
7 Finite state machine Draft
7 Generalised floating point addition Draft
7 IPC via named pipe Draft
7 Mastermind Draft
7 Monads/Writer monad Draft
7 Orbital elements Draft
7 Particle Swarm Optimization Draft
7 Run as a daemon or service Draft
7 Singly-linked list/Element removal Draft
7 The Name Game Task
7 Time-based One-time Password Algorithm Draft
7 User defined pipe and redirection operators Draft
6 Addition chains Draft
6 Banker's algorithm Draft
6 Catmull–Clark subdivision surface Task
6 French Republican calendar Draft
6 Just in time processing on a character stream Draft
6 Morpion solitaire Draft
6 Parse EBNF Draft
5 ASCII art diagram converter Draft
5 Abbreviations, simple Draft
5 Audio frequency generator Draft
5 Combinations with repetitions/Square Digit Chain Draft
5 Imaginary base numbers Draft
5 OpenGL Pixel Shader Draft
5 Pinstripe/Printer Task
5 Sorting algorithms/Tree sort on a linked list Draft
5 Spelling of ordinal numbers Draft
5 Starting a web browser Draft
4 15 puzzle solver Task
4 Addition-chain exponentiation Draft
4 Colour pinstripe/Printer Task
4 Continued fraction/Arithmetic/G(matrix NG, Contined Fraction N1, Contined Fraction N2) Draft
4 Data Encryption Standard Draft
4 Fibonacci heap Draft
4 Four is the number of letters in the ... Draft
4 Functional coverage tree Draft
4 Gauss-Jordan matrix inversion Draft
4 Geometric algebra Draft
4 Greed Draft
4 One-time pad Draft
4 Pentomino tiling Draft
4 Railway circuit Draft
4 Remote agent/Agent interface Draft
4 Remote agent/Agent logic Draft
4 Remote agent/Simulation Draft
4 Rosetta Code/Run examples Draft
4 Snake And Ladder Draft
4 Tarjan Draft
4 Tetris Draft
4 Using a Speech engine to highlight words Draft
4 Using the Meetup.com API Draft
3 Boids Draft
3 Hexapawn Draft
3 OpenGL/Utah Teapot Draft
3 Robots Draft
3 Rosetta Code/Rank languages by number of users Draft
3 Rosetta Code/Tasks without examples Draft
3 Simulated annealing Draft
3 Text to HTML Draft
2 Audio Overlap Loop Draft
2 Chess player Draft
2 External sort Draft
2 OLE Automation Task
2 OpenWebNet Password Draft
2 Penrose tiling Draft
2 Recursive descent parser generator Draft
2 Solve a Rubik's Cube Draft
2 Tamagotchi emulator Draft
1 Black Box Draft
1 Generalised floating point multiplication Draft
1 IRC gateway Draft
1 Multidimensional Newton-Raphson metod Draft
1 Process SMIL directives in XML data Draft
1 Rosetta Code/List authors of task descriptions Draft
1 Solving coin problems Draft
1 Terminal control/Restricted width positional input/No wrapping Draft
1 Terminal control/Restricted width positional input/With wrapping Draft
0 Blackjack strategy Draft
0 Chess player/Move generation Draft
0 Chess player/Program options and user interface Draft
0 Chess player/Search and evaluation Draft
0 Rosetta Code/Tasks sorted by average lines of code Draft
0 Ukkonen’s Suffix Tree Construction Draft
0 Unicode polynomial equation Draft
0 Waveform analysis/Doh ray me Draft
0 Waveform analysis/Top and tail Draft
0 Weather Routing Draft

PicoLisp

<lang PicoLisp>(load "@lib/http.l")

(client "rosettacode.org" 80

  "mw/api.php?action=query&list=categorymembers&cmtitle=Category:Programming_Tasks&cmlimit=500&format=xml"
  (while (from " title=\"")
     (let Task (till "\"")
        (client "rosettacode.org" 80 (pack "wiki/" (replace Task " " "_"))
           (let Cnt 0
              (while (from "")
                 (unless (sub? "." (till "<" T))
                    (inc 'Cnt) ) )
              (out NIL (prinl (ht:Pack Task) ": " Cnt)) ) ) ) ) )</lang>

Output (05may10):

100 doors: 79
24 game: 21
24 game/Solve: 15
99 Bottles of Beer: 95
A+B: 37
Abstract type: 29
...


PureBasic

<lang PureBasic>Procedure handleError(value, msg.s)

 If value = 0
   MessageRequester("Error", msg)
   End
 EndIf

EndProcedure

handleError(InitNetwork(), "Unable to initialize network functions.") If OpenConsole()

 Define url$, x1$, y1$, title$, unescapedTitle$, encodedURL$
 Define x2, i, j, totalExamples, totalTasks
 url$ = "http://www.rosettacode.org/mw/api.php?action=query" + 
        "&list=categorymembers&cmtitle=Category:Programming_Tasks" + 
        "&cmlimit=500&format=xml"
 
 Repeat
   handleError(ReceiveHTTPFile(url$, "tasks.xml"), "Unable to access tasks URL.")
   
   handleError(ReadFile(0, "tasks.xml"), "Unable to read 'task.xml' file.")
   x1$ =  ReadString(0)
   CloseFile(0)
   
   Repeat
     x2 = FindString(x1$, "title=", x2 + 1)
     If x2 
       title$ = Mid(x1$, x2 + 7, 99) 
       title$ = Left(title$, FindString(title$, ">", 1) - 4)
       unescapedTitle$ = UnescapeString(ReplaceString(title$, "'", "'"), #PB_String_EscapeXML)
       encodedURL$ = URLEncoder("http://www.rosettacode.org/mw/index.php?title=" + unescapedTitle$ + "&action=raw")
       If ReceiveHTTPFile(encodedURL$, "task.xml")
         ReadFile(0, "task.xml") 
         While Not Eof(0)
           y1$ =  ReadString(0)
           If FindString(y1$, "=={{header|", 1, #PB_String_NoCase)
             totalExamples + 1
           EndIf
         Wend
         CloseFile(0) 
         
         PrintN(unescapedTitle$ +": " + Str(totalExamples) + " examples")
         
         totalTasks + totalExamples
         totalExamples = 0
       EndIf
     EndIf  
   Until x2 = 0
   
   ;check for additional pages of tasks
   x2 = FindString(x1$, "cmcontinue=")
   If x2
     i = FindString(x1$, #DQUOTE$, x2 + 1)
     j = FindString(x1$, #DQUOTE$, i + 1)
     url$ = URLEncoder("http://www.rosettacode.org/mw/api.php?action=query" + 
                       "&list=categorymembers&cmtitle=Category:Programming_Tasks" + 
                       "&cmlimit=500&format=xml&cmcontinue=" + Mid(x1$, i + 1, j - i))
   Else
     Break ;all done
   EndIf
 ForEver
 
 PrintN("Total: " + Str(totalTasks) + " examples")
 Input()
 CloseConsole()

EndIf</lang> Sample output:

100 doors: 224 examples
24 game: 78 examples
24 game/Solve: 46 examples
9 billion names of God the integer: 33 examples
99 Bottles of Beer: 253 examples
A+B: 187 examples
......
Zeckendorf arithmetic: 6 examples
Zeckendorf number representation: 37 examples
Zero to the zero power: 71 examples
Zhang-Suen thinning algorithm: 18 examples
Zig-zag matrix: 83 examples
Total: 44140 examples

Python

<lang python>import urllib, xml.dom.minidom

x = urllib.urlopen("http://www.rosettacode.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:Programming_Tasks&cmlimit=500&format=xml")

tasks = [] for i in xml.dom.minidom.parseString(x.read()).getElementsByTagName("cm"):

   t = i.getAttribute('title').replace(" ", "_")
   y = urllib.urlopen("http://www.rosettacode.org/w/index.php?title=%s&action=raw" % t.encode('utf-8'))
   tasks.append( y.read().lower().count("{{header|") )
   print t.replace("_", " ") + ": %d examples." % tasks[-1]

print "\nTotal: %d examples." % sum(tasks)</lang>

R

Library: XML (R)
Library: RCurl

<lang R> library(XML) library(RCurl) doc <- xmlInternalTreeParse("http://www.rosettacode.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:Programming_Tasks&cmlimit=500&format=xml") nodes <- getNodeSet(doc,"//cm") titles = as.character( sapply(nodes, xmlGetAttr, "title") ) headers <- list() counts <- list() for (i in 1:length(titles)){ headersi <- getURL( paste("http://rosettacode.org/mw/index.php?title=", gsub(" ", "_", titles[i]), "&action=raw", sep="") ) countsi <- strsplit(headersi,split=" ")1 countsi <- grep("\\{\\{header", countsi) cat(titles[i], ":", length(countsi), "examples\n") } cat("Total: ", length(unlist(counts)), "examples\n") </lang>

Racket

<lang racket>

  1. lang racket

(require net/url net/uri-codec json (only-in racket/dict [dict-ref ref]))

(define (RC-get verb params)

 ((compose1 get-pure-port string->url format)
  "http://rosettacode.org/mw/~a.php?~a" verb (alist->form-urlencoded params)))

(define (get-category catname)

 (let loop ([c #f])
   (define t
     ((compose1 read-json RC-get) 'api
      `([action . "query"] [format . "json"]
        [list . "categorymembers"] [cmtitle . ,(format "Category:~a" catname)]
        [cmcontinue . ,(and c (ref c 'cmcontinue))] [cmlimit . "500"])))
   (define (c-m key) (ref (ref t key '()) 'categorymembers #f))
   (append (for/list ([page (c-m 'query)]) (ref page 'title))
           (cond [(c-m 'query-continue) => loop] [else '()]))))

(printf "Total: ~a\n"

 (for/sum ([task (get-category 'Programming_Tasks)])
   (define s ((compose1 length regexp-match-positions*)
              #rx"=={{" (RC-get 'index `([action . "raw"] [title . ,task]))))
   (printf "~a: ~a\n" task s)
   s))

</lang>

Ruby

Library: REXML

First, a RosettaCode module, saved as rosettacode.rb: <lang ruby>require 'open-uri' require 'rexml/document'

module RosettaCode

 URL_ROOT = "http://rosettacode.org/mw"
 def self.get_url(page, query)
   begin
     # Ruby 1.9.2
     pstr = URI.encode_www_form_component(page)
     qstr = URI.encode_www_form(query)
   rescue NoMethodError
     require 'cgi'
     pstr = CGI.escape(page)
     qstr = query.map {|k,v|
       "%s=%s" % [CGI.escape(k.to_s), CGI.escape(v.to_s)]}.join("&")
   end
   url = "#{URL_ROOT}/#{pstr}?#{qstr}"
   p url if $DEBUG
   url
 end
 def self.get_api_url(query)
   get_url "api.php", query
 end
 def self.category_members(category)
   query = {
     "action" => "query",
     "list" => "categorymembers",
     "cmtitle" => "Category:#{category}",
     "format" => "xml",
     "cmlimit" => 500,
   }
   while true
     url = get_api_url query
     doc = REXML::Document.new open(url)
     REXML::XPath.each(doc, "//cm") do |task|
       yield task.attribute("title").value
     end
     continue = REXML::XPath.first(doc, "//query-continue")
     break if continue.nil?
     cm = REXML::XPath.first(continue, "categorymembers")
     query["cmcontinue"] = cm.attribute("cmcontinue").value
   end
 end

end</lang>

Then, we implement the task with: <lang ruby>require 'rosettacode'

total_examples = 0

RosettaCode.category_members("Programming_Tasks") do |task|

 url = RosettaCode.get_url("index.php", {"action" => "raw", "title" => task})
 examples = open(url).read.scan("=={{header").length
 puts "#{task}: #{examples}"
 total_examples += examples

end

puts puts "Total: #{total_examples}"</lang>

Rust

<lang rust>extern crate reqwest; extern crate url; extern crate rustc_serialize;

use std::io::Read; use self::url::Url; use rustc_serialize::json::{self, Json};

pub struct Task {

   page_id: u64,
   pub title: String,

}

  1. [derive(Debug)]

enum ParseError {

   /// Something went wrong with the HTTP request to the API.
   Http(reqwest::Error),
   /// There was a problem parsing the API response into JSON.
   Json(json::ParserError),
   /// Unexpected JSON format from response
   UnexpectedFormat,

} impl From<json::ParserError> for ParseError {

   fn from(error: json::ParserError) -> Self {
       ParseError::Json(error)
   }

}

impl From<reqwest::Error> for ParseError {

   fn from(error: reqwest::Error) -> Self {
       ParseError::Http(error)
   }

}


fn construct_query_category(category: &str) -> Url {

   let mut base_url = Url::parse("http://rosettacode.org/mw/api.php").unwrap();
   let cat = format!("Category:{}", category);
   let query_pairs = vec![("action", "query"),
                          ("format", "json"),
                          ("list", "categorymembers"),
                          ("cmlimit", "500"),
                          ("cmtitle", &cat),
                          ("continue", "")];
   base_url.query_pairs_mut().extend_pairs(query_pairs.into_iter());
   base_url

}

fn construct_query_task_content(task_id: &str) -> Url {

   let mut base_url = Url::parse("http://rosettacode.org/mw/api.php").unwrap();
   let mut query_pairs =
       vec![("action", "query"), ("format", "json"), ("prop", "revisions"), ("rvprop", "content")];
   query_pairs.push(("pageids", task_id));
   base_url.query_pairs_mut().extend_pairs(query_pairs.into_iter());
   base_url

}

fn query_api(url: Url) -> Result<Json, ParseError> {

   let mut response = try!(reqwest::get(url.as_str()));
   // Build JSON
   let mut body = String::new();
   response.read_to_string(&mut body).unwrap();
   Ok(try!(Json::from_str(&body)))

}

fn parse_all_tasks(reply: &Json) -> Result<Vec<Task>, ParseError> {

   let json_to_task = |json: &Json| -> Result<Task, ParseError> {
       let page_id: u64 = try!(json.find("pageid")
           .and_then(|id| id.as_u64())
           .ok_or(ParseError::UnexpectedFormat));
       let title: &str = try!(json.find("title")
           .and_then(|title| title.as_string())
           .ok_or(ParseError::UnexpectedFormat));
       Ok(Task {
           page_id: page_id,
           title: title.to_owned(),
       })
   };
   let tasks_json = try!(reply.find_path(&["query", "categorymembers"])
       .and_then(|tasks| tasks.as_array())
       .ok_or(ParseError::UnexpectedFormat));
   // Convert into own type
   tasks_json.iter().map(json_to_task).collect()

} fn count_number_examples(task: &Json, task_id: u64) -> Result<u32, ParseError> {

   let revisions =
       try!(task.find_path(&["query", "pages", task_id.to_string().as_str(), "revisions"])
           .and_then(|content| content.as_array())
           .ok_or(ParseError::UnexpectedFormat));
   let content = try!(revisions[0]
       .find("*")
       .and_then(|content| content.as_string())
       .ok_or(ParseError::UnexpectedFormat));
   Ok(content.split("=={{header").count() as u32)

}

pub fn query_all_tasks() -> Vec<Task> {

   let query = construct_query_category("Programming_Tasks");
   let json: Json = query_api(query).unwrap();
   parse_all_tasks(&json).unwrap()

}

pub fn query_a_task(task: &Task) -> u32 {

   let query = construct_query_task_content(&task.page_id.to_string());
   let json: Json = query_api(query).unwrap();
   count_number_examples(&json, task.page_id).unwrap()

}</lang>

The function is then run using the following: <lang rust> extern crate count_examples; fn main() {

   let all_tasks = count_examples::query_all_tasks();
   for task in &all_tasks {
       let count = count_examples::query_a_task(task);
       println!("Task: {} has {} examples", task.title, count);
   }

}</lang>

Run BASIC

<lang runbasic>html "

"

a$ = httpGet$("http://rosettacode.org/wiki/Category:Programming_Tasks")

a$ = word$(a$,1,"
NumTaskExamples

")

i = instr(a$,"<a href=""/wiki/") i = instr(a$,"<a href=""/wiki/",i+1) while i > 0

 count	= count + 1
 i	= instr(a$,"<a href=""/wiki/",i+1)
 j	= instr(a$,">",i+5)
 a1$	= mid$(a$,i+15,j-i)
 taskId$ = word$(a1$,1,"""")
 task$   = word$(a1$,3,"""")
 url$	= "http://rosettacode.org/wiki/";taskId$
 a2$	= httpGet$(url$)
 ii	= instr(a2$,"")
 jj	= 0
 while ii > 0
   jj	= ii
   ii	= instr(a2$,"",ii+10)
 wend
 if jj = 0 then 
   examp = 0
  else
   kk	= instr(a2$,"<",jj+24)
   examp = int(val(mid$(a2$,jj+24,kk-jj-24)))
 end if

html "";count;"";task$;"";examp;""

 totExamp = totExamp + examp

wend

html "**** Total **";totExamp;""

end</lang>

NumTaskExamples
1100 doors165
224 game56
324 game/Solve34
499 Bottles of Beer192
5A+B129
6Abstract type51
7Accumulator factory65
8Ackermann function132
9Active Directory/Connect13
10Active Directory/Search for a user13
11Active object22
12Add a variable to a class instance at runtime37
.........
655Y combinator53
656Yahoo! search interface16
657Yin and yang38
658Zebra puzzle12
659Zeckendorf number representation18
660Zig-zag matrix65
**** Total **28611

Scala

Library: Scala

<lang Scala>import scala.language.postfixOps

object TaskCount extends App {

 import java.net.{ URL, URLEncoder }
 import scala.io.Source.fromURL
 System.setProperty("http.agent", "*")
 val allTasksURL =
   "http://www.rosettacode.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:Programming_Tasks&cmlimit=500&format=xml"
 val allTasks = xml.parsing.XhtmlParser(fromURL(new URL(allTasksURL)))
 val regexExpr = "(?i)==\\{\\{header\\|".r
 def oneTaskURL(title: String) = {
   println(s"Check $title")
   "http://www.rosettacode.org/w/index.php?title=%s&action=raw" format URLEncoder.encode(title.replace(' ', '_'), "UTF-8")
 }
 def count(title: String) = regexExpr findAllIn fromURL(new URL(oneTaskURL(title)))(io.Codec.UTF8).mkString length
 val counts = for (task <- allTasks \\ "cm" \\ "@title" map (_.text)) yield scala.actors.Futures.future((task, count(task)))
 counts map (_.apply) map Function.tupled("%s: %d examples." format (_, _)) foreach println
 println("\nTotal: %d examples." format (counts map (_.apply._2) sum))

}</lang>

Sidef

Translation of: Perl

<lang ruby>var lwp = require('LWP::UserAgent').new(agent => 'Mozilla/5.0');

var site = 'http://rosettacode.org'; var list_url = '/mw/api.php?action=query&list=categorymembers&'+

              'cmtitle=Category:Programming_Tasks&cmlimit=500&format=xml';

var content = lwp.get(site + list_url).decoded_content;

while (var m = content.match(/cm.*?title="(.*?)"/g)) {

   (var slug = m[0]).gsub!(' ', '_');
   var count = lwp.get("#{site}/wiki/#{slug}").decoded_content.count(/toclevel-1/g);
   say "#{m[0]}: #{count} examples";

}</lang>

Output:
100 doors: 2180 examples
24 game: 760 examples
24 game/Solve: 450 examples
9 billion names of God the integer: 320 examples
99 Bottles of Beer: 2330 examples
A+B: 1800 examples
ABC Problem: 720 examples
Abstract type: 680 examples
...

Tcl

Library: Tcllib (Package: json)

<lang tcl>package require Tcl 8.5 package require http package require json

fconfigure stdout -buffering none

proc get_tasks {category} {

   set start [clock milliseconds]
   puts -nonewline "getting $category members..."
   set base_url http://www.rosettacode.org/w/api.php
   set query {action query list categorymembers cmtitle Category:%s format json cmlimit 500}
   set this_query [dict create {*}[split [format $query $category]]]
   set tasks [list]
   while {1} {
       set url [join [list $base_url [http::formatQuery {*}$this_query]] ?]
       set response [http::geturl $url]
       if {[set s [http::status $response]] ne "ok" || [http::ncode $response] != 200} {
           error "Oops: url=$url\nstatus=$s\nhttp code=[http::code $response]"
       }
       set data [json::json2dict [http::data $response]]
       http::cleanup $response
       
       # add tasks to list
       foreach task [dict get $data query categorymembers] {
           lappend tasks [dict get [dict create {*}$task] title]
       }
       
       if {[catch {dict get $data query-continue categorymembers cmcontinue} continue_task] != 0} {
           # no more continuations, we're done
           break
       }
       dict set this_query cmcontinue $continue_task
   }
   puts " found [llength $tasks] tasks in [expr {[clock milliseconds] - $start}] milliseconds"
   return $tasks

}

  1. This proc can be replaced by a single regexp command:
  2. set count [regexp -all "***=$needle" $haystack]
  3. However this proc is more efficient -- we're dealing with plain strings only.

proc count_substrings {needle haystack} {

   set count 0
   set idx 0
   while {[set idx [string first $needle $haystack $idx]] != -1} {
       incr count
       incr idx
   }
   return $count

}

set total 0 foreach task [get_tasks Programming_Tasks] {

   set url [format "http://www.rosettacode.org/w/index.php?title=%s&action=raw" [string map {{ } _} $task]]
   set response [http::geturl $url]
   if {[set s [http::status $response]] ne "ok" || [http::ncode $response] != 200} {
       error "Oops: url=$url\nstatus=$s\nhttp code=[http::code $response]"
   }
   set count [count_substrings "\{\{header|" [http::data $response]]
   puts [format "%3d examples in %s" $count $task]
   http::cleanup $response
   incr total $count

}

puts "\nTotal: $total examples"</lang>

TUSCRIPT

<lang tuscript>$$ MODE TUSCRIPT url="http://www.rosettacode.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:Programming_Tasks&cmlimit=500&format=xml" data=REQUEST (url)

BUILD S_TABLE beg=* DATA :title=": BUILD S_TABLE end=* DATA :":

titles=EXTRACT (data,beg|,end,1,0,"~~") titles=SPLIT (titles,":~~:") sz_titles=SIZE (titles)

BUILD R_TABLE header=":==\{\{header|:" all=*

ERROR/STOP CREATE ("tasks",seq-e,-std-)

COMPILE LOOP title=titles ask=* ask =SET_VALUE(ask,"title",title) ask =SET_VALUE(ask,"action","raw") ask =ENCODE (ask,cgi) http ="http://www.rosettacode.org/mw/index.php" url =CONCAT (http,"?",ask) data =REQUEST (url) header =FILTER_INDEX (data,header,-) sz_header=SIZE(header) line =CONCAT (title,"=",sz_header," members") FILE "tasks" = line all =APPEND(all,sz_header) ENDLOOP

ENDCOMPILE all =JOIN(all),sum=SUM(all),time=time() line=CONCAT (time,": ", sz_titles, " Programing Tasks: ", sum, " solutions")

FILE "tasks" = line </lang> Output in file "tasks":

100 doors=104 members
24 game=27 members
24 game/Solve=21 members
99 Bottles of Beer=124 members
A+B=76 members
Abstract type=35 members
Accumulator factory=44 members
...
XML/Input=39 members
XML/Output=32 members
XML/XPath=24 members
Xiaolin Wu's line algorithm=0 members
Y combinator=33 members
Yahoo! search interface=10 members
Zig-zag matrix=46 members
2011-01-15 03:41:30: 455 Programing Tasks: 16009 solutions 

zkl

Uses shared libraries YAJL and cURL and handles "continue" responses. <lang zkl>var [const] YAJL=Import("zklYAJL")[0], CURL=Import("zklCurl");

fcn getTasks(language){

  continueValue,tasks:="",Data(0,String);  // "nm\0nm\0...."
  do{
     page:=CURL().get(("http://rosettacode.org/mw/api.php?"
        "action=query&cmlimit=500"

"&format=json" "&list=categorymembers" "&cmtitle=Category:%s" "&cmcontinue=%s").fmt(language,continueValue));

     page=page[0].del(0,page[1]);  // get rid of HTML header
     json:=YAJL().write(page).close();
     json["query"]["categorymembers"].pump(tasks,T("get","title"));
     continueValue=json.find("continue") //continue:-||,cmcontinue:page|954|19)
         .toList().apply("concat","=").concat("&");
  }while(continueValue);
  tasks

} re:=RegExp(0'!\s+==\s*{{\s*header\s*|!); // == {{ header | zkl foreach task in (getTasks("Programming_Tasks")){

  page:=CURL().get(
     "http://www.rosettacode.org/mw/index.php?title=%s&action=raw"
     .fmt(CURL.urlEncode(task)));
  page=page[0].del(0,page[1]);  // get rid of HTML header
  cnt,n:=0,0;  while(re.search(page,True,n)){ cnt+=1; n=re.matched[0].sum(0); }
  "%4d: %s".fmt(cnt,task).println();

}</lang>

Output:
 229: 100 doors
  15: 15 Puzzle Game
...
 257: 99 Bottles of Beer
 199: A+B
...
  28: Calendar - for "REAL" programmers
...
   9: Stream Merge
...
  78: Zero to the zero power
  19: Zhang-Suen thinning algorithm
  83: Zig-zag matrix