Advertisement
Guest User

Renat Bashirov

a guest
Mar 6th, 2014
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 19.80 KB | None | 0 0
  1. let a = [1;2;3]
  2. let b = [1..10]
  3.  
  4. let c = 9::[1..10] // оператор пары
  5.  
  6. let d = 1::2::3::[]
  7.  
  8. let e = List.head a
  9. let f = List.tail a
  10.  
  11.  
  12. let rec length list = match list with
  13.     | [] -> 0
  14.     | (x::xs) -> 1 + length xs
  15.    
  16. //printfn "%d" (length c)
  17.  
  18. let rec fac n = match n with
  19.    | 0 -> 1
  20.    | n -> n * fac (n-1)
  21.    
  22. let rec append list1 list2 = // (@) list1 list2 или list1 @ list2
  23.     match list1 with
  24.     | [] -> list2
  25.     | (x::xs) -> x::append xs list2
  26.  
  27.  
  28. //==============REVERSE==============================    
  29. let rec reverse = function // "= function" это "list = match list with"
  30.     | [] -> []
  31.     | (x::xs) -> reverse xs @ [x]
  32.  
  33. let reverse2 list =
  34.     let rec rev acc = function
  35.         | [] -> acc
  36.         | (x::xs) -> rev (x::acc) xs
  37.     rev [] list
  38.    
  39. let reverse3 list =
  40.     List.fold (fun st x -> x::st) [] list
  41.  
  42. List.map (fun n -> n + 1) [1..3]
  43.  
  44. //==========================PART 1.1(EXAMPLE 14, уже проверено)========================================
  45. let rec change (n:int) (value:int) = function
  46.     | [] -> []
  47.     | (x::xs) -> (if n = 1 then [value] @ xs else ([x] @ change (n-1) value xs))
  48.    
  49. let change2 (n:int) (value:int) list =
  50.     let rec ch (n:int) (value:int) acc = function
  51.         | [] -> acc
  52.         | (x::xs) -> (if n = 1 then (ch (n-1) value (acc @ [value]) xs) else (ch (n-1) value (acc @ [x]) xs))
  53.     ch n value [] list
  54.  
  55. let change3 (n:int) (value:int) list =
  56.     List.mapi (fun i el -> (i + 1, el)) list |> List.map (fun (i, el) -> (if (i = n) then value else el))
  57.    
  58. change3 5 100 c
  59.  
  60. printfn "%A" (change2 5 100 c)
  61.  
  62. //==========================PART 1.2(EXAMPLE 14)========================================
  63. let checkGeom1 list =
  64.     if length list <= 1 then false else
  65.     if List.head list = 0 then false else
  66.     let rec ch q = function
  67.         | (x::xs) ->
  68.             if (xs = [])
  69.             then (true)
  70.             else
  71.               if (List.head xs <> x * q)
  72.               then (false)
  73.               else (ch q xs)
  74.     ch (list.[1] / list.[0]) list
  75.            
  76. let rec last = function
  77.     | hd :: [] -> hd
  78.     | hd :: tl -> last tl
  79. let checkGeom2 list =
  80.     if length list <= 1 then false else
  81.     if List.head list = 0 then false else
  82.     let rec check q beginning = function
  83.        | [] -> true
  84.        | (x::xs) ->
  85.             if ( (beginning <> []) && (x <> ((last beginning) * q)) )
  86.             then false
  87.             else check q (beginning @ [x]) xs
  88.     check (list.[1] / list.[0]) [] list
  89.  
  90. (*let checkGeom3 list =
  91.     let q = (List.zip list (List.tail list) |> List.map (fun (a,b) -> if (a = 0) then (false, 0) else (true, b/a))
  92.     let qq = List.unzip q
  93.     if length list <= 1 then true else
  94.     if List.head list = 0 then false else
  95.     ( (List.filter ((=) false) (fst qq)) = [] ) and
  96.     ( (List.filter ((!=) ((snd qq).[0])) (snd qq)) = [] )
  97. *)
  98.  
  99. let checkGeom3 list =
  100.     if length list <= 1 then false else
  101.     if List.head list = 0 then false else
  102.         ( (List.map ((*) (list.[1] / list.[0])) list) = (List.tail list) @ [(List.rev list).[0] * (list.[1] / list.[0])] )
  103.  
  104.  
  105.  
  106. let myCheck1 f =
  107.     [
  108.     f [](*F*);
  109.     f [0](*F*);
  110.     f [0;1](*F*);
  111.     f [1;1](*T*);
  112.     f [1;2;4;8](*T*);
  113.     f [1;2;4;9](*F*);
  114.     f [1;2;5;9](*F*);
  115.     f [10;100;999](*F*);
  116.     f [10;100;1001](*F*);
  117.     f [10;100;1000](*T*);
  118.     ]
  119.  
  120. let myCheck2 f =
  121.     [
  122.     f [] = false;
  123.     f [0] = false;
  124.     f [0;1] = false;
  125.     f [1;1] = true;
  126.     f [1;2;4;8] = true;
  127.     f [1;2;4;9] = false;
  128.     f [1;2;5;9] = false;
  129.     f [10;100;999] = false;
  130.     f [10;100;1001] = false;
  131.     f [10;100;1000] = true;
  132.     ]
  133.  
  134. myCheck1 checkGeom1
  135. myCheck2 checkGeom1
  136. myCheck1 checkGeom2
  137. myCheck2 checkGeom2
  138. myCheck1 checkGeom3
  139. myCheck2 checkGeom3
  140. //====================================================
  141.    
  142.    
  143. type student = {name:string; surname:string; sex:char; day:int; month:int; year:int; group:int; iq:int}
  144. let students = [{name="Максим"; surname="Чуркин"; sex='m'; day=13; month=12; year=1991; group=331; iq=100};
  145.                  {name="Вера"; surname="Аминова"; sex='f'; day=1; month=6; year=1991; group=331; iq=115};
  146.                  {name="Елизавета"; surname="Анохина"; sex='f'; day=27; month=2; year=1992; group=332; iq=105};
  147.                  {name="Дарья"; surname="Грекова"; sex='f'; day=18; month=3; year=1992; group=333; iq=106};
  148.                  {name="Иван"; surname="Демкович"; sex='m'; day=3; month=1; year=1993; group=331; iq=107};
  149.                  {name="Денис"; surname="Дубленых"; sex='m'; day=6; month=4; year=1991; group=334; iq=106};
  150.                  {name="Алексей"; surname="Королев"; sex='m'; day=24; month=5; year=1993; group=333; iq=114};
  151.                  {name="Вячеслав"; surname="Шапрынский"; sex='m'; day=28; month=11; year=1992; group=334; iq=103};
  152.                  {name="Владислав"; surname="Исенбаев"; sex='m'; day=11; month=10; year=1991; group=331; iq=103};
  153.                  {name="Дмитрий"; surname="Зонин"; sex='m'; day=10; month=4; year=1991; group=332; iq=108};
  154.                  {name="Дмитрий"; surname="Карпов"; sex='m'; day=9; month=8; year=1991; group=331; iq=108};
  155.                  {name="Александр"; surname="Голубев"; sex='m'; day=19; month=9; year=1992; group=332; iq=106};
  156.                  {name="Вадим"; surname="Шакуро"; sex='m'; day=5; month=1; year=1992; group=333; iq=108};
  157.                  {name="Сергей"; surname="Ларюшкин"; sex='m'; day=9; month=3; year=1993; group=333; iq=107};
  158.                  {name="Александр"; surname="Сухман"; sex='m'; day=20; month=2; year=1993; group=331; iq=115};
  159.                  {name="Кирилл"; surname="Корнюхин"; sex='m'; day=30; month=12; year=1992; group=332; iq=106};
  160.                  {name="Марина"; surname="Масленникова"; sex='f'; day=29; month=3; year=1990; group=332; iq=114};
  161.                  {name="Антон"; surname="Путрик"; sex='m'; day=2; month=11; year=1991; group=331; iq=107};
  162.                  {name="Максим"; surname="Путрик"; sex='m'; day=16; month=10; year=1991; group=332; iq=107};
  163.                  {name="Александр"; surname="Чегодаев"; sex='m'; day=12; month=9; year=1993; group=332; iq=105};
  164.                  {name="Виктор"; surname="Самунь"; sex='m'; day=19; month=7; year=1992; group=331; iq=108};
  165.                  {name="Дмитрий"; surname="Королев"; sex='m'; day=22; month=6; year=1991; group=333; iq=106};
  166.                  {name="Павел"; surname="Скрипниченко"; sex='m'; day=11; month=5; year=1991; group=331; iq=115};
  167.                  {name="Александр"; surname="Топоров"; sex='m'; day=4; month=11; year=1991; group=334; iq=102};
  168.                  {name="Елена"; surname="Шалашугина"; sex='f'; day=5; month=12; year=1992; group=331; iq=105};
  169.                  {name="Денис"; surname="Ядаринкин"; sex='m'; day=17; month=8; year=1992; group=331; iq=103};
  170.                  {name="Даниил"; surname="Айзенштейн"; sex='m'; day=15; month=5; year=1993; group=331; iq=105};
  171.                  {name="Вера"; surname="Аминова"; sex='f'; day=26; month=4; year=1993; group=332; iq=106};
  172.                  {name="Ксения"; surname="Афоненко"; sex='f'; day=18; month=3; year=1993; group=332; iq=103};
  173.                  {name="Илья"; surname="Дегтярев"; sex='m'; day=28; month=2; year=1992; group=333; iq=106};
  174.                  {name="Дмитрий"; surname="Зонин"; sex='m'; day=22; month=1; year=1992; group=331; iq=106};
  175.                  {name="Мария"; surname="Колмогорова"; sex='f'; day=21; month=9; year=1991; group=333; iq=103};
  176.                  {name="Виктор"; surname="Самунь"; sex='m'; day=7; month=7; year=1992; group=331; iq=109};
  177.                  {name="Олег"; surname="Михайлов"; sex='m'; day=6; month=11; year=1992; group=331; iq=107};
  178.                  {name="Григорий"; surname="Семенов"; sex='m'; day=14; month=10; year=1989; group=334; iq=102};
  179.                  {name="Иван"; surname="Кадочников"; sex='m'; day=22; month=7; year=1993; group=334; iq=103};
  180.                  {name="Алексей"; surname="Королев"; sex='m'; day=15; month=6; year=1991; group=331; iq=102};
  181.                  {name="Алексей"; surname="Кутырев"; sex='m'; day=1; month=5; year=1991; group=331; iq=111};
  182.                  {name="Елена"; surname="Лысенко"; sex='f'; day=28; month=1; year=1990; group=333; iq=107};
  183.                  {name="Антон"; surname="Путрик"; sex='m'; day=23; month=11; year=1992; group=333; iq=107};
  184.                  {name="Илья"; surname="Отрадников"; sex='m'; day=15; month=3; year=1992; group=331; iq=115};
  185.                  {name="Анна"; surname="Уставщикова"; sex='f'; day=10; month=2; year=1991; group=334; iq=100};
  186.                  {name="Борис"; surname="Сафронов"; sex='m'; day=20; month=8; year=1993; group=334; iq=105};
  187.                  {name="Надежда"; surname="Скачкова"; sex='f'; day=1; month=12; year=1991; group=331; iq=111};
  188.                  {name="Владимир"; surname="Теличкин"; sex='m'; day=8; month=7; year=1991; group=331; iq=114};
  189.                  {name="Иван"; surname="Турмышев"; sex='m'; day=7; month=5; year=1992; group=332; iq=107};
  190.                  {name="Евгений"; surname="Кузнецов"; sex='m'; day=4; month=11; year=1992; group=331; iq=108};
  191.                  {name="Сергей"; surname="Зайков"; sex='m'; day=3; month=8; year=1991; group=331; iq=108};
  192.                  {name="Юлия"; surname="Буркова"; sex='f'; day=13; month=3; year=1991; group=331; iq=109};
  193.                  {name="Юрий"; surname="Старовойтов"; sex='m'; day=12; month=4; year=1993; group=334; iq=102};
  194.                  {name="Яков"; surname="Мозгоев"; sex='m'; day=10; month=9; year=1991; group=332; iq=107};
  195.                  {name="Елена"; surname="Михайлова"; sex='f'; day=27; month=12; year=1993; group=334; iq=111};
  196.                  {name="Егор"; surname="Игнатьев"; sex='m'; day=26; month=9; year=1992; group=333; iq=107};
  197.                  {name="Сергей"; surname="Торопкин"; sex='m'; day=21; month=4; year=1991; group=331; iq=101};
  198.                  {name="Татьяна"; surname="Елисеева"; sex='f'; day=25; month=6; year=1991; group=333; iq=100};
  199.                  {name="Адель"; surname="Аухатова"; sex='f'; day=12; month=3; year=1991; group=332; iq=105};
  200.                  {name="Алексей"; surname="Ефремов"; sex='m'; day=19; month=2; year=1993; group=334; iq=105};
  201.                  {name="Диана"; surname="Таратухина"; sex='f'; day=17; month=1; year=1992; group=334; iq=102};
  202.                  {name="Ростислав"; surname="Девятов"; sex='m'; day=5; month=8; year=1992; group=334; iq=108};
  203.                  {name="Антон"; surname="Васильев"; sex='m'; day=2; month=5; year=1991; group=332; iq=112};
  204.                  {name="Антон"; surname="Махлин"; sex='m'; day=8; month=4; year=1990; group=332; iq=109};
  205.                  {name="Елена"; surname="Третьяк"; sex='f'; day=16; month=3; year=1993; group=333; iq=105};
  206.                  {name="Игорь"; surname="Гуламов"; sex='m'; day=25; month=6; year=1991; group=333; iq=105};
  207.                  {name="Илья"; surname="Корнаков"; sex='m'; day=22; month=12; year=1992; group=333; iq=101};
  208.                  {name="Владимир"; surname="Батаев"; sex='m'; day=10; month=10; year=1991; group=334; iq=102};
  209.                  {name="Арсений"; surname="Климовский"; sex='m'; day=4; month=5; year=1991; group=331; iq=102};
  210.                  {name="Федор"; surname="Пахомов"; sex='m'; day=17; month=3; year=1993; group=334; iq=107};
  211.                  {name="Виктор"; surname="Алюшин"; sex='m'; day=10; month=12; year=1993; group=334; iq=101};
  212.                  {name="Игорь"; surname="Махлин"; sex='m'; day=28; month=1; year=1992; group=332; iq=108};
  213.                  {name="Иван"; surname="Козлов"; sex='m'; day=21; month=8; year=1991; group=332; iq=111};
  214.                  {name="Вадим"; surname="Авдеев"; sex='m'; day=11; month=3; year=1992; group=333; iq=111};
  215.                  {name="Антон"; surname="Фонарев"; sex='m'; day=3; month=9; year=1991; group=332; iq=107};
  216.                  {name="Андрей"; surname="Колосов"; sex='m'; day=1; month=7; year=1991; group=332; iq=107};
  217.                  {name="Марина"; surname="Степанова"; sex='f'; day=9; month=11; year=1992; group=334; iq=104};
  218.                  {name="Матвей"; surname="Корнилов"; sex='m'; day=7; month=10; year=1993; group=334; iq=105};
  219.                  {name="Яков"; surname="Длугач"; sex='m'; day=5; month=5; year=1991; group=333; iq=109};
  220.                  {name="Игорь"; surname="Туркин"; sex='m'; day=4; month=5; year=1991; group=333; iq=109};
  221.                  {name="Олег"; surname="Самойленко"; sex='m'; day=1; month=8; year=1992; group=332; iq=107};
  222.                  {name="Екатерина"; surname="Самбукова"; sex='f'; day=15; month=3; year=1993; group=334; iq=104};
  223.                  {name="Дмитрий"; surname="Алексеев"; sex='m'; day=25; month=2; year=1992; group=334; iq=104};
  224.                  {name="Павел"; surname="Ющенко"; sex='m'; day=21; month=10; year=1990; group=334; iq=108};
  225.                  {name="Иван"; surname="Дудинов"; sex='m'; day=22; month=12; year=1991; group=331; iq=108};
  226.                  {name="Виктор"; surname="Чернышов"; sex='m'; day=16; month=4; year=1991; group=331; iq=99};
  227.                  {name="Антон"; surname="Лупанов"; sex='m'; day=11; month=12; year=1993; group=333; iq=108};
  228.                  {name="Иван"; surname="Пузыревский"; sex='m'; day=6; month=1; year=1991; group=333; iq=99};
  229.                  {name="Александр"; surname="Петров"; sex='m'; day=20; month=1; year=1992; group=332; iq=107};
  230.                  {name="Леонид"; surname="Андриевский"; sex='m'; day=17; month=7; year=1990; group=334; iq=107};
  231.                  {name="Александр"; surname="Рощупкин"; sex='m'; day=1; month=3; year=1991; group=333; iq=98};
  232.                  {name="Александр"; surname="Корчагин"; sex='m'; day=15; month=7; year=1991; group=334; iq=112};
  233.                  {name="Кирилл"; surname="Жалнин"; sex='m'; day=10; month=8; year=1992; group=332; iq=104};
  234.                  {name="Дмитрий"; surname="Горбик"; sex='m'; day=13; month=6; year=1991; group=332; iq=104};
  235.                  {name="Антон"; surname="Бобков"; sex='m'; day=27; month=2; year=1991; group=333; iq=104};
  236.                  {name="Константин"; surname="Новиков"; sex='m'; day=22; month=10; year=1993; group=332; iq=101};
  237.                  {name="Владимир"; surname="Ткачев"; sex='m'; day=21; month=1; year=1992; group=334; iq=94};
  238.                  {name="Иван"; surname="Кондрашов"; sex='m'; day=6; month=5; year=1994; group=331; iq=104};
  239.                  {name="Данила"; surname="Потапов"; sex='m'; day=23; month=6; year=1991; group=332; iq=104};
  240.                  {name="Борис"; surname="Агафонцев"; sex='m'; day=13; month=4; year=1993; group=334; iq=135};
  241.                  {name="Алексей"; surname="Давыдов"; sex='m'; day=7; month=7; year=1993; group=333; iq=103};
  242.                  {name="Денис"; surname="Лисов"; sex='m'; day=4; month=12; year=1990; group=333; iq=108};
  243.                  {name="Иван"; surname="Богатый"; sex='m'; day=14; month=4; year=1991; group=333; iq=107};
  244.                  {name="Мария"; surname="Фелицина"; sex='f'; day=18; month=2; year=1990; group=333; iq=104};
  245.                  {name="Андрей"; surname="Викулов"; sex='m'; day=2; month=2; year=1993; group=332; iq=107};
  246.                  {name="Алексей"; surname="Крицин"; sex='m'; day=22; month=12; year=1991; group=332; iq=107};
  247.                  {name="Артем"; surname="Кухаренко"; sex='m'; day=26; month=7; year=1990; group=332; iq=103};
  248.                  {name="Сергей"; surname="Аноховский"; sex='m'; day=30; month=4; year=1993; group=331; iq=103};
  249.                  {name="Александр"; surname="Захаров"; sex='m'; day=29; month=12; year=1991; group=332; iq=103};
  250.                  {name="Андрей"; surname="Котов"; sex='m'; day=28; month=10; year=1991; group=333; iq=111};
  251.                  {name="Кирилл"; surname="Знаменский"; sex='m'; day=30; month=9; year=1993; group=334; iq=103};
  252.                  {name="Владимир"; surname="Лесниченко"; sex='m'; day=31; month=8; year=1993; group=334; iq=103};
  253.                  {name="Илья"; surname="Смирнов"; sex='m'; day=31; month=7; year=1991; group=331; iq=108};
  254.                  {name="Александр"; surname="Колесников"; sex='m'; day=31; month=3; year=1991; group=334; iq=101};
  255.                  {name="Николай"; surname="Печенкин"; sex='m'; day=13; month=11; year=1991; group=333; iq=115};
  256.                  {name="Игнат"; surname="Колесниченко"; sex='m'; day=29; month=7; year=1990; group=332; iq=101};
  257.                  {name="Алена"; surname="Шевцова"; sex='f'; day=30; month=2; year=1993; group=334; iq=106};
  258.                  {name="Федор"; surname="Волков"; sex='m'; day=30; month=3; year=1993; group=333; iq=107};
  259.                  {name="Константин"; surname="Яблочкин"; sex='m'; day=9; month=1; year=1990; group=334; iq=109};
  260.                  {name="Алексей"; surname="Окунев"; sex='m'; day=31; month=12; year=1991; group=334; iq=107};
  261.                  {name="Татьяна"; surname="Поиленкова"; sex='f'; day=31; month=7; year=1991; group=334; iq=101};
  262.                  {name="Ольга"; surname="Пакуляк"; sex='f'; day=31; month=3; year=1991; group=333; iq=108};
  263.                  {name="Элина"; surname="Имашева"; sex='f'; day=31; month=5; year=1993; group=333; iq=108};
  264.                  {name="Алексей"; surname="Гронский"; sex='m'; day=30; month=7; year=1989; group=332; iq=109};
  265.                  {name="Мария"; surname="Гребенкина"; sex='f'; day=31; month=12; year=1991; group=332; iq=106}
  266.                  ]
  267.  
  268. let rec qsortVariant1 (xs:List<student>) =
  269.     let smaller = xs |> List.filter(fun e -> e.iq < xs.Head.iq)
  270.     let middle = xs |> List.filter(fun e -> e.iq = xs.Head.iq)
  271.     let larger = xs |> List.filter(fun e -> e.iq > xs.Head.iq)
  272.     match xs with
  273.     | [] -> []
  274.     | _ -> qsortVariant1(smaller) @ middle @ qsortVariant1(larger)
  275.  
  276. let rec qsortVariant2 xs =
  277.    match xs with
  278.     | [] -> []
  279.     | x::tail ->
  280.         let smaller = tail |> List.filter(fun e -> e.iq <= x.iq) |> qsortVariant2
  281.         let larger = tail |> List.filter(fun e -> e.iq > x.iq) |> qsortVariant2
  282.         smaller @ [x] @ larger
  283.  
  284.  
  285.  
  286.  
  287. List.iteri (fun i x -> printfn "%d. %s" i (x.surname+" "+x.name+" "+string(x.iq))) (qsortVariant1 students)
  288. List.iteri (fun i x -> printfn "%d. %s" i (x.surname+" "+x.name+" "+string(x.iq))) (qsortVariant2 students)
  289. let myCmp (x:student) (y:student) =
  290.    if x.iq > y.iq then 1 else
  291.    if x.iq < y.iq then -1 else
  292.    0
  293. 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