Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package lab.zad40
- import akka.actor._
- case class Wstaw(n: Int)
- case class Znajdz(n: Int)
- class Wezel extends Actor {
- def lisc(wartosc: Int): Receive = {
- case Wstaw(n) =>
- if (n > wartosc){
- val prawysyn = context.actorOf(Props[Wezel], s"Prawy_syn$wartosc")
- context.become(zPrawymPoddrzewem(prawysyn, n))
- prawysyn ! Wstaw(n)
- }
- else if (n < wartosc){
- val lewysyn = context.actorOf(Props[Wezel], s"Lewy_syn$wartosc")
- context.become(zLewymPoddrzewem(lewysyn, n))
- lewysyn ! Wstaw(n)
- }
- case Znajdz(n) =>
- if (n == wartosc)
- println(s"Znalezłem: $n")
- else
- println(s"Nie ma: $n")
- }
- def zLewymPoddrzewem(lewe: ActorRef, wartosc: Int): Receive = {
- case Wstaw(n) =>
- if (n > wartosc){
- val prawysyn = context.actorOf(Props[Wezel], s"Prawy_syn$wartosc")
- context.become(zPoddrzewami(lewe, n, prawysyn))
- prawysyn ! Wstaw(n)
- }
- else if (n < wartosc){
- lewe ! Wstaw(n)
- }
- case Znajdz(n) =>
- if (n == wartosc)
- println(s"Znalezłem: $n")
- else if (n < wartosc)
- lewe ! Znajdz(n)
- }
- def zPrawymPoddrzewem(prawe: ActorRef, wartosc: Int): Receive = {
- case Wstaw(n) =>
- if (n > wartosc){
- prawe ! Wstaw(n)
- }
- else if (n < wartosc){
- val lewysyn = context.actorOf(Props[Wezel], s"Lewy_syn$wartosc")
- context.become(zPoddrzewami(lewysyn, n, prawe))
- lewysyn ! Wstaw(n)
- }
- case Znajdz(n) =>
- if (n == wartosc)
- println(s"Znalezłem: $n")
- if (n > wartosc)
- prawe ! Znajdz(n)
- }
- def zPoddrzewami(lewe: ActorRef, wartosc: Int, prawe: ActorRef): Receive = {
- case Wstaw(n) =>
- if (n > wartosc){
- prawe ! Wstaw(n)
- }
- else if (n < wartosc){
- lewe ! Wstaw(n)
- }
- case Znajdz(n) =>
- if (n == wartosc)
- println(s"Znalezłem: $n")
- else if (n > wartosc)
- prawe ! Znajdz(n)
- else if (n < wartosc)
- lewe ! Znajdz(n)
- }
- def receive: Receive = {
- case Wstaw(n) =>
- context.become(lisc(n))
- case Znajdz(n) =>
- println(s"Drzewo jest puste")
- }
- }
- object Main extends App {
- val sys = ActorSystem("system")
- val main = sys.actorOf(Props[Wezel], s"Wezel_poczatkowy")
- main ! Wstaw(5)
- main ! Wstaw(10)
- main ! Wstaw(12)
- main ! Znajdz(10)
- main ! Znajdz(15)
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement