Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class L3 {
- //Zakladam w zadaniu 1 i 2, ze jesli lista jest pusta to predykat jest spelniony dla wszystkich elementow
- def any[A](pred:A=>Boolean, list:List[A]):Boolean =
- if(list==Nil) true
- else {
- def anyWew(list:List[A]):Boolean =
- list match {
- case Nil => false
- case h::t => if(pred(h)) true else anyWew(t)
- }
- anyWew(list)
- }
- def all[A](pred:A=>Boolean, list:List[A]):Boolean =
- list match {
- case Nil => true
- case h::t => if(!pred(h)) false else all(pred,t)
- }
- def predList[A](pred1:A=>Boolean, pred2:A=>Boolean, list:List[A]):List[A] =
- {
- val pred:(A => Boolean) = x => if(pred1(x) && !pred2(x)) true else false
- list.filter(pred)
- }
- /*
- * Przyklad wywolania predList dla listy intow
- * Predykat 1 sprawdza czy liczba jest wieksza od 0
- * Predykat 2 sprawdza czy liczba jest wieksza od 20
- * Na liscie powinny zostac liczby ktore spelniaja predykat 1 i nie spelniaja predykatu 2
- * Wiec na liscie zostana takie liczby x, ze: 0<x<=20 (zaprzeczenie predykatu 2 to <=20)
- * Kod do wywolania takich predykatow i listy:
- *
- * val pred1:(Int=>Boolean) = a => if(a>0) true else false
- * val pred2:(Int=>Boolean) = a => if(a>20) true else false
- * new L3().predList2(pred1,pred2,List(-5,-2,0,2,5,10,15,19,20,21,25,30,35))
- *
- * Wiec w wyniku tego wywolania powinna zostac taka lista: List(2, 5, 10, 15, 19, 20)
- */
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement