Size: a a a

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

2020 January 08

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
(reduce + (map #(long (Math/pow % 3)) '(1 5 3)))

работает корректно
источник

ST

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

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Сергей Суржик
надо вдуплить откуда берется в итоге число на 1 единицу больше
разобрался?
источник

СС

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

ST

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

СС

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

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
я подозреваю что проблема в Math/pow
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Сергей Суржик
я подозреваю что проблема в Math/pow
да

(defn exp [x n]
     (reduce * (repeat n x)))

   (reduce +
     (map #(exp % 17)
       '(2 1 8 9 7 1 4 2 5 8 7 6 1 2 0 7 5)))
=> 21897142587612075
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
именно. тоже в эту степь пошел. значит на верном пути был
источник

СС

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

ST

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

СС

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

ST

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

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
то есть Math/pow работает верно, но при больших числах всплывают неточности?
источник

MM

Mikhail Malakhovskiy in Clojure — русскоговорящее сообщество
вообще он double же оперирует
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
Сергей Суржик
то есть Math/pow работает верно, но при больших числах всплывают неточности?
для девятки неправильно
(map (juxt identity #(exp % 17) #(long (Math/pow % 17)))
    '(2 1 8 9 7 1 4 2 5 8 7 6 1 2 0 7 5))
=>
([2 131072 131072]
[1 1 1]
[8 2251799813685248 2251799813685248]
[9 16677181699666569 16677181699666570]
[7 232630513987207 232630513987207]
[1 1 1]
[4 17179869184 17179869184]
[2 131072 131072]
[5 762939453125 762939453125]
[8 2251799813685248 2251799813685248]
[7 232630513987207 232630513987207]
[6 16926659444736 16926659444736]
[1 1 1]
[2 131072 131072]
[0 0 0]
[7 232630513987207 232630513987207]
[5 762939453125 762939453125])
источник

ST

Sergey Trofimov in Clojure — русскоговорящее сообщество
похоже точности дабла не хватает
(double 16677181699666569N)
=> 1.6677181699666568E16
источник

СС

Сергей Суржик in Clojure — русскоговорящее сообщество
Sergey Trofimov
для девятки неправильно
(map (juxt identity #(exp % 17) #(long (Math/pow % 17)))
    '(2 1 8 9 7 1 4 2 5 8 7 6 1 2 0 7 5))
=>
([2 131072 131072]
[1 1 1]
[8 2251799813685248 2251799813685248]
[9 16677181699666569 16677181699666570]
[7 232630513987207 232630513987207]
[1 1 1]
[4 17179869184 17179869184]
[2 131072 131072]
[5 762939453125 762939453125]
[8 2251799813685248 2251799813685248]
[7 232630513987207 232630513987207]
[6 16926659444736 16926659444736]
[1 1 1]
[2 131072 131072]
[0 0 0]
[7 232630513987207 232630513987207]
[5 762939453125 762939453125])
но я работаю с 10 версией
источник

ST

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

СС

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