Size: a a a

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

2020 March 08

AI

Andrey Ivanov in Clojure — русскоговорящее сообщество
хотя можно самодокументированный states взять в качестве имени
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Andrey Ivanov
шрифт нормальный надо ставить, если с 1 путается ) а так этож имхо стандартная аббревиатура от list
не путается
но у меня в голове нет для листа такой стандартной аббревиатуры
прошивка не та 😊
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Andrey Ivanov
Нормас, анонимные функции больше одной строки меня все равно тимлид отправляет переписывать на именованные. У него на это триггер ))
ну вот я бы тоже letfn-ы вынес наружу
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
ну вот я бы тоже letfn-ы вынес наружу
как это выглядит практически?
сначала пишешь let, потом видишь, что там одни функции, и переписываешь на letfn?
или прежде чем писать let/letfn, заранее обдумываешь, что в нём будет?
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Sergey Trofimov
как это выглядит практически?
сначала пишешь let, потом видишь, что там одни функции, и переписываешь на letfn?
или прежде чем писать let/letfn, заранее обдумываешь, что в нём будет?
нет, просто выношу в defn
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
аллергия на функции больше 5-6 строк
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
ну вот я бы тоже letfn-ы вынес наружу
что-то не уверен, что выходит хорошо
можешь вынести и показать свой вариант?
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
просто замкнутые переменные передавать явно не достаточно будет?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
просто замкнутые переменные передавать явно не достаточно будет?
никаких условий
просто покажи, какой вариант написания этого алгоритма нравится лично тебе 😊
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
тесткейс есть какой-нибудь? а то я пропустил, о чём речь
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
тесткейс есть какой-нибудь? а то я пропустил, о чём речь
(t 1 5 1 2)
=> ([[:c2 :c1 :c2] 2 5] [[:c2 :c2 :c2] 1 5])
(t 1 100 1 5)
=>
([[:c1 :c2 :c1 :c2 :c2 :c2 :c1 :c2 :c2 :c2 :c2] 19 100]
[[:c2 :c1 :c2 :c2 :c2 :c1 :c2 :c1 :c2 :c2 :c2] 21 100])
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
ага, пасиб, ща потыкаю
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Sergey Trofimov
(t 1 5 1 2)
=> ([[:c2 :c1 :c2] 2 5] [[:c2 :c2 :c2] 1 5])
(t 1 100 1 5)
=>
([[:c1 :c2 :c1 :c2 :c2 :c2 :c1 :c2 :c2 :c2 :c2] 19 100]
[[:c2 :c1 :c2 :c2 :c2 :c1 :c2 :c1 :c2 :c2 :c2] 21 100])
(defn step [k [cs r1 r2]]
 [[(conj cs "c1") (- (* k r2) r1) r2]
  [(conj cs "c2") r1 (+ (* k r1) r2)]])

(defn ffn [n [_ r1 r2]]
 (or (= n r1)
     (= n r2)))

(defn go [k n l]
 (or (->> l
          (filter (partial ffn n))
          not-empty)
     (recur k n (mapcat (partial step k) l))))

(defn t [k n r1 r2]
 (go k n [[[] r1 r2]]))


в первом приближении так, но я опять же, вне контекста задачи :)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
(defn step [k [cs r1 r2]]
 [[(conj cs "c1") (- (* k r2) r1) r2]
  [(conj cs "c2") r1 (+ (* k r1) r2)]])

(defn ffn [n [_ r1 r2]]
 (or (= n r1)
     (= n r2)))

(defn go [k n l]
 (or (->> l
          (filter (partial ffn n))
          not-empty)
     (recur k n (mapcat (partial step k) l))))

(defn t [k n r1 r2]
 (go k n [[[] r1 r2]]))


в первом приближении так, но я опять же, вне контекста задачи :)
спасибо
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
а ещё можно ffn заменить
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
(defn go [k n l]
 (or (->> l
          (filter (fn [rs] ((set (rest rs)) n)))
          not-empty)
     (recur k n (mapcat (partial step k) l))))
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
(defn step [k [cs r1 r2]]
 [[(conj cs "c1") (- (* k r2) r1) r2]
  [(conj cs "c2") r1 (+ (* k r1) r2)]])

(defn ffn [n [_ r1 r2]]
 (or (= n r1)
     (= n r2)))

(defn go [k n l]
 (or (->> l
          (filter (partial ffn n))
          not-empty)
     (recur k n (mapcat (partial step k) l))))

(defn t [k n r1 r2]
 (go k n [[[] r1 r2]]))


в первом приближении так, но я опять же, вне контекста задачи :)
кстати, в step нафиг не нужен k, а нужен (partial * k)
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
хотя конечно,
(partial step (partial * k))

выглядит уже более криптик
источник

DL

Dmytro Lispyvnyi '(🌲 🍺) in Clojure — русскоговорящее сообщество
и cs не нужен, а нужен (partial conj cs)
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Dmytro Lispyvnyi '(🌲 🍺)
кстати, в step нафиг не нужен k, а нужен (partial * k)
уверен, что в том, что получится, можно будет легко разглядеть условие задачи и алгоритм решения?
https://t.me/clojure_ru/111333
источник