Size: a a a

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

2020 January 08

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Я всегда думаю так : чем больше людей на собесе зарежут - тем выше моя зп.
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Поэтому делайте через строки :)
источник

СС

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

AB

Airat Burganov in Clojure — русскоговорящее сообщество
Anton Chikin
(defn digits
 ([n]
  (digits n (list)))
 ([n acc]
  (if (zero? n)
    (if (empty? acc) (list 0) acc)
    (recur (quot n 10) (conj acc (rem n 10))))))
лучше через loop все же, чтобы лишней функции не создавать
(defn digits [n]
 (loop [n n
        res '()]
   (if (zero? n)
     (if (empty? res) '(0) res)
     (recur (quot n 10) (conj res (rem n 10))))))
источник

ST

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

AC

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

AB

Airat Burganov in Clojure — русскоговорящее сообщество
Anton Chikin
А ты и не создаешь. Это одна функция с переменной арностью. Но да можно и через луп.
ну да, я это имею ввиду. Типа переменная арность, но это деталь реализации, она снаружи не нужна. Ну так принципиальной разницы нет уж
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Сергей Суржик
ну ты тогда скажи почему так как я написал плохо)
Как именно?
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
меня вот подобное смущает
(map #(Character/digit % 10) (str num)
как переделать?
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Сергей Суржик
меня вот подобное смущает
(map #(Character/digit % 10) (str num)
как переделать?
Вопрос был как переделать
источник

СС

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

AD

Artur Dumchev in Clojure — русскоговорящее сообщество
так тебе же уже разъяснили выше, ты сам согласился
источник

AD

Artur Dumchev in Clojure — русскоговорящее сообщество
ну ты и сам должен понимать, что цепочка превращений число → строка → символы → числа, она как бы «с душком»
источник

СС

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

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Сергей Суржик
ты гвооришь: пишите через строки) я буду получать больше зп) я делаю вывод, что через стркои - плохо) можешь разъяснить почему?)
Ну на самом деле особых проблем с этим нет, кроме того что операции по конвертации туда/cюда и операции на строках - они небыстрые
источник

AC

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

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
но не работает в кложаскрипте
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Мы тут сидим мозги размножаем. Луп-рекур, ноль обрабатывать, мультиарность
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
А можно в одну строку без этой хреноты всей
источник

AC

Anton Chikin in Clojure — русскоговорящее сообщество
Sergey Trofimov
но не работает в кложаскрипте
Ну там есть parseInt
источник