
Evgeniy
07.09.2017
13:13:18
Сохраняешь индексы, сортируешь по значениям, отсекаешь, сортируешь по индексам.
Что-то более сложное ищется по запросу "k-th order statistic".

Vasily
07.09.2017
13:20:21
mapi жеж

Google

Vasily
07.09.2017
13:20:26
И кортежи

Evgeniy
07.09.2017
13:20:55
Это был обучающий момент!
Пусть @the_RAMZAY сам напишет, это несложно. :)

Anton
07.09.2017
13:22:48
угу, там попробую навертеть

Evgeniy
07.09.2017
13:23:06
Для накидываний есть флудилка.
@dotnettalks

Klei
07.09.2017
14:06:15
@the_RAMZAY
let inline takeMaxByAbs count items =
let partitionWhile predicate items =
let rec partitionWhile items acc =
match items with
| h::t when predicate h -> h::acc |> partitionWhile t
| _ -> acc, items
partitionWhile items []
items
|> Seq.fold (fun (acc, index) item ->
acc
|> partitionWhile (snd >> abs >> (>) (abs item))
||> fun smaller greater ->
smaller
|> List.fold (fun state p -> p::state) ((index, item) :: greater)
|> fun p -> (if index < count then p else p.Tail), index + 1
)
([], 0)
|> fst
|> List.sortBy fst
|> List.map snd

Ilya
07.09.2017
14:07:45
слишком сложно
выше @gsomix предлагал намного более простое решение

Klei
07.09.2017
14:08:37
В один проход.

Evgeniy
07.09.2017
14:08:52

Google

Evgeniy
07.09.2017
14:09:14
Klei Кинешь в gists?
В телеге неудобно код читать.

Klei
07.09.2017
14:09:27
Хотя вру, в конце опять сортировка.
Сек.

Anton
07.09.2017
14:11:48
Ух ты, пасибо! @Kleidemos

Klei
07.09.2017
14:11:52
https://gist.github.com/kleidemos/495966ba59cbac5c265e01e31797a000

Vasily
07.09.2017
14:13:16
Чет как-то жестко

Klei
07.09.2017
14:13:56
Ну всегда можно декомпозировать как человеку удобно.

Vasily
07.09.2017
14:14:23
Ну и там не один проход, похоже

Klei
07.09.2017
14:14:49
По набору элементов изначальному один проход.
Вот по аккумулятору дохрена ходит.

Vasily
07.09.2017
14:15:13
Аккумулятор там страдает,да

Anton
07.09.2017
14:15:15
У меня тут саенс... и крутой комп, в который я втарил много денег... И главное результат в конце на бумашке!

Klei
07.09.2017
14:15:50
Наверное стоило его на что-нибудь сортируемое заменить.

Anton
07.09.2017
14:16:52
@Kleidemos твой метод просто космос! ^_^
А потом я ещё графики на F# нарисую. Уииииии

Klei
07.09.2017
14:18:15

Vasily
07.09.2017
14:19:21
С mutable можно написать попроще, по идее

Roman
07.09.2017
14:20:09

Vasily
07.09.2017
14:20:56
Но там тоже с изнасилованием аккумулятора, к сожалению

Google

Evgeniy
07.09.2017
14:23:29

Vasily
07.09.2017
14:23:44
Я начал обджумывать свой
Там что-то связанное с очередями
И текущим минимумом

Klei
07.09.2017
14:24:05
Вместо списка в аккумуляторе надо бы zipper юзать. Будет меньше изнасилований, правда нужно достать zipper.

Vasily
07.09.2017
14:25:09
Все равно на каждом шаге фильтрация по массиву из 5 элементов...

Klei
07.09.2017
14:26:33

Vasily
07.09.2017
14:26:40
Угу
Идея в том, что набиваем до 5, потом проверяем на текущий минимум
Но фильтр по-любому нужен
Для отбрасывания мусора
Поэтому, похоже, не обойтись без перебора
Но зато будет работать на последовательностях любой длины

Evgeniy
07.09.2017
18:34:21
> +20,810 −28,594
Сайм пишет код как молодой.
https://github.com/Microsoft/visualfsharp/pull/3561
@Dolfik Видел? Твой issue поправили.

Nikolay
07.09.2017
18:38:17

Igor
07.09.2017
20:03:51
А в DU можно запихнуть методы? Типа фабричного?

Evgeniy
07.09.2017
20:04:05

Летучая
07.09.2017
20:05:00
member x.CreateDU()

Google

Evgeniy
07.09.2017
20:06:30
Посмотрите, о чем твитнул(а) @dsyme: https://twitter.com/dsyme/status/905942283786350592?s=09
Есть надежда, что скоро Сайм возьмётся за новые фичи и F#4.2 :)

Nikolay
08.09.2017
07:18:30
И я не понял, по какому принципу срочность для issue выставляется? Для подсказки в дебаггере он поставил Soon, а для бага компилятора с рекурсивным модулем Later

Evgeniy
08.09.2017
07:32:59

Vasily
08.09.2017
07:33:10
Ы?

Nikolay
08.09.2017
07:33:14

Vasily
08.09.2017
07:33:24
Без явного объявления типа записи, шоле?

Nikolay
08.09.2017
07:33:51

Evgeniy
08.09.2017
07:33:52
Привет!

Vasily
08.09.2017
07:33:56
dynamic в F# я как-то слабо представляю

Βοσκρεσε
08.09.2017
07:34:18
О, как вас тут много
Я вот вообще с .NET не знаком.
С Haskell только слегка

Artemy
08.09.2017
07:34:34

Vasily
08.09.2017
07:34:40

Βοσκρεσε
08.09.2017
07:34:41
Есть смысл учить F#?

Vasily
08.09.2017
07:34:51

Google

Βοσκρεσε
08.09.2017
07:34:52
Или запнусь?

Artemy
08.09.2017
07:35:13
Ну после Haskell F# должен легко зайти.

Vasily
08.09.2017
07:35:28
Только вот с анонимными рекордами одно непонятно

Evgeniy
08.09.2017
07:35:39

Vasily
08.09.2017
07:35:48
Допустим, у меня есть рекорд {A;B;C}
И я должен вернуть его из функции
А, хотя норм
{||} жеж

Βοσκρεσε
08.09.2017
07:36:23

Nikolay
08.09.2017
07:36:36
Анонимные записи скорее всего нельзя будет вытаскивать за пределы функции
Как в C# собственно

Vasily
08.09.2017
07:36:53
Можно
Там просто синтаксис объявления другой

Evgeniy
08.09.2017
07:37:05

Vasily
08.09.2017
07:37:14
Чтобы путаницы в рекордах не было

Nikolay
08.09.2017
07:37:18
А, ну да, вижу

Evgeniy
08.09.2017
07:37:37

Nikolay
08.09.2017
07:38:42

Βοσκρεσε
08.09.2017
07:39:15
Возможностей довольно много, мобилки, веб с Websharper