Size: a a a

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

2020 January 08

AC

Anton Chikin in Clojure — русскоговорящее сообщество
он вообще на нативном коде сделан т.е. очень быстрый
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
просто платформонезависимый вариант будет выглядеть не однострочно
и скорее всего не будет совместим с CLR, clojerl и т.д.
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Sergey Trofimov
просто платформонезависимый вариант будет выглядеть не однострочно
и скорее всего не будет совместим с CLR, clojerl и т.д.
щас же если подумать арифметика в языках типа кложы она нифига не быстрая
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
А деление так и вообще операция зажорная в любом языке
источник

AB

Airat Burganov in Clojure — русскоговорящее сообщество
Anton Chikin
Мы тут сидим мозги размножаем. Луп-рекур, ноль обрабатывать, мультиарность
еще чутка упростил.
(defn digits [n]
 (loop [n n
        res nil]
   (if (zero? n)
     (if res res '(0))
     (recur (quot n 10) (conj res (rem n 10))))))

может еще чо упускаю?
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
ну, когда дело доходит до бигинтов, то и в java арифметика уже не быстрая
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Airat Burganov
еще чутка упростил.
(defn digits [n]
 (loop [n n
        res nil]
   (if (zero? n)
     (if res res '(0))
     (recur (quot n 10) (conj res (rem n 10))))))

может еще чо упускаю?
а ну да conj из nil делает пустой список
источник

AB

Airat Burganov in Clojure — русскоговорящее сообщество
тут короче тема в том, что через Character/digit код не идиоматический. Поэтому нужно другое )
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Anton Chikin
а ну да conj из nil делает пустой список
ну, res (list) лучше выражает намерение и намекает на тип результата
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
Airat Burganov
тут короче тема в том, что через Character/digit код не идиоматический. Поэтому нужно другое )
👍
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Sergey Trofimov
ну, res (list) лучше выражает намерение и намекает на тип результата
может захотеться вообще в java array результат упаковать, для экономии памяти 😊
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Единственное что плохо это если туда отрицательное число сунут
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
rem/quot такое переварит
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
вариант со строкой - нет
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
без отрицательных
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Сергей кстати, если делать быстрое решение, то возведение в степень нужно сделать только для максимум десяти чисел (два из которых не требуют вычисления степени вообще) и переиспользовать
а то так операция возведения в степень повторяется для одних и тех же значений
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
тоже об этом думал
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
надо будет знать, сколкьо раз возводить нужное число
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
хотя тоже несложно
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
я пробую кое-что
источник