Advertisement
Guest User

Untitled

a guest
Apr 8th, 2020
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 2.46 KB | None | 0 0
  1. package lab.zad40
  2.  
  3. import akka.actor._
  4.  
  5. case class Wstaw(n: Int)
  6. case class Znajdz(n: Int)
  7.  
  8.  
  9. class Wezel extends Actor {
  10.   def lisc(wartosc: Int): Receive = {
  11.     case Wstaw(n) =>
  12.       if (n > wartosc){
  13.         val prawysyn = context.actorOf(Props[Wezel], s"Prawy_syn$wartosc")
  14.         context.become(zPrawymPoddrzewem(prawysyn, n))
  15.         prawysyn ! Wstaw(n)
  16.       }
  17.       else if (n < wartosc){
  18.         val lewysyn = context.actorOf(Props[Wezel], s"Lewy_syn$wartosc")
  19.         context.become(zLewymPoddrzewem(lewysyn, n))
  20.         lewysyn ! Wstaw(n)
  21.       }
  22.     case Znajdz(n) =>
  23.       if (n == wartosc)
  24.         println(s"Znalezłem: $n")
  25.       else
  26.         println(s"Nie ma: $n")
  27.  
  28.   }
  29.  
  30.   def zLewymPoddrzewem(lewe: ActorRef, wartosc: Int): Receive = {
  31.     case Wstaw(n) =>
  32.       if (n > wartosc){
  33.  
  34.         val prawysyn = context.actorOf(Props[Wezel], s"Prawy_syn$wartosc")
  35.         context.become(zPoddrzewami(lewe, n, prawysyn))
  36.         prawysyn ! Wstaw(n)
  37.  
  38.       }
  39.       else if (n < wartosc){
  40.  
  41.         lewe ! Wstaw(n)
  42.  
  43.       }
  44.     case Znajdz(n) =>
  45.       if (n == wartosc)
  46.  
  47.         println(s"Znalezłem: $n")
  48.  
  49.       else if (n < wartosc)
  50.  
  51.         lewe ! Znajdz(n)
  52.   }
  53.  
  54.  
  55.   def zPrawymPoddrzewem(prawe: ActorRef, wartosc: Int): Receive = {
  56.     case Wstaw(n) =>
  57.       if (n > wartosc){
  58.         prawe ! Wstaw(n)
  59.       }
  60.       else if (n < wartosc){
  61.         val lewysyn = context.actorOf(Props[Wezel], s"Lewy_syn$wartosc")
  62.         context.become(zPoddrzewami(lewysyn, n, prawe))
  63.         lewysyn ! Wstaw(n)
  64.       }
  65.     case Znajdz(n) =>
  66.       if (n == wartosc)
  67.         println(s"Znalezłem: $n")
  68.       if (n > wartosc)
  69.         prawe ! Znajdz(n)
  70.   }
  71.  
  72.   def zPoddrzewami(lewe: ActorRef, wartosc: Int, prawe: ActorRef): Receive = {
  73.     case Wstaw(n) =>
  74.       if (n > wartosc){
  75.         prawe ! Wstaw(n)
  76.       }
  77.       else if (n < wartosc){
  78.         lewe ! Wstaw(n)
  79.       }
  80.     case Znajdz(n) =>
  81.       if (n == wartosc)
  82.         println(s"Znalezłem: $n")
  83.       else if (n > wartosc)
  84.         prawe ! Znajdz(n)
  85.       else if (n < wartosc)
  86.         lewe ! Znajdz(n)
  87.   }
  88.  
  89.   def receive: Receive = {
  90.     case Wstaw(n) =>
  91.       context.become(lisc(n))
  92.     case Znajdz(n) =>
  93.       println(s"Drzewo jest puste")
  94.   }
  95. }
  96.  
  97. object Main extends App {
  98.   val sys = ActorSystem("system")
  99.   val main = sys.actorOf(Props[Wezel], s"Wezel_poczatkowy")
  100.   main ! Wstaw(5)
  101.   main ! Wstaw(10)
  102.   main ! Wstaw(12)
  103.   main ! Znajdz(10)
  104.   main ! Znajdz(15)
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement