@haskellru

Страница 191 из 1551
Serghei
18.02.2017
15:09:10
o

Serghei
18.02.2017
15:09:19
спасибо

? animufag ?
18.02.2017
15:09:22
аа

Google
? animufag ?
18.02.2017
15:09:33
ну ок забудь

Kit
18.02.2017
15:10:23
тебе нужна fromIntegral

Serghei
18.02.2017
15:24:16
дада

уже понял

спасибо

Alexander
18.02.2017
15:31:44
Или genericLength

Serghei
18.02.2017
17:27:51
да, genericLength удобнее

но я все равно не могу избавится от fromIntegral тут, правильно? fluc :: [Double] -> Double fluc [] = 0.0 fluc xs = (mp - fromIntegral av) / mp * 100 where mp = maximum xs av = floor $ sum xs / genericLength xs

Serghei
18.02.2017
17:31:18
fluc [20,23,25,30,22,21,16] -- 26.666666666666668

это проверочный результат

решаю задачки по питону на хаскеле

Google
Serghei
18.02.2017
17:32:29
я и сделал без floor но вышло "чуть меньше" :)

Write a program that accepts a comma separated string of numbers depicting the daily stock price of AXY Company. The program should calculate the biggest daily fluctuation (in terms of percentage) of the stock price on any given day. For example, let us suppose the following is the input string: INPUT 20,23,25,30,22,21,16 Then the corresponding biggest fluctuation is: OUTPUT 26.6666666666667 (As the maximum fluctuation in price is between 22 and 30)

Serghei
18.02.2017
17:39:26
напишите программу которая принимает список чисел разделенных запятой (дневная цена акций компании Ъ). программа должна самое больное колебание цены в процентах за все дни

подразумевается что сколько чисел - столько дней

о

https://ru.wikipedia.org/wiki/Флуктуация

Kit
18.02.2017
17:42:49
а самое большое колебание это: 1) максимальное отклонение от среднего 2) разность между максимумом и минимумов 3) дисперсия?

из того что вы скинули я бы сказал, что флуктуация это разность между значением в списке и предыдущим значением в списке

в питоне a[i] - a[i-1]

пардон, извиняюсь, я нес ...

? animufag ?
18.02.2017
18:11:21
из того что вы скинули я бы сказал, что флуктуация это разность между значением в списке и предыдущим значением в списке
это можно назвать максимум по производной. или мб модуля по ней. для дискретной функции вроде есть своё название производной

Serghei
18.02.2017
18:11:50
))

Google
? animufag ?
18.02.2017
18:18:36
http://whatis.techtarget.com/definition/percent-change-percent-difference

D% = 100 (x2 - x1) / x1 я подумал что там про численные методы будет задача. а там про какую экономическую пургу.

Serghei
18.02.2017
18:20:33
хахаха

Kit
18.02.2017
18:22:37
ff :: [Double] -> [Double] ff [x] = [] ff (x:y:xs) = 100 * (abs $ x - y) / x : ff (y:xs) fluc = maximum . ff

Alexander
18.02.2017
18:27:52
f xs = maximum $ zipWith (\x y-> abs (x-y)) (tail xs) xs

Kit
18.02.2017
18:28:22
Кстати, у формулы есть подвох, когда в списке присутствует 0

Alexander
18.02.2017
18:34:31
А блин в процентах, я там криво написал

Криво = неправильно, но суть та же

Kit
18.02.2017
18:35:37
а еще можно было без лямбды

maximum $ map abs $ zipWith (/) (zipWith (-) (tail xs) xs) xs

Kit
18.02.2017
18:36:56
но нечетабельно!!

Serghei
18.02.2017
19:08:35
блин

сколько лет мне надо писать чтоб также коротко из головы

Alexander
18.02.2017
19:28:09
Не очень долго если это цель

Просто в чятике писать и смотреть ответы

Kit
18.02.2017
19:29:36
Через год уже само собой так будет получаться

? animufag ?
18.02.2017
19:44:18
бтв оба варианта не учитывают пустой список. уже не так красиво будет выглядеть.

Kit
18.02.2017
19:46:40
zipWith учтёт, а что бы с tail не встрять можно drop использовать

Google
? animufag ?
18.02.2017
19:48:51
ну да drop ок

Kit
18.02.2017
19:49:20
кататак maximum $ 0 : map abs $ zipWith (/) (zipWith (-) (drop 1 xs) xs) xs

? animufag ?
18.02.2017
19:49:52
maximum... эх

Kit
18.02.2017
19:50:13
maximum... эх
я нолик добавил

перед мапом

? animufag ?
18.02.2017
19:50:34
аа ок

Ilya
18.02.2017
20:06:19
но нечетабельно!!
Мне нравится. Абсолютно читабельно на мой взгляд

Kit
18.02.2017
20:37:13
Мне нравится. Абсолютно читабельно на мой взгляд
В строке надо найти "вход" не находите?

Длинный однострочный код теряет преимущества когда не читается слева направо

Часто приходится читать с двух сторон. Или это только меня смущает?!

Admin
ERROR: S client not available

Ilya
18.02.2017
20:42:05
мне пока не приходилось разбирать чужой код на хаскелле, не считая кодов из учебников или руководств:)

но конкретно этот однострочник никаких проблем в прочтении не вызвал. сообщения выше него не читал, т.е. контекста не знал

? animufag ?
18.02.2017
20:44:34
этот однострочник норм да. но вообще это серьёзная проблема в хаскельном комьюнити, что все стараются сделать покомпактней и (что хуже) назвать всё одной буквой

особенно в описании типа это прям железное правило называть типы a, b ,c, d... конечно обычно в контейнере типа списка нет никакой дополнительной информации о типе и там уместна произвольная буква

Ilya
18.02.2017
20:48:29
я больше фрустрирую с кода типа (. map) . (.) . filter

Kit
18.02.2017
20:49:06
я больше фрустрирую с кода типа (. map) . (.) . filter
Хм, а это повод помедитировать :)

Ilya
18.02.2017
20:53:03
под влиянием этот примера, увиденного на ЛОРе, я даже придумал новый оператор "три точки" =) но являть его миру не решился

Kit
18.02.2017
20:53:48
я больше фрустрирую с кода типа (. map) . (.) . filter
по сигнатуре похоже на filter . map

Google
Ilya
18.02.2017
20:54:37
ну что-то типа того, да. все три аргумента выкинули

Kit
18.02.2017
20:55:29
побольшеб таких примеров, а то пока не получается в безточной нотации писать ))))

Ilya
18.02.2017
20:55:51
с сигнатурой это чит

Kit
18.02.2017
20:56:18
ее можно же руками вывести

Kit
18.02.2017
20:56:41
давай

? animufag ?
18.02.2017
20:56:48
побольшеб таких примеров, а то пока не получается в безточной нотации писать ))))
она ок если комбинируешь функции с одним аргументом. дальше не стоит

Kit
18.02.2017
20:57:34
она ок если комбинируешь функции с одним аргументом. дальше не стоит
иногда аргумент один, а точек входа внути строки у него две или более, а иногда хочется без него

Ilya
18.02.2017
20:57:46
let (...) = (.) (.) (.)

что делает оператор "три точки"? =)

Kit
18.02.2017
20:58:50
а точки между точками не пропущены?

Ilya
18.02.2017
20:58:54
нет

можно ещё так (.) . (.)

как удобно

Dan
18.02.2017
20:59:51
(. ) ( .) Же

Kit
18.02.2017
21:00:32
(. ) ( .) Же
да, только как на марсе (. ) ( . ) ( .)

Dan
18.02.2017
21:00:47
Да да да! Мне нравится хаскель!

Kit
18.02.2017
21:11:09
let (...) = (.) (.) (.)
что здесь делается понятно, после взятия сигнатуры, но как это в глове вывести... здорово

? animufag ?
18.02.2017
21:13:10
хз я не понял, первый аргумент функция возвращающая значение по функции. а это обычно очень специфичные функции

(. (.) (.)) :: ((a -> (a1 -> b) -> a1 -> c1) -> c) -> (a -> b -> c1) -> c

((a -> (a1 -> b) -> a1 -> c1) -> c)

Ilya
18.02.2017
21:17:52
ты неправильно переписал функцию

Страница 191 из 1551