Size: a a a

Emacs — русскоговорящее сообщество

2020 November 02

A

Aragaer in Emacs — русскоговорящее сообщество
ну как внутреннее устройство да, но хочется чтобы можно было это дерево руками легко редактировать и чтобы оно было наглядным
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
Aragaer
ну как внутреннее устройство да, но хочется чтобы можно было это дерево руками легко редактировать и чтобы оно было наглядным
ну так в edn сохраняй
источник

A

Aragaer in Emacs — русскоговорящее сообщество
как раз таки задание этого дерева это прям какой-то отдельный dsl. В питоне вон функция D она специально в одну букву, чтобы не отвлекала от содержимого
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
если хочешь менее многословно, то можно придумать просто хэшмапу, правда хз, что ключами сделать, ведь функция распределения не для каждого елемента, если я правильно понимаю?
источник

A

Aragaer in Emacs — русскоговорящее сообщество
для листьев функция распределения это посчитать с остатками и вывести рекомендацию. Для промежуточных узлов функция распределения это "распределить между потомками"
источник

A

Aragaer in Emacs — русскоговорящее сообщество
(def main-distribution
 {(D {(B "bank1" "VTBU") 1,
      (B "bank2" "VTBH") 2}) 1,
  (B "bank1" "EUR") 1})
источник

A

Aragaer in Emacs — русскоговорящее сообщество
вот с таким распределением получается
источник

A

Aragaer in Emacs — русскоговорящее сообщество
Total:  2574M
Recommending 1287M for (bank1 EUR)
Recommending 858M for (bank2 VTBH)
Recommending 429M for (bank1 VTBU)
источник

A

Aragaer in Emacs — русскоговорящее сообщество
то есть на верхнем уровне веса 1 и 1 - пополам. В одной ветке это все, в другой поделить 1 к 2
источник

A

Aragaer in Emacs — русскоговорящее сообщество
функции D и B это очень простые функции
источник

A

Aragaer in Emacs — русскоговорящее сообщество
(defn B [bank commodity]
 #(recommend % (list bank commodity)))

(defn D [distribution]
 #(distribute % distribution))
источник

A

Aragaer in Emacs — русскоговорящее сообщество
B описывает лист, D описывает промежуточный узел
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
Aragaer
B описывает лист, D описывает промежуточный узел
мне кажется тебе надо разделить собственно описание (в edn) и кодинг
источник

A

Aragaer in Emacs — русскоговорящее сообщество
edn позволит мне в качестве ключей указывать маппинги?
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
Aragaer
edn позволит мне в качестве ключей указывать маппинги?
да, если тебе это надо
источник

A

Aragaer in Emacs — русскоговорящее сообщество
собственно в этом и беда, что у меня веса (значения) это просто целые числа, а именно ключи сложно-составные
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
Aragaer
собственно в этом и беда, что у меня веса (значения) это просто целые числа, а именно ключи сложно-составные
я бы, например, сделал ключи :weight и :children
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
и всё - в список подобных хэшей
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
я бы, например, сделал ключи :weight и :children
[{:weight 1
 :children [{:name "VTBU"
             :bank "bank1"
             :weight 1}
            {:name "VTBH"
             :bank "bank2"
             :weight 2}]}
{:weight 1
 :children [{:name "EUR"
             :bank "bank1"
             :weight 1}]}]
источник

DL

Dmytro Lispyvnyi '(🌲... in Emacs — русскоговорящее сообщество
один из вариантов
источник