Rosetta Code/Count examples: Difference between revisions
Content added Content deleted
m (moved Count programming examples to Rosetta Code/Count examples) |
|||
Line 96: | Line 96: | ||
} |
} |
||
}</lang> |
}</lang> |
||
=={{header|Clojure}}== |
|||
<lang clojure>(ns count-examples |
|||
(:use [clojure.contrib.http.agent :only (http-agent string)] |
|||
[clojure.contrib.json :only (read-json)] |
|||
[clojure.contrib.string :only (join)])) |
|||
(defn rosettacode-get [path params] |
|||
(let [param-string (join "&" |
|||
(map (fn [[n v]] |
|||
(str (if (keyword? n) (name n) n) |
|||
"=" |
|||
(java.net.URLEncoder/encode (str v) "utf-8"))) |
|||
params))] |
|||
(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 (if continue 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> |
|||
=={{header|D}}== |
=={{header|D}}== |