Advertisement
Guest User

Untitled

a guest
Jan 18th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 5.17 KB | None | 0 0
  1. class Zwierze(val id:Int = 0) {
  2.   override def toString:String = "_Zwierzê" + id
  3. }
  4.  
  5. class Ssak(id:Int = 0) extends Zwierze(id) {
  6.   override def toString = "_Ssak" + id
  7. }
  8.  
  9. class Malpa(id:Int = 0) extends Ssak(id) {
  10.   override def toString = "_Ma³pa" + id
  11. }
  12.  
  13. class Tygrys(id:Int = 0) extends Ssak(id) {
  14.   override def toString = "_Tygrys" + id
  15. }
  16.  
  17.  
  18. class GenericCellImm1[T] (val x: T) {
  19. }
  20.  
  21. class GenericCellImm2[+T] (val x: T) {
  22. }
  23.  
  24. class GenericCellMut3[T] (var x: T) {
  25. }
  26.  
  27.  
  28. class EmptyException(message:String = "") extends RuntimeException(message)
  29.  
  30. class Queue[+T] private (private[this] val l1:List[T],private[this]  val l2:List[T]) {
  31.  
  32.   def this() = this(Nil, Nil)
  33.  
  34.   def enqueue[S >: T](elem: S) = {
  35.     (l1, l2) match {
  36.       case (Nil, Nil) => new Queue(List(elem), Nil)
  37.       case (l1, l2) => new Queue(l1, elem :: l2)
  38.     }
  39.   }
  40.  
  41.   def dequeue() = {
  42.     (l1, l2) match {
  43.       case (Nil, Nil) => this
  44.       case (List(_), l) => new Queue(l.reverse, Nil)
  45.       case (_ :: t, l) => new Queue(t, l)
  46.     }
  47.   }
  48.  
  49.   def first() =
  50.     l1 match {
  51.       case Nil => throw new EmptyException("Kolejka jest pusta!")
  52.       case h :: _ => h
  53.     }
  54.  
  55.   def isEmpty = l1 == Nil
  56.  
  57.   //override def toString(): String = "{" + l1.mkString(",") + "}|{" + l2.mkString(",") + "}"
  58. }
  59.  
  60. /*
  61. class GenericCellMut[-T] (private[this] var x: T) {
  62.   def x_=(x:T) = this.x = x
  63. }
  64.  
  65. class GenericCellMut[-T] (var x: T) {
  66. }
  67.  
  68.  
  69. abstract class Sequence[+A] {
  70.   def append(x: Sequence[A]): Sequence[A]
  71. }*/
  72.  
  73. abstract class Sequence[+A](){
  74.   def append[B >: A](x: Sequence[B]): Sequence[B]
  75. }
  76.  
  77. abstract class Sequence2[+A](var lista:List[Zwierze]){
  78.   def append[B >: A](x: Sequence2[B]): Sequence2[B]
  79. }
  80.  
  81. class SeqI[+A] extends Sequence[A] {
  82.    override def append[B >: A](x: Sequence[B]) = {
  83.     x
  84.   }
  85. }
  86.  
  87. class ZwierzeSequence extends Sequence[Zwierze] {
  88.    override def append[B >: Zwierze](x: Sequence[B]) = {
  89.     x
  90.   }
  91. }
  92.  
  93. class SsakSequence extends Sequence[Ssak] {
  94.    override def  append[B >: Ssak](x: Sequence[B]) = {
  95.     x
  96.   }
  97. }
  98.  
  99. class MalpaSequence extends Sequence[Malpa] {
  100.    override def  append[B >: Malpa](x: Sequence[B]) = {
  101.     x
  102.   }
  103. }
  104.  
  105. //class SeqImpl[+A](var lista:List[A]) extends Sequence[A]{
  106. //  override def append[B >: A](x: SeqImpl[B]): SeqImpl[B] = {
  107. //    lista = lista ++ x.lista
  108. //    x
  109. //  }
  110. //}
  111.  
  112. class ZSeq(lista2:List[Zwierze]) extends Sequence2[Zwierze](lista2){
  113.   override def append[B](x: Sequence2[B]): Sequence2[B] = {
  114.     lista = lista ++ x.lista
  115.     x
  116.   }
  117. }
  118.  
  119. class Stack[+A] {
  120.     def push[B >: A](elem: B): Stack[B] = new Stack[B] {
  121.         override def top: B = elem
  122.         override def pop: Stack[B] = Stack.this
  123.         override def toString() = elem.toString() + " " + Stack.this.toString()
  124.     }
  125.     def top: A = error("no element on stack")
  126.     def pop: Stack[A] = error("no element on stack")
  127.     override def toString() = "Empty" + super.toString()
  128. }
  129.  
  130.  
  131.  
  132. object Zadanie4 {
  133.   import scala.collection.mutable.Seq
  134.   def copy[T](dest: Seq[T], src: Seq[T]) = {
  135.     var i = 0
  136.     src.foreach(elem => {
  137.       dest.update(i, elem)
  138.       i += 1
  139.     })
  140.   }
  141. }
  142.  
  143. object Lista10 {
  144.    
  145.   import scala.runtime.ScalaRunTime._
  146.   def main(args: Array[String]): Unit = {
  147.    
  148.     var arr1 = Array(1, 2, 3, 4, 5)
  149.     var arr2 = Array(11,12,13,14,15)
  150.     Zadanie4.copy(arr2, arr1)
  151.     arr1
  152.     arr2
  153.     println(stringOf(arr1))
  154.     println(arr2.mkString("|"))
  155.    
  156.     val zwierze = new Zwierze
  157.     val ssak = new Ssak
  158.     val malpa = new Malpa
  159.     val tygrys = new Tygrys
  160.    
  161.     var o1:GenericCellImm2[Malpa] = new GenericCellImm2(new Malpa)
  162.     var o2:GenericCellImm2[Ssak] = o1
  163.     o1.x
  164.     o2 = o1
  165.     o2.x
  166.    
  167.    
  168.     val queue0 = new Queue[Int]
  169.    
  170.     val queue1 = queue0.enqueue(1)
  171.     val queue2 = queue1.enqueue(2)
  172.     val queue3 = queue2.enqueue(3)
  173.     val queue4 = queue3.enqueue(4)
  174.     queue4.first
  175.     val queue5 = queue4.dequeue()
  176.     queue5.first
  177.     val queue6 = queue5.enqueue(5)
  178.     val queue7 = queue6.dequeue()
  179.     queue7.first
  180.     val queue8 = queue7.enqueue(6)
  181.     val queue9 = queue8.dequeue()
  182.     queue9.first
  183.     val queue10 = queue9.dequeue()
  184.     queue10.first
  185.     val queue11 = queue10.dequeue()
  186.     queue11.first
  187.     val queue12 = queue11.dequeue()
  188.     queue12.first
  189.     val queue13 = queue12.dequeue()
  190.    
  191.    
  192.     var si1:SeqI[Malpa] = new SeqI[Malpa]
  193.    
  194.     var sm:Sequence[Malpa] = new MalpaSequence
  195.     var sz:Sequence[Zwierze] = sm
  196.     sz.append(new MalpaSequence)
  197.     sz.append(new SsakSequence)
  198.     sz.append(new ZwierzeSequence)
  199.    
  200.    
  201.     sm.append(new MalpaSequence)
  202.     sm.append(new SsakSequence)
  203.     sm.append(new ZwierzeSequence)
  204.    
  205.     var ss:Sequence[Ssak] = new SsakSequence
  206.    
  207.     ss.append(new ZwierzeSequence)
  208.     ss.append(new MalpaSequence)
  209.    
  210.     var stackM:Stack[Malpa] = new Stack[Malpa]
  211.     stackM = stackM.push(new Malpa)
  212.    
  213.     var stackZ:Stack[Zwierze] = stackM
  214.     var stackS:Stack[Ssak] = stackM
  215.    
  216.     stackZ = stackZ.push(new Zwierze)
  217.    
  218.    
  219.     stackS = new Stack[Ssak]
  220.    
  221.     stackS = stackS.push(new Ssak)
  222.     stackS = stackS.push(new Malpa)
  223.     stackS.push(new Zwierze)
  224.    
  225.    
  226.   }
  227.  
  228. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement