parent
9dc73e73af
commit
41531dfb0f
@ -0,0 +1,93 @@
|
||||
let task4_church arr =
|
||||
arr
|
||||
|> List.mapi (fun i x -> (i, x))
|
||||
|> List.sortByDescending snd
|
||||
|> List.map fst
|
||||
|
||||
let task4_list arr =
|
||||
arr
|
||||
|> List.mapi (fun i x -> (i, x))
|
||||
|> List.sortByDescending snd
|
||||
|> List.map fst
|
||||
|
||||
let task14_church arr a b =
|
||||
arr |> List.filter (fun x -> x >= a && x <= b) |> List.length
|
||||
|
||||
let task14_list arr a b =
|
||||
arr |> List.filter (fun x -> x >= a && x <= b) |> List.length
|
||||
|
||||
let task24_church arr =
|
||||
let sorted = arr |> List.sortByDescending id
|
||||
[sorted.[0]; sorted.[1]]
|
||||
|
||||
let task24_list arr =
|
||||
let sorted = arr |> List.sortByDescending id
|
||||
[sorted.[0]; sorted.[1]]
|
||||
|
||||
let task34_church arr a b =
|
||||
arr |> List.filter (fun x -> x >= a && x <= b)
|
||||
|
||||
let task34_list arr a b =
|
||||
arr |> List.filter (fun x -> x >= a && x <= b)
|
||||
|
||||
let isInteger (x: float) = x = float (int x)
|
||||
|
||||
let task44_church (arr: float list) =
|
||||
let rec checkAlternating lst =
|
||||
match lst with
|
||||
| [] | [_] -> true
|
||||
| h1 :: h2 :: t ->
|
||||
let first = isInteger h1
|
||||
let second = isInteger h2
|
||||
if first <> second then checkAlternating (h2 :: t)
|
||||
else false
|
||||
checkAlternating arr
|
||||
|
||||
let task44_list (arr: float list) =
|
||||
let rec checkAlternating lst =
|
||||
match lst with
|
||||
| [] | [_] -> true
|
||||
| h1 :: h2 :: t ->
|
||||
let first = isInteger h1
|
||||
let second = isInteger h2
|
||||
if first <> second then checkAlternating (h2 :: t)
|
||||
else false
|
||||
checkAlternating arr
|
||||
|
||||
let task54_church arr =
|
||||
arr
|
||||
|> List.groupBy id
|
||||
|> List.filter (fun (_, occurrences) -> List.length occurrences > 3)
|
||||
|> List.map fst
|
||||
|
||||
let task54_list arr =
|
||||
arr
|
||||
|> List.groupBy id
|
||||
|> List.filter (fun (_, occurrences) -> List.length occurrences > 3)
|
||||
|> List.map fst
|
||||
|
||||
[<EntryPoint>]
|
||||
let main argv =
|
||||
let testArr = [3; 1; 4; 1; 5; 9; 2; 6]
|
||||
|
||||
printfn "Task 4 - Church: %A" (task4_church testArr)
|
||||
printfn "Task 4 - List: %A" (task4_list testArr)
|
||||
|
||||
printfn "Task 14 - Church: %d" (task14_church testArr 2 5)
|
||||
printfn "Task 14 - List: %d" (task14_list testArr 2 5)
|
||||
|
||||
printfn "Task 24 - Church: %A" (task24_church testArr)
|
||||
printfn "Task 24 - List: %A" (task24_list testArr)
|
||||
|
||||
printfn "Task 34 - Church: %A" (task34_church testArr 2 5)
|
||||
printfn "Task 34 - List: %A" (task34_list testArr 2 5)
|
||||
|
||||
let testFloatArr = [1.0; 2.5; 3.0; 4.7; 5.0]
|
||||
printfn "Task 44 - Church: %b" (task44_church testFloatArr)
|
||||
printfn "Task 44 - List: %b" (task44_list testFloatArr)
|
||||
|
||||
let testArr54 = [1; 2; 2; 3; 3; 3; 3; 4; 4; 4; 4; 4; 5]
|
||||
printfn "Task 54 - Church: %A" (task54_church testArr54)
|
||||
printfn "Task 54 - List: %A" (task54_list testArr54)
|
||||
|
||||
0
|
Loading…
Reference in new issue