Conversation
|
|
||
| let countEvenMap list = list |> Seq.map (fun x -> (1 - Math.Abs(x % 2))) |> Seq.sum | ||
|
|
||
| let countEvenFold list = list |> Seq.fold (fun sum element -> (+) sum <| Math.Abs (element + 1) % 2) 0 No newline at end of file |
There was a problem hiding this comment.
можно было понятнее записать (:
| let countEvenFold list = list |> Seq.fold (fun sum element -> (+) sum <| Math.Abs (element + 1) % 2) 0 | |
| let countEvenFold list = list |> Seq.fold (fun sum element -> if element % 2 = 0 then sum else sum + 1) 0 |
| open FsUnit | ||
| open EvenNumbers.СountEvenNumbers | ||
|
|
||
| let testCases = |
There was a problem hiding this comment.
В данном задании можно было использовать FSCheck, чтобы быстро сравнить функции между собой наборами сгенерированных сценариев
| type Tree<'a> = | ||
| | Tree of 'a * Tree<'a> * Tree<'a> | ||
| | Leaf of 'a |
There was a problem hiding this comment.
Дерево не самое корректное, потому что через него нельзя определить вырожденное дерево, не содержащее ни единого элемента.
| type ExpressionTree = | ||
| | ExpressionTree of Operation * ExpressionTree * ExpressionTree | ||
| | Leaf of int | ||
|
|
There was a problem hiding this comment.
Операции могут быть как бинарными, так и унарными. Сейчас унарные операции вообще ни в каком виде не поддерживаются, давайте это исправим
| let rec checkDelimeters delimeter = | ||
| delimeter >= bound || (n % (int delimeter) <> 0 && checkDelimeters (delimeter + bigint 1)) | ||
| checkDelimeters (bigint 2) | ||
| seq {yield! Seq.filter (fun number -> isPrimeNumber number) (Seq.initInfinite (fun i -> i + 2))} No newline at end of file |
There was a problem hiding this comment.
тут можно записать проще
| seq {yield! Seq.filter (fun number -> isPrimeNumber number) (Seq.initInfinite (fun i -> i + 2))} | |
| Seq.initInfinite (fun i -> i + 2) |> Seq.filter isPrimeNumber |
| let isPrimeNumber n = | ||
| let bound = n |> float |> Math.Sqrt |> Math.Round |> bigint |> (+) (bigint 1) | ||
| let rec checkDelimeters delimeter = | ||
| delimeter >= bound || (n % (int delimeter) <> 0 && checkDelimeters (delimeter + bigint 1)) | ||
| checkDelimeters (bigint 2) |
There was a problem hiding this comment.
вся математика с bigint тут бессильна, поскольку Seq.initInfinite генерирует int последовательность, isPrimeNumber так же принимает int. Если Seq.initInfinite будет генерировать biginit, это все будет иметь смысл
No description provided.