Advertisement
Guest User

Untitled

a guest
Mar 13th, 2019
242
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.44 KB | None | 0 0
  1. class L3 {
  2.  
  3.   //Zakladam w zadaniu 1 i 2, ze jesli lista jest pusta to predykat jest spelniony dla wszystkich elementow
  4.  
  5.   def any[A](pred:A=>Boolean, list:List[A]):Boolean =
  6.     if(list==Nil) true
  7.     else {
  8.       def anyWew(list:List[A]):Boolean =
  9.       list match {
  10.         case Nil => false
  11.         case h::t => if(pred(h)) true else anyWew(t)
  12.       }
  13.     anyWew(list)
  14.   }
  15.  
  16.   def all[A](pred:A=>Boolean, list:List[A]):Boolean =
  17.     list match {
  18.     case Nil => true
  19.     case h::t => if(!pred(h)) false else all(pred,t)
  20.   }
  21.  
  22.   def predList[A](pred1:A=>Boolean, pred2:A=>Boolean, list:List[A]):List[A] =
  23.   {
  24.     val pred:(A => Boolean) = x => if(pred1(x) && !pred2(x)) true else false
  25.     list.filter(pred)
  26.   }
  27.  
  28.   /*
  29.    * Przyklad wywolania predList dla listy intow
  30.    * Predykat 1 sprawdza czy liczba jest wieksza od 0
  31.    * Predykat 2 sprawdza czy liczba jest wieksza od 20
  32.    * Na liscie powinny zostac liczby ktore spelniaja predykat 1 i nie spelniaja predykatu 2
  33.    * Wiec na liscie zostana takie liczby x, ze: 0<x<=20 (zaprzeczenie predykatu 2 to <=20)
  34.    * Kod do wywolania takich predykatow i listy:
  35.    *
  36.    * val pred1:(Int=>Boolean) = a => if(a>0) true else false
  37.    * val pred2:(Int=>Boolean) = a => if(a>20) true else false
  38.    * new L3().predList2(pred1,pred2,List(-5,-2,0,2,5,10,15,19,20,21,25,30,35))
  39.    *
  40.    * Wiec w wyniku tego wywolania powinna zostac taka lista: List(2, 5, 10, 15, 19, 20)
  41.    */
  42.    
  43. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement