Advertisement
Guest User

Untitled

a guest
Jun 4th, 2018
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 3.59 KB | None | 0 0
  1. open System
  2. open System.Runtime.InteropServices
  3.  
  4.  
  5. type prostytutka = {imie:string; wiek:int}
  6. let prost1 = {imie="Roksana"; wiek=21}
  7.  
  8. let rec suma (fl_list:list<float>) =
  9.     match fl_list with
  10.     | head :: tail ->  head + suma tail
  11.     | [] -> 0.0
  12.    
  13. let lista = [1.1; 1.2; 1.3]
  14.  
  15. let str = "XXX"
  16.  
  17. let rec zliczanie_znakow(st:string, ch:char, i:int, n:int) =
  18.  match i with
  19.  | 0 -> if st.[0] = ch then n+1 else n
  20.  | _ -> if st.[0] = ch then zliczanie_znakow(st, ch, i-1, n+1) else zliczanie_znakow(st, ch, i-1, n);
  21.  
  22.  
  23. let rec licz (str:string, znak:char) =
  24.    match str.Length with
  25.    | 0 -> 0
  26.    | _ -> if(str.[0] = znak)  then licz(str.[1..], znak) + 1  else licz(str.[1..], znak );
  27.  
  28.  
  29. let listaa = [1.1;2.2;3.3;1.0]
  30. let rec sumlist(lista:float list) =
  31.     match lista.Length with
  32.     | 0 -> 0.0
  33.     | _ -> sumlist(lista.[1..]) + lista.[0]
  34.  
  35.  
  36. let rec silnia(n) =
  37.     match n with
  38.     |0 |1 -> 1
  39.     |_ -> silnia(n-1) * n
  40.  
  41.  
  42. let rec potega(k, n) =
  43.     match n with
  44.     | 0.0 -> 1.0
  45.     | _ -> if n > 0.0 then potega(k, n-1.0) * k
  46.            else 1.0/potega(k, -n)
  47.  
  48. let rec wdol(n) =
  49.     match n with
  50.     | 0 -> []
  51.     | _ -> n::wdol(n-1)
  52.  
  53.  
  54. let  calkowite :int list= [1;2;3;4]
  55.  
  56. let rec sumator(lista : int list)  =
  57.     match lista.Length with
  58.     | 0 -> 0
  59.     | _ -> if ((lista.[0] % 2) = 0)
  60.             then sumator(lista.[1..]) + lista.[0]
  61.             else sumator(lista.[1..])
  62.  
  63.  
  64. let rec sum4(lista:float list) =
  65.     match lista with
  66.     | head::head2::head3::head4::tail -> (head+head2+head3+head4)::sum4(tail)
  67.     | head::head2::head3::tail -> (head+head2+head3)::sum4(tail)
  68.     | head::head2::tail -> head::sum4(tail)
  69.     | head::tail -> head::sum4(tail)
  70.     | [] -> []
  71.  
  72. let rec sum_head(lista) =
  73.     match lista with
  74.     | head :: tail -> sum_head(tail) + head
  75.     | _ -> 0
  76.  
  77. let rec zlicz_znak_own(str:string, ch:char) =
  78.     match str.Length with
  79.     | 0 -> 0
  80.     | _ -> if (str.[0] = ch) then 1 +  zlicz_znak_own(str.[1..], ch)  else zlicz_znak_own(str.[1..], ch)
  81.  
  82. let rec sumator_own(lista:float list) =
  83.     match lista.Length with
  84.     | 0 -> 0.0
  85.     | _ -> lista.[0] + sumator_own(lista.[1..] )
  86.  
  87.  
  88. let rec checkElementIfInList(f:float, lista2:float list) =
  89.     match lista2.Length with
  90.     | 0 -> false
  91.     | _ -> if (lista2.[0] = f) then true
  92.             else checkElementIfInList(f, lista2.[1..])
  93.  
  94. let rec intersec(lista1:float list,lista2:float list) =
  95.     match lista1.Length with
  96.     | 0 -> []
  97.     | _ -> if (checkElementIfInList(lista1.[0],lista2)) then lista1.[0]::intersec(lista1.[1..],lista2)
  98.              else intersec(lista1.[1..],lista2)
  99.  
  100. [<EntryPoint>]
  101. let main argv =
  102.     printfn "Suma %A" (suma(lista))
  103.     printfn "Zliczone iksy %A" (zliczanie_znakow(str, 'X' ,str.Length-1, 0))
  104.     printfn "Dane kurwy %A" (prost1)
  105.     printfn "Liczałka %A" (licz(str, 'X'))
  106.     printfn "Lista sumator %A" (sumlist(listaa))
  107.     (silnia(4)) |> printfn "Slnia  z 4: %A"
  108.     (potega(2.0, -3.0)) |> printfn "potega  2 do 3: %A"
  109.     (wdol(8)) |> printfn "odlicanie w dol: %A"
  110.     printfn "Suma parzystych %A"   (sumator(calkowite))
  111.     printfn "add3 %A"   (sum4(listaa))
  112.     printfn "sum by head::tail %A"   (sum_head(calkowite))
  113.     printfn "zlicza znak own =  %A"   (zlicz_znak_own("TwojaSara", 'a'))
  114.     printfn "sumator  own =  %A"   (sumator_own([1.1;2.2;3.3]))
  115.     let lista1 = [1.0;2.0;3.0;4.0;5.0]
  116.     let lista2 = [1.0;0.0;0.0;0.0;0.0;5.0;0.0;0.0;0.0;0.0;3.0]
  117.     let inter = intersec(lista1,lista2)
  118.     printfn "wpolne som 1 i 5 i 3  =  %A"  inter
  119.  
  120.  
  121.     ignore(Console.ReadKey(true))
  122.     0 // return an integer exit code
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement