Skip to content

Instantly share code, notes, and snippets.

@ponzao
Last active August 29, 2015 14:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ponzao/cc94a6236c5c854f0a26 to your computer and use it in GitHub Desktop.
Save ponzao/cc94a6236c5c854f0a26 to your computer and use it in GitHub Desktop.
{: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])}
(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