Advertisement
Guest User

Untitled

a guest
Feb 13th, 2017
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 2.08 KB | None | 0 0
  1. object kolokwium extends App{
  2.     import scala. annotation._
  3.     val lista = List("abc", "abcdo", "agzbth", "agzbth");
  4. //1. Ile rożnych zbiorów znaków użyto do napisania słów z listy l?
  5.     def ile_zbiorow(l: List[String]): Int = l match {
  6.         case Nil => 0
  7.         case _ => {
  8.             val x: Set[String] = l.toSet
  9.             x.size
  10.         }
  11.     }
  12. //Test 1.
  13.     println(s"Roznych slow w lisice: ${ile_zbiorow(lista)}")
  14.    
  15. //2. Jakie znaki występują we wszystkich słowach z listy l?
  16.     def wspolne_znaki(l: List[String], wynik: Set[Char] = Set(), pierwszy: Int = 0): Set[Char] = l match {
  17.         case n :: reszta => {
  18.             if ( pierwszy == 0 ){
  19.                 wspolne_znaki(reszta, n.toSet, 1)
  20.             }
  21.             else {
  22.                 wspolne_znaki(reszta, wynik.&(n.toSet), 1)
  23.             }
  24.         }
  25.         case Nil => wynik
  26.     }
  27. //Test 2.
  28. println(s"Wspolne znaki dla elementow listy: ${wspolne_znaki(lista)}")
  29.  
  30. //3. Na liście l znajdź słowa do napisania których użyto maksymalnej liczby (różnych) liter
  31.     def max_roznych_liter(l: List[String], wynik: Set[String] = Set(), max_liter: Int = 0): Set[String] = l match {
  32.         case n :: reszta => {
  33.             if ( n.toSet.size > max_liter ) {
  34.                 max_roznych_liter(reszta, Set(n), n.length)
  35.             }
  36.             else if ( n.toSet.size == max_liter ) {
  37.                 max_roznych_liter(reszta, wynik + n, max_liter)
  38.             }
  39.             else {
  40.                 max_roznych_liter(reszta, wynik, max_liter)
  41.             }
  42.         }
  43.         case Nil => wynik
  44.     }
  45. //Test 3.
  46.     println(s"Lista slow o masksymalnej liczbie roznych liter: ${max_roznych_liter(lista)}")
  47.    
  48. //4. Ile różnych liter użyto w sumie do zapisania wszystkich słów o nieparzystej długości na liście l?
  49.     def ile_liter_nieparzyste(l: List[String]): Int = {
  50.         l.filter(_.length % 2 == 1).flatMap(_.toSet).toSet.size
  51.         //size
  52.         /*case n :: reszta => {
  53.             n.length % 2 match {
  54.                 case 0 => ile_liter_nieparzyste(reszta, wynik)
  55.                 case _ => ile_liter_nieparzyste(reszta, wynik ++ n.toSet)
  56.             }
  57.         }
  58.         case Nil => wynik.size*/
  59.     }
  60. //Test 4.
  61.     println(s"Uzyto nastepujacej liczby liter do zapisania wszystkic slow o nieparzystej dlugosci: ${ile_liter_nieparzyste(lista)}")
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement