Last active
October 25, 2016 16:42
-
-
Save kana-sama/e2f7fffa5595978be14cc6c756941f97 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
#!/usr/bin/env boot | |
(require '[clojure.java.io :refer [reader]]) | |
(def filename "file.txt") | |
(with-open [rdr (reader filename)] | |
; line - первая строка, lines - остальные | |
(loop [[line & lines] (line-seq rdr) | |
radicals [] | |
kanjis {}] | |
; cmd - первый символ, rad - третий (он нам нужен только при cmd = $) | |
(if-let [[cmd _ rad] line] | |
; если cmd и rad != nil, то | |
(case cmd | |
; если cmd = #, то ничего не делать | |
\# (recur lines radicals kanjis) | |
; если cmd = $, то добавим в конец списка радикалов новый | |
\$ (recur lines (conj radicals rad) kanjis) | |
; если не # и не $, то не меняем список радикалов, но добавляем (или дополняем) | |
; значение ключей в kanjis, пробегаясь по всем символам строки | |
(recur lines radicals | |
; (count radicals) - id последней радикалы, так как она всегда | |
; в конце списка, а id в базах начинаются с единицы | |
; %1 - список kanji | |
; %2 - наш текущий кандзи | |
; тут мы пробегаемся по всем символам и добавляем в коллекцию | |
; в хэшмапе по ключу %2 id последней радикали | |
(reduce #(update %1 %2 conj (count radicals)) | |
kanjis line))) | |
; если текущая строка = nil, то вывести радикалы и кандзи | |
(do | |
(println radicals) | |
(println kanjis))))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment