
Roman
07.09.2017
10:59:21
+

Evgeniy
07.09.2017
10:59:36
хмм
Почитай документацию, друже.
https://msdn.microsoft.com/en-us/visualfsharpdocs/conceptual/casting-and-conversions-%5Bfsharp%5D#casting-object-types
Там есть примеры.

Anton
07.09.2017
11:00:53
хм интересно, а я то думал, для чего эти :>

Google

Pavel
07.09.2017
11:23:23
что означает шарп перед IPEndPoint в данном контексте?
возможно, что это дженерик, который получается вывести в данном контексте только как IPEndpoint?

Anton
07.09.2017
11:32:30
@gsomix а как бы так через F# мне из массива достать самые высокие по модулю числа ?

P
07.09.2017
11:34:04
Array.sortBy | Seq.take подойдут?

Anton
07.09.2017
11:34:30
сейчас гляну

Vasily
07.09.2017
11:34:37
Array.maxBy

Anton
07.09.2017
11:34:38
но вроде я так пробовал и не подошло

Vasily
07.09.2017
11:35:38
Ну ищешь максимум
потом фильтр

Pavel
07.09.2017
11:35:52
arr |> Array.map (fun x -> (Math.Abs x, x)) |> Array.sortByDescending (fun (xAbs, x) -> xAbs) |> Array.map (fun (_, x) -> x)

P
07.09.2017
11:36:04
Seq.sortBy | Seq.take

Anton
07.09.2017
11:36:12
у меня есть нюанс, мне нельзя минусы удалять =)

Google

Klei
07.09.2017
11:36:25
Array.maxBy abs

Ilya
07.09.2017
11:36:53
arr |> Array.sortByDescending Math.Abs |> Array.take 10

Pavel
07.09.2017
11:37:05

Ilya
07.09.2017
11:37:24
так же, но без лишних мапов

Pavel
07.09.2017
11:37:41
хмм, да

Anton
07.09.2017
11:38:30
у меня почемуто нету методов sortByDescending и take у Array

Pavel
07.09.2017
11:38:37
я вот думаю, стоит ли накидывать говна

Anton
07.09.2017
11:38:37
я чего-то забыл подключить?

Pavel
07.09.2017
11:38:47
вы тут все такие дружелюбные тип

P
07.09.2017
11:38:51
У тебя F# какой версии?

Anton
07.09.2017
11:39:18
4.что-то-там
Fsharp.Core 4.3.1.0

Klei
07.09.2017
11:39:52
Можно узнать, чем не подходит items |> Array.maxBy abs?

Pavel
07.09.2017
11:39:53
скинь кусок кода

Evgeniy
07.09.2017
11:39:56

P
07.09.2017
11:40:08

Pavel
07.09.2017
11:40:20

Klei
07.09.2017
11:40:24

Nikolay
07.09.2017
11:40:27

P
07.09.2017
11:41:01
Лично я не вижу в Array модуле take. Но можно как-то так: Array.toSeq |> Seq.take

Google

Anton
07.09.2017
11:41:16
а мне нужен мой массив

Nikolay
07.09.2017
11:41:29

Anton
07.09.2017
11:41:30
только исключая малые велечины

P
07.09.2017
11:41:31
Просто не очень понятно зачем тратить память на временный массив (он же будет хранится?), если можно просто всё сделать в рамках Seq

Nikolay
07.09.2017
11:41:42
Array это же IEnumerable

Anton
07.09.2017
11:42:09
скинь кусок кода
open System
open MathNet.Numerics.IntegralTransforms
open MathNet.Filtering
[<EntryPoint>]
let main argv =
let vector = [|1.0;1.0;1.0;2.0;3.0;3.0;3.0;4.0;4.0;5.0;6.0;6.0;6.0;7.0;8.0;9.0;9.0|]
let dph = Hartley.NaiveForward (vector,HartleyOptions.AsymmetricScaling) |> Array.map Math.Round
printfn "%A" (dph |> Array.sortByDescending Math.Abs |> Array.take 10)
0

Ilya
07.09.2017
11:43:29
ну воспользуйся простым sortBy
только инвертируй все числа и все ( с помощью унарного минуса )

Anton
07.09.2017
11:44:16
c унарного минуса по подробней
я только так умею Array.Reverse
но take всеравно нету

Ilya
07.09.2017
11:45:10
сделай Seq.take 10 |> Seq.toArray
Seq.sortBy (fun x -> - abs x)

Anton
07.09.2017
11:46:07
угу уже делал
афк

Nikolay
07.09.2017
12:02:23

Ilya
07.09.2017
12:02:44
там минус еще
Seq.sortBy (abs >> (-)) возможно так можно, но я не уверен

Google

Nikolay
07.09.2017
12:04:23
let negAbs x = -(abs x)
Seq.sortBy negAbs

Anton
07.09.2017
12:39:58
Ilya

Ilya
07.09.2017
12:40:15
ну ок, значит нельзя

Anton
07.09.2017
12:40:38
в целом
(dph |> Array.sortBy Math.Abs |> Seq.take 3) работает прямо противоположно тому, что мне нужно
[0.0; 0.0; -3.0]
а мне как-бы наоборот нужно =)

Ilya
07.09.2017
12:41:24
ну так вместо Array.sortBy Math.Abs напиши Seq.sortBy (fun x -> - abs x)

Anton
07.09.2017
12:41:40
хм, - abs

Ilya
07.09.2017
12:41:48
да

Anton
07.09.2017
12:41:52
никогда не бы не подумал, что там можно =)
забавно!
но вот есть ещё "нюанс" - важно брать именно в той последовательности, в которой оно лежало изначально

Ilya
07.09.2017
12:43:27
то есть?

Vasily
07.09.2017
12:43:34
Ну тогда только фолдом
Точнее фильтром
И в два прохода
Сначала макс находишь
Потом по фильтру берешь

Anton
07.09.2017
12:45:30
то есть?
есть
[|78.0; -26.0; -16.0; -15.0; -9.0; -5.0; -7.0; -5.0; -4.0; -4.0; -3.0; -4.0; 0.0;
0.0; 5.0; 8.0; 22.0|]
стало
[|78.0; -26.0; 22.0; -16.0; -15.0|]
А должно было стать
[|78.0; -26.0; -16.0; -15.0 22.0;|]

Vasily
07.09.2017
12:46:11
Чет я не понял, что тебе надо отсекать

Google

Anton
07.09.2017
12:46:37
Если коротко - это алгоритм сжатия по Хартли - руками.

Vasily
07.09.2017
12:46:49
Мне это ни о чем не говорит

Anton
07.09.2017
12:46:57
мне нужно отсекать то, у чего низкая энергия
но ПОТОМ при обратном преобразовании нужно вставить нули туда, где они были

Vasily
07.09.2017
12:47:35
Условия какие?

Anton
07.09.2017
12:47:37
т.е мне нужно знать, из какой ячейки я выдрал значение
что бы между ними засунуть нули
и выполнить декодирование
так работает jpeg, mp3, mpeg, etc
в теории, можно выполнить поиск поиск потом по исходному вектору и достать индексы вытянутых значений с помощью сортировки и отрицательного модуля
это так - костылик

Vasily
07.09.2017
12:49:56
Ну сначала сделай mapi

Anton
07.09.2017
12:49:58
либо - изначально достать как нужно и потом не будет проблем, что бы жахнуть между ними нулей.

Vasily
07.09.2017
12:50:01
Потом остальное

Anton
07.09.2017
12:50:37
В целом - большое спасибо всем за ответы
Array.sortBy (fun x -> - Math.Abs x) |> Seq.take 5 прямо магия
я уже придумывал overДафига алгоритом с кучей мапов и условий

Vasily
07.09.2017
12:53:43
А, так тебе надо взять первые 5 максимумов по модулю?

Диджитал
07.09.2017
12:55:31
c мутабельными структурами данных это за один проход пишется...

Anton
07.09.2017
12:56:20
Vasily угу