Fork me on GitHub
#clojure-russia
<
2016-10-06
>
maxim06:10:22

Парни, подскажите красивое решение:

Из
[[6 "1:00 PM”] [6 "2:00 PM"] [6 "3:00 PM"] [6 "4:00 PM"] [6 "5:00 PM”]
 [7 “0”] [7 “1”] [7 “2”] [7 “0”] [7 “1”]]

Получить
[["1:00 PM” "2:00 PM” "3:00 PM” "4:00 PM” "5:00 PM”]
 [“0” “1” “2” “0” “1”]

maxim06:10:17

То есть поделить на группы по первому элементу

niquola06:10:45

Или тебе поизвращенней?

niquola06:10:12

loop/recur // reduce

maxim06:10:29

Я пробовал group-by и partition-by, потом еще раз нужно пробежать, чтобы избавиться от первых элементов

maxim06:10:01

reduce довольно “громоздкий” получается

maxim06:10:33

В принципе еще раз пробежать по коллекции не проблема, просто думал может что-то “готовое” есть

maxim06:10:49

Хочется O(n) вместо O(n^2)

niquola06:10:51

Попробуй loop/recur

kuzmin_m07:10:27

если через функциональный стиль не подходит, то можно попробовать императивно https://clojuredocs.org/clojure.core/with-local-vars

artemyarulin07:10:28

может еще for попробовать вместе с :let

maxim07:10:40

(defn- select-columns
  "Returns rows of a sheet containing significant (not empty) specified columns."
  [column-indexes sheet]
  (->> (for [row   (s/row-seq sheet)
             cell  (s/cell-seq row)
             :let  [row-index    (row-index cell)
                    column-index (column-index cell)
                    cell-value   (cell-value cell)]
             :when (and (column-indexes column-index) (not-empty cell-value))]
         [row-index cell-value])
       (partition-by first)
       (map #(map last %))))

maxim07:10:40

Как-то так это выглядит. Достался “корявый" excel файл от заказчика.

kuzmin_m07:10:05

А кто как делает acl? Может вот этот пользователь создать вот эту сущность?

kuzmin_m07:10:51

Интересует, как это сделано на уровне домена/моделей и на уровне обработки http запросов

potapenko09:10:03

@andre Зацени видео. Я под впечатлением. Похоже я уже почти умею Unity https://youtu.be/tJr_TD1BtF0

andre10:10:48

Surface V - Clojure Unity game

andre10:10:29

Живой проект такой вообще

misha10:10:15

@mkaschenko

(reduce
  (fn [r [k v]]
    (update r k #(conj (or % []) v)))
  {}
  [[6 :a][6 :b] [7 :c][7 :d]])

=> {6 [:a :b], 7 [:c :d]}

misha10:10:33

можно с вектором так же, только там будут вываливаться Index 6 out of bounds [0,0], если провалы в номерах строк будут

misha10:10:14

(reduce
  (fn [r [k v]]
    (update r k #(conj (or % []) v)))
  []
  [[0 :a][0 :b][1 :c] [1 :d]])

=> [[:a :b] [:c :d]]

maxim10:10:27

@misha Спасибо!

potapenko13:10:11

@andre Аркадия да, это те же ребята. Нужно Вальярда спросить чего он по этому поводу думает. По мне офигеннная штука. Думаю можно значительно расширить свой дев-ареал обитания 🙂 Кроме игр - недвижимость, демки каких устройств, медицина какая. Работает ведь везде и на мобилке и на десктопах.

potapenko13:10:27

@artemyarulin Ты Аркадию не щупал? Ты ж Юнити работал...

andmed14:10:32

процессинг отчетов для крупного финансового учреждения оказывается, делают на clojure явшоке

andmed14:10:44

эм.. крупнейшего, в своей области)) норм такой продакшн

andmed15:10:46

никакого лейн ран. компилится в зипник башем, запускается у клиента батником. все серьезно))

andrewboltachev15:10:03

@andmed ну, а на ещё более крупных наверное исключительно Visual Basic? 🙂

andmed16:10:06

Vbs ага. Винда распространена в россии в казенных учреждениях. Факт

artemyarulin18:10:16

@potapenko неа, но там же вроде Clojure.CLR под капотом на скок я помню? А оно вроде не очень живое

potapenko19:10:20

ну статус альфа тоже не сильно внушает, нужно пощупать по случаю

potapenko19:10:53

clojure-clr - судя по коммитам вполне живет

artemyarulin19:10:23

оу правда живое? круто же, интересно кто юзает его в проде

a.espolov23:10:58

кто то плотно использует mount?