Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let a = [1;2;3]
- let b = [1..10]
- let c = 9::[1..10] // оператор пары
- let d = 1::2::3::[]
- let e = List.head a
- let f = List.tail a
- let rec length list = match list with
- | [] -> 0
- | (x::xs) -> 1 + length xs
- //printfn "%d" (length c)
- let rec fac n = match n with
- | 0 -> 1
- | n -> n * fac (n-1)
- let rec append list1 list2 = // (@) list1 list2 или list1 @ list2
- match list1 with
- | [] -> list2
- | (x::xs) -> x::append xs list2
- //==============REVERSE==============================
- let rec reverse = function // "= function" это "list = match list with"
- | [] -> []
- | (x::xs) -> reverse xs @ [x]
- let reverse2 list =
- let rec rev acc = function
- | [] -> acc
- | (x::xs) -> rev (x::acc) xs
- rev [] list
- let reverse3 list =
- List.fold (fun st x -> x::st) [] list
- List.map (fun n -> n + 1) [1..3]
- //==========================PART 1.1(EXAMPLE 14, уже проверено)========================================
- let rec change (n:int) (value:int) = function
- | [] -> []
- | (x::xs) -> (if n = 1 then [value] @ xs else ([x] @ change (n-1) value xs))
- let change2 (n:int) (value:int) list =
- let rec ch (n:int) (value:int) acc = function
- | [] -> acc
- | (x::xs) -> (if n = 1 then (ch (n-1) value (acc @ [value]) xs) else (ch (n-1) value (acc @ [x]) xs))
- ch n value [] list
- let change3 (n:int) (value:int) list =
- List.mapi (fun i el -> (i + 1, el)) list |> List.map (fun (i, el) -> (if (i = n) then value else el))
- change3 5 100 c
- printfn "%A" (change2 5 100 c)
- //==========================PART 1.2(EXAMPLE 14)========================================
- let checkGeom1 list =
- if length list <= 1 then false else
- if List.head list = 0 then false else
- let rec ch q = function
- | (x::xs) ->
- if (xs = [])
- then (true)
- else
- if (List.head xs <> x * q)
- then (false)
- else (ch q xs)
- ch (list.[1] / list.[0]) list
- let rec last = function
- | hd :: [] -> hd
- | hd :: tl -> last tl
- let checkGeom2 list =
- if length list <= 1 then false else
- if List.head list = 0 then false else
- let rec check q beginning = function
- | [] -> true
- | (x::xs) ->
- if ( (beginning <> []) && (x <> ((last beginning) * q)) )
- then false
- else check q (beginning @ [x]) xs
- check (list.[1] / list.[0]) [] list
- (*let checkGeom3 list =
- let q = (List.zip list (List.tail list) |> List.map (fun (a,b) -> if (a = 0) then (false, 0) else (true, b/a))
- let qq = List.unzip q
- if length list <= 1 then true else
- if List.head list = 0 then false else
- ( (List.filter ((=) false) (fst qq)) = [] ) and
- ( (List.filter ((!=) ((snd qq).[0])) (snd qq)) = [] )
- *)
- let checkGeom3 list =
- if length list <= 1 then false else
- if List.head list = 0 then false else
- ( (List.map ((*) (list.[1] / list.[0])) list) = (List.tail list) @ [(List.rev list).[0] * (list.[1] / list.[0])] )
- let myCheck1 f =
- [
- f [](*F*);
- f [0](*F*);
- f [0;1](*F*);
- f [1;1](*T*);
- f [1;2;4;8](*T*);
- f [1;2;4;9](*F*);
- f [1;2;5;9](*F*);
- f [10;100;999](*F*);
- f [10;100;1001](*F*);
- f [10;100;1000](*T*);
- ]
- let myCheck2 f =
- [
- f [] = false;
- f [0] = false;
- f [0;1] = false;
- f [1;1] = true;
- f [1;2;4;8] = true;
- f [1;2;4;9] = false;
- f [1;2;5;9] = false;
- f [10;100;999] = false;
- f [10;100;1001] = false;
- f [10;100;1000] = true;
- ]
- myCheck1 checkGeom1
- myCheck2 checkGeom1
- myCheck1 checkGeom2
- myCheck2 checkGeom2
- myCheck1 checkGeom3
- myCheck2 checkGeom3
- //====================================================
- type student = {name:string; surname:string; sex:char; day:int; month:int; year:int; group:int; iq:int}
- let students = [{name="Максим"; surname="Чуркин"; sex='m'; day=13; month=12; year=1991; group=331; iq=100};
- {name="Вера"; surname="Аминова"; sex='f'; day=1; month=6; year=1991; group=331; iq=115};
- {name="Елизавета"; surname="Анохина"; sex='f'; day=27; month=2; year=1992; group=332; iq=105};
- {name="Дарья"; surname="Грекова"; sex='f'; day=18; month=3; year=1992; group=333; iq=106};
- {name="Иван"; surname="Демкович"; sex='m'; day=3; month=1; year=1993; group=331; iq=107};
- {name="Денис"; surname="Дубленых"; sex='m'; day=6; month=4; year=1991; group=334; iq=106};
- {name="Алексей"; surname="Королев"; sex='m'; day=24; month=5; year=1993; group=333; iq=114};
- {name="Вячеслав"; surname="Шапрынский"; sex='m'; day=28; month=11; year=1992; group=334; iq=103};
- {name="Владислав"; surname="Исенбаев"; sex='m'; day=11; month=10; year=1991; group=331; iq=103};
- {name="Дмитрий"; surname="Зонин"; sex='m'; day=10; month=4; year=1991; group=332; iq=108};
- {name="Дмитрий"; surname="Карпов"; sex='m'; day=9; month=8; year=1991; group=331; iq=108};
- {name="Александр"; surname="Голубев"; sex='m'; day=19; month=9; year=1992; group=332; iq=106};
- {name="Вадим"; surname="Шакуро"; sex='m'; day=5; month=1; year=1992; group=333; iq=108};
- {name="Сергей"; surname="Ларюшкин"; sex='m'; day=9; month=3; year=1993; group=333; iq=107};
- {name="Александр"; surname="Сухман"; sex='m'; day=20; month=2; year=1993; group=331; iq=115};
- {name="Кирилл"; surname="Корнюхин"; sex='m'; day=30; month=12; year=1992; group=332; iq=106};
- {name="Марина"; surname="Масленникова"; sex='f'; day=29; month=3; year=1990; group=332; iq=114};
- {name="Антон"; surname="Путрик"; sex='m'; day=2; month=11; year=1991; group=331; iq=107};
- {name="Максим"; surname="Путрик"; sex='m'; day=16; month=10; year=1991; group=332; iq=107};
- {name="Александр"; surname="Чегодаев"; sex='m'; day=12; month=9; year=1993; group=332; iq=105};
- {name="Виктор"; surname="Самунь"; sex='m'; day=19; month=7; year=1992; group=331; iq=108};
- {name="Дмитрий"; surname="Королев"; sex='m'; day=22; month=6; year=1991; group=333; iq=106};
- {name="Павел"; surname="Скрипниченко"; sex='m'; day=11; month=5; year=1991; group=331; iq=115};
- {name="Александр"; surname="Топоров"; sex='m'; day=4; month=11; year=1991; group=334; iq=102};
- {name="Елена"; surname="Шалашугина"; sex='f'; day=5; month=12; year=1992; group=331; iq=105};
- {name="Денис"; surname="Ядаринкин"; sex='m'; day=17; month=8; year=1992; group=331; iq=103};
- {name="Даниил"; surname="Айзенштейн"; sex='m'; day=15; month=5; year=1993; group=331; iq=105};
- {name="Вера"; surname="Аминова"; sex='f'; day=26; month=4; year=1993; group=332; iq=106};
- {name="Ксения"; surname="Афоненко"; sex='f'; day=18; month=3; year=1993; group=332; iq=103};
- {name="Илья"; surname="Дегтярев"; sex='m'; day=28; month=2; year=1992; group=333; iq=106};
- {name="Дмитрий"; surname="Зонин"; sex='m'; day=22; month=1; year=1992; group=331; iq=106};
- {name="Мария"; surname="Колмогорова"; sex='f'; day=21; month=9; year=1991; group=333; iq=103};
- {name="Виктор"; surname="Самунь"; sex='m'; day=7; month=7; year=1992; group=331; iq=109};
- {name="Олег"; surname="Михайлов"; sex='m'; day=6; month=11; year=1992; group=331; iq=107};
- {name="Григорий"; surname="Семенов"; sex='m'; day=14; month=10; year=1989; group=334; iq=102};
- {name="Иван"; surname="Кадочников"; sex='m'; day=22; month=7; year=1993; group=334; iq=103};
- {name="Алексей"; surname="Королев"; sex='m'; day=15; month=6; year=1991; group=331; iq=102};
- {name="Алексей"; surname="Кутырев"; sex='m'; day=1; month=5; year=1991; group=331; iq=111};
- {name="Елена"; surname="Лысенко"; sex='f'; day=28; month=1; year=1990; group=333; iq=107};
- {name="Антон"; surname="Путрик"; sex='m'; day=23; month=11; year=1992; group=333; iq=107};
- {name="Илья"; surname="Отрадников"; sex='m'; day=15; month=3; year=1992; group=331; iq=115};
- {name="Анна"; surname="Уставщикова"; sex='f'; day=10; month=2; year=1991; group=334; iq=100};
- {name="Борис"; surname="Сафронов"; sex='m'; day=20; month=8; year=1993; group=334; iq=105};
- {name="Надежда"; surname="Скачкова"; sex='f'; day=1; month=12; year=1991; group=331; iq=111};
- {name="Владимир"; surname="Теличкин"; sex='m'; day=8; month=7; year=1991; group=331; iq=114};
- {name="Иван"; surname="Турмышев"; sex='m'; day=7; month=5; year=1992; group=332; iq=107};
- {name="Евгений"; surname="Кузнецов"; sex='m'; day=4; month=11; year=1992; group=331; iq=108};
- {name="Сергей"; surname="Зайков"; sex='m'; day=3; month=8; year=1991; group=331; iq=108};
- {name="Юлия"; surname="Буркова"; sex='f'; day=13; month=3; year=1991; group=331; iq=109};
- {name="Юрий"; surname="Старовойтов"; sex='m'; day=12; month=4; year=1993; group=334; iq=102};
- {name="Яков"; surname="Мозгоев"; sex='m'; day=10; month=9; year=1991; group=332; iq=107};
- {name="Елена"; surname="Михайлова"; sex='f'; day=27; month=12; year=1993; group=334; iq=111};
- {name="Егор"; surname="Игнатьев"; sex='m'; day=26; month=9; year=1992; group=333; iq=107};
- {name="Сергей"; surname="Торопкин"; sex='m'; day=21; month=4; year=1991; group=331; iq=101};
- {name="Татьяна"; surname="Елисеева"; sex='f'; day=25; month=6; year=1991; group=333; iq=100};
- {name="Адель"; surname="Аухатова"; sex='f'; day=12; month=3; year=1991; group=332; iq=105};
- {name="Алексей"; surname="Ефремов"; sex='m'; day=19; month=2; year=1993; group=334; iq=105};
- {name="Диана"; surname="Таратухина"; sex='f'; day=17; month=1; year=1992; group=334; iq=102};
- {name="Ростислав"; surname="Девятов"; sex='m'; day=5; month=8; year=1992; group=334; iq=108};
- {name="Антон"; surname="Васильев"; sex='m'; day=2; month=5; year=1991; group=332; iq=112};
- {name="Антон"; surname="Махлин"; sex='m'; day=8; month=4; year=1990; group=332; iq=109};
- {name="Елена"; surname="Третьяк"; sex='f'; day=16; month=3; year=1993; group=333; iq=105};
- {name="Игорь"; surname="Гуламов"; sex='m'; day=25; month=6; year=1991; group=333; iq=105};
- {name="Илья"; surname="Корнаков"; sex='m'; day=22; month=12; year=1992; group=333; iq=101};
- {name="Владимир"; surname="Батаев"; sex='m'; day=10; month=10; year=1991; group=334; iq=102};
- {name="Арсений"; surname="Климовский"; sex='m'; day=4; month=5; year=1991; group=331; iq=102};
- {name="Федор"; surname="Пахомов"; sex='m'; day=17; month=3; year=1993; group=334; iq=107};
- {name="Виктор"; surname="Алюшин"; sex='m'; day=10; month=12; year=1993; group=334; iq=101};
- {name="Игорь"; surname="Махлин"; sex='m'; day=28; month=1; year=1992; group=332; iq=108};
- {name="Иван"; surname="Козлов"; sex='m'; day=21; month=8; year=1991; group=332; iq=111};
- {name="Вадим"; surname="Авдеев"; sex='m'; day=11; month=3; year=1992; group=333; iq=111};
- {name="Антон"; surname="Фонарев"; sex='m'; day=3; month=9; year=1991; group=332; iq=107};
- {name="Андрей"; surname="Колосов"; sex='m'; day=1; month=7; year=1991; group=332; iq=107};
- {name="Марина"; surname="Степанова"; sex='f'; day=9; month=11; year=1992; group=334; iq=104};
- {name="Матвей"; surname="Корнилов"; sex='m'; day=7; month=10; year=1993; group=334; iq=105};
- {name="Яков"; surname="Длугач"; sex='m'; day=5; month=5; year=1991; group=333; iq=109};
- {name="Игорь"; surname="Туркин"; sex='m'; day=4; month=5; year=1991; group=333; iq=109};
- {name="Олег"; surname="Самойленко"; sex='m'; day=1; month=8; year=1992; group=332; iq=107};
- {name="Екатерина"; surname="Самбукова"; sex='f'; day=15; month=3; year=1993; group=334; iq=104};
- {name="Дмитрий"; surname="Алексеев"; sex='m'; day=25; month=2; year=1992; group=334; iq=104};
- {name="Павел"; surname="Ющенко"; sex='m'; day=21; month=10; year=1990; group=334; iq=108};
- {name="Иван"; surname="Дудинов"; sex='m'; day=22; month=12; year=1991; group=331; iq=108};
- {name="Виктор"; surname="Чернышов"; sex='m'; day=16; month=4; year=1991; group=331; iq=99};
- {name="Антон"; surname="Лупанов"; sex='m'; day=11; month=12; year=1993; group=333; iq=108};
- {name="Иван"; surname="Пузыревский"; sex='m'; day=6; month=1; year=1991; group=333; iq=99};
- {name="Александр"; surname="Петров"; sex='m'; day=20; month=1; year=1992; group=332; iq=107};
- {name="Леонид"; surname="Андриевский"; sex='m'; day=17; month=7; year=1990; group=334; iq=107};
- {name="Александр"; surname="Рощупкин"; sex='m'; day=1; month=3; year=1991; group=333; iq=98};
- {name="Александр"; surname="Корчагин"; sex='m'; day=15; month=7; year=1991; group=334; iq=112};
- {name="Кирилл"; surname="Жалнин"; sex='m'; day=10; month=8; year=1992; group=332; iq=104};
- {name="Дмитрий"; surname="Горбик"; sex='m'; day=13; month=6; year=1991; group=332; iq=104};
- {name="Антон"; surname="Бобков"; sex='m'; day=27; month=2; year=1991; group=333; iq=104};
- {name="Константин"; surname="Новиков"; sex='m'; day=22; month=10; year=1993; group=332; iq=101};
- {name="Владимир"; surname="Ткачев"; sex='m'; day=21; month=1; year=1992; group=334; iq=94};
- {name="Иван"; surname="Кондрашов"; sex='m'; day=6; month=5; year=1994; group=331; iq=104};
- {name="Данила"; surname="Потапов"; sex='m'; day=23; month=6; year=1991; group=332; iq=104};
- {name="Борис"; surname="Агафонцев"; sex='m'; day=13; month=4; year=1993; group=334; iq=135};
- {name="Алексей"; surname="Давыдов"; sex='m'; day=7; month=7; year=1993; group=333; iq=103};
- {name="Денис"; surname="Лисов"; sex='m'; day=4; month=12; year=1990; group=333; iq=108};
- {name="Иван"; surname="Богатый"; sex='m'; day=14; month=4; year=1991; group=333; iq=107};
- {name="Мария"; surname="Фелицина"; sex='f'; day=18; month=2; year=1990; group=333; iq=104};
- {name="Андрей"; surname="Викулов"; sex='m'; day=2; month=2; year=1993; group=332; iq=107};
- {name="Алексей"; surname="Крицин"; sex='m'; day=22; month=12; year=1991; group=332; iq=107};
- {name="Артем"; surname="Кухаренко"; sex='m'; day=26; month=7; year=1990; group=332; iq=103};
- {name="Сергей"; surname="Аноховский"; sex='m'; day=30; month=4; year=1993; group=331; iq=103};
- {name="Александр"; surname="Захаров"; sex='m'; day=29; month=12; year=1991; group=332; iq=103};
- {name="Андрей"; surname="Котов"; sex='m'; day=28; month=10; year=1991; group=333; iq=111};
- {name="Кирилл"; surname="Знаменский"; sex='m'; day=30; month=9; year=1993; group=334; iq=103};
- {name="Владимир"; surname="Лесниченко"; sex='m'; day=31; month=8; year=1993; group=334; iq=103};
- {name="Илья"; surname="Смирнов"; sex='m'; day=31; month=7; year=1991; group=331; iq=108};
- {name="Александр"; surname="Колесников"; sex='m'; day=31; month=3; year=1991; group=334; iq=101};
- {name="Николай"; surname="Печенкин"; sex='m'; day=13; month=11; year=1991; group=333; iq=115};
- {name="Игнат"; surname="Колесниченко"; sex='m'; day=29; month=7; year=1990; group=332; iq=101};
- {name="Алена"; surname="Шевцова"; sex='f'; day=30; month=2; year=1993; group=334; iq=106};
- {name="Федор"; surname="Волков"; sex='m'; day=30; month=3; year=1993; group=333; iq=107};
- {name="Константин"; surname="Яблочкин"; sex='m'; day=9; month=1; year=1990; group=334; iq=109};
- {name="Алексей"; surname="Окунев"; sex='m'; day=31; month=12; year=1991; group=334; iq=107};
- {name="Татьяна"; surname="Поиленкова"; sex='f'; day=31; month=7; year=1991; group=334; iq=101};
- {name="Ольга"; surname="Пакуляк"; sex='f'; day=31; month=3; year=1991; group=333; iq=108};
- {name="Элина"; surname="Имашева"; sex='f'; day=31; month=5; year=1993; group=333; iq=108};
- {name="Алексей"; surname="Гронский"; sex='m'; day=30; month=7; year=1989; group=332; iq=109};
- {name="Мария"; surname="Гребенкина"; sex='f'; day=31; month=12; year=1991; group=332; iq=106}
- ]
- let rec qsortVariant1 (xs:List<student>) =
- let smaller = xs |> List.filter(fun e -> e.iq < xs.Head.iq)
- let middle = xs |> List.filter(fun e -> e.iq = xs.Head.iq)
- let larger = xs |> List.filter(fun e -> e.iq > xs.Head.iq)
- match xs with
- | [] -> []
- | _ -> qsortVariant1(smaller) @ middle @ qsortVariant1(larger)
- let rec qsortVariant2 xs =
- match xs with
- | [] -> []
- | x::tail ->
- let smaller = tail |> List.filter(fun e -> e.iq <= x.iq) |> qsortVariant2
- let larger = tail |> List.filter(fun e -> e.iq > x.iq) |> qsortVariant2
- smaller @ [x] @ larger
- List.iteri (fun i x -> printfn "%d. %s" i (x.surname+" "+x.name+" "+string(x.iq))) (qsortVariant1 students)
- List.iteri (fun i x -> printfn "%d. %s" i (x.surname+" "+x.name+" "+string(x.iq))) (qsortVariant2 students)
- let myCmp (x:student) (y:student) =
- if x.iq > y.iq then 1 else
- if x.iq < y.iq then -1 else
- 0
- List.iteri (fun i x -> printfn "%d. %s" i (x.surname+" "+x.name+" "+string(x.iq))) (List.sortWith myCmp students)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement