Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Learn more about F# at http://fsharp.net
- // See the 'F# Tutorial' project for more help.
- open System
- (* Zadanie (----1----)
- Zrealizuj w języku F# funkcję typu char * string -> int zliczającą liczbę
- wystąpień podanego znaku w łańcuchu tekstowym.
- *)
- let rec licz (znak:char, slowo: char [] , dlugosc:int, wynik:int) =
- match dlugosc with
- | 0 -> wynik
- | _ -> if slowo.[ dlugosc ] = znak then
- licz(znak,slowo,dlugosc - 1 ,wynik + 1 )
- else licz(znak,slowo,dlugosc - 1 ,wynik)
- let IloscZnaku (znak, slowo:string) = if slowo.Length = 0 then 0 else
- licz (znak.ToString().ToLower().ToCharArray().[0],slowo.ToLower().ToCharArray(),slowo.Length - 1,0)
- (* Zadanie (----2----)
- Napisz funkcję w języku F# sumującą liczby znajdujące się w liście będącej
- parametrem tej funkcji (typ funkcji: float list -> float).
- *)
- let rec Suma (liczba: float list) =
- match liczba with
- | a::b::y -> Suma((a + b)::y)
- | a::y -> (a)
- (* Zadanie (----3----)
- Napisz funkcję w języku F# wyznaczającą część wspólną dwóch list.
- *)
- let rec budujListe (element: 'a , lista: 'a list, wynik: 'a list) =
- match lista with
- | 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)
- | a::b -> if a = element && not(List.exists (fun x -> x = a) wynik) then a::wynik else wynik
- let rec CzescWspulnaWynik (lista1: 'a list, lista2: 'a list, wynik: 'a list) =
- match lista1 with
- | a::b::c -> CzescWspulnaWynik(b::c,lista2,budujListe(a,lista2,wynik))
- | a::b -> budujListe(a,lista2,wynik)
- let CzescWspulna (lista1: 'a list, lista2: 'a list) =
- let wynik = []
- CzescWspulnaWynik(lista1,lista2,wynik)
- [<EntryPoint>]
- let main argv =
- printfn "%A" argv
- let slowo = "Slowo"
- printfn "%s" <| slowo.Remove(slowo.Length-1)
- printfn "%d" <| IloscZnaku('a',"RaaAak")
- let lista1 = [3.2;1.2;3.2;1.2]
- let lista2 = [3.2;1.2;5.5;9.3;3.2]
- let listaWspolna = CzescWspulna(lista1,lista2)
- printfn "Lista z czesci wspolnej:"
- for i in listaWspolna do printfn "%f" i
- printfn "Wynik Sumy: %f" <| Suma(lista1)
- 0 // return an integer exit code
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement