
Ayrat
14.06.2018
12:00:48
Если хочешь прям чистой параллельности и возможность фолдить асинхронно, добро пожаловать в мир стримов.
Hopac.Streams / AsyncSeq для F# норм

Pavel
14.06.2018
12:01:25
фолдить асинхронно — звучит достаточно странно, ведь каждый раз надо дождаться результата предыдущего сворачивания

Ayrat
14.06.2018
12:01:45
дожидаться-то можно неблокирующе

Google

Pavel
14.06.2018
12:02:05
а, в этом смысле, да

Ayrat
14.06.2018
12:02:55
Могу тебе накидать элементарный гист на hopac'овских стримах

Pavel
14.06.2018
12:03:25
спасибо, но я пока сам потыкаюсь лучше =)

Ayrat
14.06.2018
12:03:33
:D

Evgeniy
14.06.2018
12:33:12

Sergey
14.06.2018
13:45:55

Nikolay
14.06.2018
13:49:52
Я так понимаю обучаться он будет очень медленно

Evgeniy
14.06.2018
13:50:13

Nikolay
14.06.2018
13:50:43

Evgeniy
14.06.2018
13:51:12
Кажется, в ML.NET сейчас нет нейронных сетей, только "классические" алгоритмы.

Nikolay
14.06.2018
13:53:50
Я думал она про нейронные сети, ибо там затрагивались CNTK, TensorFlow и прочие

Google

TheRainwildsKeeper
14.06.2018
16:49:34

Ayrat
14.06.2018
17:03:34
Работал в букмекерской компании, там сложная логика очень, банки отдыхают.

Igor
14.06.2018
17:05:43
Ребят, а кто писал рыбку (>=>) для Async, может поделиться?
А то я написал, но чувствую что больно "в лоб" сделал, не оптимизированно.

Ayrat
14.06.2018
17:06:33
Покажи. Сразу спрошу, ты ж в курсе что можно без оверхеда comp expression вызвать методы типа async.Bind?

Vasily
14.06.2018
17:07:12

Ayrat
14.06.2018
17:10:04
Вызов всяких delay, zero, combine и пр

Vasily
14.06.2018
17:11:53
Оверхед вроде как на run
Насколько я помню

Ayrat
14.06.2018
17:14:44
Ну не, оверхед когда ты в комп експрешне делаешь как бы пять let, а он добавляет туда много вызовов между. Проще чаще всего напрямую вызвать.
И очень плохо что нет Map метода. Хотят добавить

Vasily
14.06.2018
17:15:19
Можно кастомный сделать

Igor
14.06.2018
17:16:03

Mariia
14.06.2018
17:30:13
и машоб на f#

Evgeniy
14.06.2018
17:30:42
?♂️
Мне кажется, момент хорошенько хайпануть и перетянуть кого-то с Python потерян. :)

Vlad
14.06.2018
17:36:46

Evgeniy
14.06.2018
17:37:08

Google

Roman
14.06.2018
17:37:17

Evgeniy
14.06.2018
17:37:23
Я не помню, когда там F# был относительно популярный. :)

Vlad
14.06.2018
17:37:34

Evgeniy
14.06.2018
17:37:41

Vlad
14.06.2018
17:38:08
И я про нее!
Хм, разве в 2010 что-то кроме opencv было из популярного?

Evgeniy
14.06.2018
17:39:13
scikit-learn уже был.
Я шучу же.
Наверное, в то время, как появился CNTK и Azure ML.

Kir
14.06.2018
17:43:21
Работал в букмекерской компании, там сложная логика очень, банки отдыхают.
кстати, а что за логика, в чем сложность? много математики? или просто много разных инвариантов и все нужно связать вместе? или может там какието rule based engine писать нужно свои или чужие применять. Если все ж математики много, то интересно какой? Мат стат, теор вер, ряды?
Просто всегда интересовали подобные темы, интересно в чем сложность
PS сорри, если оффтоп)

Evgeniy
14.06.2018
17:44:39
Можем перенести в оффтоп чатик, как скажете. :)

Mariia
14.06.2018
17:44:46

Ayrat
14.06.2018
17:45:55

Kir
14.06.2018
17:47:31

Evgeniy
14.06.2018
17:47:54

Ayrat
14.06.2018
17:49:57
Допустим матч Кубань ЦСКА . Вероятность статическая (на основе истории встреч и состава) 5 90 5 (победа 1ой, победа второй, ничья). Вероятность по опросу экспертов 20 60 20. По опросу на сайте 30 50 20. И при этом на Кубань, при учете малых вероятностей кто-то заносит х10 денег. Тут надо сигналить моментально об остановке ставок на матч вообще и бане конкретного клиента в частности
И таких моментов миллиард. Когда ты крупный букмекер тебя все пытаются наебать. Даже если ты не пытаешься, тебя будут наебывать из-за рубежа на разнице кэфоф. Чтобы это отследить надо знать о мировых кэфах на событие.
А если кто-то сидит на самом матче и имеет инфу без задержки? Вот он видит как Рональдо подбегает к воротам, один на один. Ну это будет гол, у чувака уже в UI вбито всё, надо только в мобильном клиенте Ok нажать. Это чистый наеб.

Google

Ayrat
14.06.2018
17:54:27
Короче, я закончу на этом, но это далеко не все)

Roman
14.06.2018
17:54:47

Ayrat
14.06.2018
17:55:02
Ну вот я эти темы на акке и делал

Kir
14.06.2018
17:55:31
да, очень интересно. спасибо за маленькие инсайды)

Ayrat
14.06.2018
17:55:34
Каждый актор = событие. Ведёт себя и историю событий внутри события) чтобы правильно оценивать обстановку

Kir
14.06.2018
17:56:13
вспомнил, что bet365 тоже акторы используют)
эрланговые правда

Ayrat
14.06.2018
17:56:40
Я думаю это почти идеальная схема для подобной задачи. Ну я лучше не знаю.

Kir
14.06.2018
17:56:59
риак, crdt . гдето видел доклад - до 500 тыщ реквестов в секунду у них там

Roman
15.06.2018
04:34:49
Привет!
#task_101
Публикуем ваши варианты решений.
Хочу отдельно отметить @tvolf, он - единственный, кто прислал решение с помощью алгоритма Бойера—Мура.
Кстати, для тех кто устал от питона, в нашей подборке появился новый язык, это F#. Так что смотрим разбор!
http://telegra.ph/Task-101-1-Mazhoritarnyj-ehlement-massiva-06-15

Evgeniy
15.06.2018
07:16:21
Что это?

Roman
15.06.2018
07:17:05
Это канал с задачами
И там вон кто-то на фшарпе написал
Вот задача
#announcement #task_101
Устали от скучной теории и математики ?! Вот задачка чисто по программированию, разомнитесь ?
? Задача 101: Мажоритарный элемент массива (решение будет в четверг)
Дан числовой массив размера N. Необходимо найти мажоритарный элемент, если такой существует, ктр встречается в массиве более чем [N / 2] раз (округление в меньшую сторону).
Входные данные: arr - числовой массив размера N, где N от 1 до 10000. Элементы массива - любые действительные числа.
Вывод: вывести мажоритарный элемент массива, если такой существует, иначе сообщение о его отсутствии.
Пример: arr = [1, 2, 3, 4, 1, 1, 1]
Answer = 1
Но в f# зачем-то используется Nullable вместо Option

Evgeniy
15.06.2018
07:20:28
@rustem_b ^

Bonart
15.06.2018
07:21:14
И если не хочешь лишних аллокаций в куче...

Google

Evgeniy
15.06.2018
07:21:59

Roman
15.06.2018
07:25:16
Там вместо Bag можно по-моему использовать Map

Vasily
15.06.2018
07:25:20
А groupby там не катит, кстати?
Или там ограничения по памяти типа?

Roman
15.06.2018
07:25:41
Вот я тоже подумал

Vasily
15.06.2018
07:26:41
Тогда однострочник
Seq.groupby try find map

Evgeniy
15.06.2018
07:33:49
Ну, однострочник не получится.
let tryFindMajorityElement (arr: int list) =
let n = arr.Length
arr
|> List.countBy id
|> List.tryFind (fun (element, count) -> count > n / 2)
|> Option.map fst
Самое короткое, что у меня получилось.
@rustem_b ^

Vasily
15.06.2018
07:34:59
Кстати тоже вариант хороший
В целом, можно ещё через max
Попробовать
Ищем максимальный повтор, сравниваем с половинной длиной
Хотя мажоритарный элемент единственный по определению