Last active
August 29, 2015 14:06
-
-
Save ponzao/cc94a6236c5c854f0a26 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{:starters | |
(["Marcus" 17] | |
["Baba" 16] | |
["Sami" 14] | |
["Tuomas" 14] | |
["Kabu" 14] | |
["Jesse" 11] | |
["Lydä" 9] | |
["Jonde" 9] | |
["Jebu" 9] | |
["Matias" 9] | |
["Eetu" 8] | |
["Pete" 8] | |
["Ripa" 8] | |
["Miku" 8] | |
["Sintti" 8] | |
["Nuppis" 7] | |
["Micke" 6] | |
["Kunnas" 6] | |
["Mige" 3] | |
["Jussi" 3] | |
["Milton" 3] | |
["Tero" 3] | |
["Faba" 3] | |
["Michael" 2] | |
["Gusse" 2] | |
["Krisu" 2] | |
["Kimmo" 2] | |
["JW" 2] | |
["Nemo" 1] | |
["Maukka" 1] | |
["Wille" 1]), | |
:bench | |
(["Max" 15] | |
["Milton" 11] | |
["Sintti" 7] | |
["Jesse" 7] | |
["Pete" 5] | |
["Michael" 5] | |
["Jussi" 5] | |
["Micke" 5] | |
["Jonde" 5] | |
["Jebu" 5] | |
["Kunnas" 5] | |
["Eetu" 4] | |
["Maukka" 4] | |
["Eki" 4] | |
["Tero" 4] | |
["Sami" 3] | |
["Lydä" 2] | |
["Nemo" 2] | |
["Nuppis" 2] | |
["Pasi" 2] | |
["Matias" 2] | |
["Tuomas" 2] | |
["Wille" 2] | |
["Baba" 1] | |
["Mige" 1] | |
["Krisu" 1] | |
["Ripa" 1] | |
["Faba" 1] | |
["Kimmo" 1] | |
["Kabu" 1]), | |
:mom | |
(["Baba" 3] | |
["Pete" 2] | |
["Lydä" 2] | |
["Tuomas" 2] | |
["Micke" 1] | |
["Milton" 1] | |
["Sami" 1] | |
["Marcus" 1] | |
["Jebu" 1] | |
["Kunnas" 1] | |
["Kimmo" 1] | |
["Matias" 1] | |
["Miku" 1] | |
["Jesse" 1])} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns ppj-stats | |
(:import [java.io BufferedReader StringReader]) | |
(:require [clojure.string :refer (join)] | |
[clojure.pprint :refer (pprint)])) | |
(def data-string | |
"22.4. HJK/Kantsu - PPJ 1 - 3 (1 - 1) | |
A Pete, Tuomas - Marcus - Kabu - Babar, Ripatti - Jebu, Jesse, Faba - Gusse - Kunnas | |
P Milton, Tero, Jonde, Sintti, Max, Maukka | |
M Faba 27' 1-1 (rp), Milton 63' 1- 2, Sintti 89' 1-3 (Jonde) | |
O Marcus | |
28.4. PPJ - FC ALPC 3 - 0 (2 - 0) | |
A Eetu, Mige - Marcus - Kabu - Tuomas, Sami - Micke, Jebu, Faba - Babar - Sintti | |
P Milton, Kunnas, Jonde, Jesse, Max, Maukka | |
M Babar 15' (Sintti), Jebu 33' (Sintti), Kunnas 82' (Babar) | |
O Babar | |
7.5. LPS/Kuninkaat - PPJ 1 - 3 (1-2) | |
A Eetu, Jonde - Marcus - Kabu - Tuomas, Sami - Micke, Milton, Faba - Babar - Sintti | |
P Matias, Jebu, Kunnas, Jebu, Jessu, Max, Maukka | |
M Faba 19' 0-1 (Babar), Milton 34' 0-2 (Sintti), Jesse 79' 1-3 (Matias) | |
O Tuomas | |
12.5. PPJ - PPV 2 -1 (1-0) | |
A Pete, Mige - Kabu - Matias - Jonde, Ripatti - Jebu, Jesse, Sintti - Babar - Lydä | |
P Faba, Sami, Micke, Wille, Eetu | |
M Sintti 4' 1-0, Jebu 81' 2-0 | |
O Pete | |
21.5. HIFK/3 - PPJ 0 - 2 (0-2) | |
A Eetu, Matias - Marcus - Kabu - Tuomas, Ripatti - Jebu, Jesse, Lydä - Kunnas - Babar | |
P Sintti, Micke, Max, Jonde, Maukka | |
M Kunnas 14' (Babar), Jebu 29' (Marcus) | |
O Jebu | |
26.5. SaPa/3 - PPJ 2 - 2 (2-1) | |
K Maukka, Jonde - Marcus - Matias - Tuomas, Micke - Sami, Jesse, Baba - Wille - Kunnas | |
P Sintti, Milton, Max, Michael | |
M Jesse 44' 2-1 (Micke), Babar 85' 2-2 (Max) | |
O Jesse | |
2.6. PPJ - HPS/2 1 - 3 (0-1) | |
K Eetu, Jonde-Marcus-Kabu-Matias, Micke-Sami, Milton, Kunnas-Babar- Sintti | |
P Michael, Jesse, Kimmo, Jebu, Mige, Wille, Max | |
M Kunnas 73' 1-1 (Jesse) | |
O Kunnas | |
9.6. PPJ - Vesa 3 - 1 (1-1) | |
K Michael, Jonde-Marcus-Kabu-Matias, Ripatti-Sami, Jesper, Kunnas - Lydä - Miku | |
P Babar, Milton, Tuomas, Micke, Tero, Max, Pete | |
M Marcus 32' 1-0 (vp), Babar 46' 2-1 (Miku), Lydä 73' 3-1 (Miku) | |
O Lydä | |
16.6. Gnistan/2 - PPJ 2 - 1 (1-1) | |
K Eetu, Jonde - Marcus - Matias - Mige, Micke - Ripatti, Jesse, Lydä - Babar - Krisu | |
P Milton, Pasi, Sami, Max, Jussi, Pete | |
M Babar 45' 1-1 (Jesse) | |
O Babar | |
23.6. PPJ - Fc Degis 1 - 2 (1-1) | |
K Pete, Jonde - Jussi - Matias - Tuomas, Jesse - Sami, Jebu, Ripatti - Kimmo - Tero | |
P Milton, Lydä, Micke, Kunnas, Nuppis, Eetu, Kabu | |
M Ripatti 45' 1-1 (Jebu) | |
O Matias | |
30.6. Ponnistus - PPJ 0 - 2 (0-0) | |
K Eetu, Matias - Marcus - Kabu - Tuomas, Jebu - Jesse, Nuppis, Kimmo - Lydä - Miku | |
P Jussi, Jonde, Sami, Milton, Pasi, Tero | |
M Nuppis 7' (Jebu), Marcus 70' | |
O Kimmo | |
28.7. PPJ - HJK/Kantsu 2 - 0 (1-0) | |
K Eetu, Babar - Marcus - Jussi - Tuomas, Sami - Antti, JW, Sintti - Lydä - Miku | |
P Nemo, Jesse, Tero, Ripa, Eki, Max, Pete | |
M Lydä 10' (Tuomas), JW 52' (Tuomas) | |
O Tuomas | |
4.8. PPJ - SaPa/3 0 - 2 (0-2) | |
K Eetu, Baba - Marcus - Kabu - Tuomas, Ripa - Sami, Johannes, Lydä - Jesse - Miku | |
P Nuppis, Sintti, Milton, Jussi, Max, Eki, Pete | |
O Sami | |
11.8. PPJ - LPS/Kuninkaat 6 - 0 (1-0) | |
K Pete - Tuomas, Marcus, Kabu, Miku - Ripa, Sami - Nuppis - Lydä, Baba, Sintti | |
P Milton, Jesse, Jussi, Max, Eki; Eetu | |
M Sami 13' (Lydä), Baba 48', Kabu 51' (Marcus), Lydä 65' (Baba), Milton 68' (Baba), Jesse 74' (Marcus) | |
O Miku | |
18.8. PPV - PPJ 0 - 3 (0-2) | |
K Pete - Tuomas, Marcus, Kasper, Miku - Jesse, Sami - Nuppis - Lydä, Baba, Sintti | |
P Milton, Jebu, Nemo, Jussi, Michael | |
M Nuppis 4' (Baba), Lydä 32', Lydä 51' (Miku) | |
O Lydä | |
27.8. PPJ - HIFK/3 2 - 1 (1-1) | |
K Michael, Tuomas - Marcus - Kabu - Miku, Sami - Jesse, Nuppis, Nemo - Babar - Sintti | |
P Matias, Lydä, Milton, Jebu, Krisu, Max, Pete | |
M Babar 26' 1-1 (Tuomas), Babar 46' 2-1 (Sami) | |
O Babar | |
6.9. Fc Alp - PPJ 1 - 3 (1-0) | |
A Pete - Jonde Jussi Marcus Miku - Jebu Nuppis Sami - Milton Babs Tero | |
P Tuomas, Jesse, Sintti, Kunnas, Max, Michael | |
M Milton 46' 1-1, Babar 52' 1-2 (Jebu), Babar 56' 1-3 (Jussi) | |
O Milton | |
9.9. HPS/2 - PPJ 2 - 1 (2-0) | |
A Pete - Jonde, Marcus, Kabu, Tuomas - Sami, Jebu - Nuppis - Tero, Babs, Krisu | |
P Jesse, Micke, Max, Sintti, Kunnas, Eetu | |
M Kunnas 89' 2-1 | |
O Pete | |
16.9. Vesa - PPJ 2 - 2 (0-1) | |
A Pete - Tuomas, Marcus, Kabu, Matias - Micke, Sami - Jesse - Kunnas, Babs, Gusse | |
P Sintti, Eki, Max, Michael, Jonde | |
M Babar 25' 0-1 (Marcus), Babar 61' 0-2 (Sintti) | |
O Micke") | |
(defn partition-many | |
[pred coll] | |
(letfn [(partition-many' [coll] | |
(when-let [s (seq coll)] | |
(let [[x & xs] s] | |
(let [start (cons x (take-while (complement not pred) xs)) | |
end (drop-while (complement pred) xs)] | |
(cons start (lazy-seq (partition-many' end)))))))] | |
(partition-many' coll))) | |
(def data | |
(with-open [rdr (BufferedReader. (StringReader. data-string))] | |
(doall (line-seq rdr)))) | |
(def mapping | |
{\A :starters | |
\K :starters | |
\P :bench | |
\M :goals | |
\O :mom}) | |
(def name-fixes {"Johannes" "JW" | |
"Babs" "Baba" | |
"Babar" "Baba" | |
"Antti" "Nuppis" | |
"Ripatti" "Ripa" | |
"Kasper" "Kabu" | |
"Jesper" "Jebu" | |
"Jessu" "Jesse"}) | |
(defn fix-name | |
[s] | |
(or (name-fixes s) s)) | |
(defn parse-row | |
[row] | |
(let [[c & cs] row] | |
{(mapping c) (map fix-name (re-seq #"[äöüÄÖÜß\w]+" (join cs)))})) | |
(defn group-data | |
[data] | |
(->> data | |
(map #(.trim %) ,,,) | |
(partition-many #(.matches % "^\\d.+") ,,,) | |
(map (fn [[match & xs]] | |
(into {} (map parse-row xs))) ,,,) | |
)) | |
(defn sorted-frequency-data-for-key | |
[grouped-data k] | |
(->> grouped-data | |
(mapcat k) | |
frequencies | |
(sort-by second >))) | |
(let [grouped-data (group-data data) | |
starters (sorted-frequency-data-for-key grouped-data :starters) | |
bench (sorted-frequency-data-for-key grouped-data :bench) | |
mom (sorted-frequency-data-for-key grouped-data :mom)] | |
(pprint {:starters starters | |
:bench bench | |
:mom mom})) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment