Advertisement
Guest User

Untitled

a guest
Jun 3rd, 2016
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 2.25 KB | None | 0 0
  1. // Learn more about F# at http://fsharp.net
  2. // See the 'F# Tutorial' project for more help.
  3. open System
  4. (* Zadanie (----1----)
  5. Zrealizuj w języku F# funkcję typu char * string -> int zliczającą liczbę
  6. wystąpień podanego znaku w łańcuchu tekstowym.
  7. *)
  8.  
  9. let rec licz (znak:char, slowo: char [] , dlugosc:int, wynik:int) =
  10.  
  11.     match dlugosc with
  12.     | 0 -> wynik
  13.     | _ -> if slowo.[ dlugosc ] = znak then
  14.                 licz(znak,slowo,dlugosc - 1 ,wynik + 1 )
  15.            else licz(znak,slowo,dlugosc - 1 ,wynik)
  16.  
  17. let IloscZnaku (znak, slowo:string) = if slowo.Length = 0 then 0 else
  18.     licz (znak.ToString().ToLower().ToCharArray().[0],slowo.ToLower().ToCharArray(),slowo.Length - 1,0)
  19.  
  20.  
  21. (* Zadanie (----2----)
  22. Napisz funkcję w języku F# sumującą liczby znajdujące się w liście będącej
  23. parametrem tej funkcji (typ funkcji: float list -> float).
  24. *)
  25.  
  26. let rec Suma (liczba: float list) =
  27.     match liczba with
  28.     | a::b::y -> Suma((a + b)::y)
  29.     | a::y -> (a)
  30.  
  31. (* Zadanie (----3----)
  32. Napisz funkcję w języku F# wyznaczającą część wspólną dwóch list.
  33. *)
  34. let rec budujListe (element: 'a , lista: 'a list, wynik: 'a list) =
  35.    match lista with
  36.    | a::b::c -> if a = element && not(List.exists (fun x -> x = a) wynik) then budujListe(element,b::c,a::wynik) else budujListe(element,b::c,wynik)
  37.    | a::b    -> if a = element && not(List.exists (fun x -> x = a) wynik) then a::wynik else wynik
  38.  
  39. let rec CzescWspulnaWynik (lista1: 'a list, lista2: 'a list, wynik: 'a list) =
  40.     match lista1 with
  41.     | a::b::c -> CzescWspulnaWynik(b::c,lista2,budujListe(a,lista2,wynik))
  42.     | a::b    -> budujListe(a,lista2,wynik)
  43.  
  44. let CzescWspulna (lista1: 'a list, lista2: 'a list) =
  45.     let wynik = []
  46.     CzescWspulnaWynik(lista1,lista2,wynik)
  47.  
  48.  
  49.  
  50.  
  51.  
  52. [<EntryPoint>]
  53. let main argv =
  54.     printfn "%A" argv
  55.     let slowo = "Slowo"
  56.     printfn "%s" <| slowo.Remove(slowo.Length-1)
  57.     printfn "%d" <| IloscZnaku('a',"RaaAak")
  58.     let lista1 = [3.2;1.2;3.2;1.2]
  59.     let lista2 = [3.2;1.2;5.5;9.3;3.2]
  60.     let listaWspolna = CzescWspulna(lista1,lista2)
  61.     printfn "Lista z czesci wspolnej:"
  62.     for i in listaWspolna do printfn "%f" i
  63.        
  64.     printfn "Wynik Sumy: %f" <| Suma(lista1)
  65.     0 // return an integer exit code
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement