Untitled
unknown
scala
2 years ago
2.8 kB
7
Indexable
object Main extends App {
// Ejercicio 1
def firstp[A](obj: A, list: List[A]): Boolean = {
list match {
case h :: _ if(obj==h) => true
case _ => false
}
}
println(firstp('a', List('a', 'b', 'c')))
// Ejercicio 2
def duplicar[A](list: List[A]): List[List[A]]= {
list match {
case Nil => Nil
case h :: Nil => List(List(h, h))
case h :: tail => List(h, h) :: duplicar(tail)
case _ => throw new NoSuchElementException
}
}
println(duplicar(List('a', 'b', 'c')))
// Ejercicio 3
def countdown(N: Int): List[Int] = {
N match {
case 1 => List(1)
case n => n :: countdown(n-1)
// case _ => throw new Exception // unreachable, mejor quitarlo
}
}
println(countdown(10))
// Ejercicio 4
def reverse[A](list: List[A]): List[A] = {
list match {
case Nil => throw new Exception
case h :: Nil => List(h)
case h :: tail => reverse(tail) :+ h
case _ => throw new Exception
}
}
println(reverse(List(1,2,3)))
// Ejercicio 5
def substitute[A](x: A, y: A, ls: List[A]): List[A] = {
ls match {
case h :: tail if(h==y) => x :: substitute(x, y, tail)
case h :: tail => h :: substitute(x, y, tail)
case Nil => Nil
case other => other
// c
// case Nil => Nilase _ => throw new Exception // code unreachable
}
}
println(substitute('a', 'b', List('a', 'b', 'c')))
// Ejercicio 6 WIP
// def setequal[A](ls1: List[A], ls2: List[A]): Boolean = {
// (ls1, ls2) match {
// case (h1 :: tail1, h2 :: tail2) if(h1==h2) => setequal(tail1, ls2)
// case (h1 :: tail, h2 :: tail2) if(h1!=h2) => setequal(tail1, tail2)
// case (h1 :: tail, h2 :: tail2)
// case (Nil, h2 :: tail2) =>
// }
// }
// println(setequal(List(1, 1, 2), List(1, 2)))
// def getSet[A](list: List[A]): List[A] = {
// list match {
// case h :: Nil => List(h)
// case Nil => Nil
// case h :: j :: tail if(h==j) => h :: getSet(tail)
// case h :: tail => h :: getSet(tail)
// case _ => throw new Exception
// }
// }
// println(getSet(List('a','a','b','c','c')))
// Ejercicio 7
def impares[A](list: List[A]): List[A] = {
list match {
case a :: b :: tail => a :: impares(tail)
case a :: Nil => List(a)
case Nil => Nil
case _ => throw new Exception
}
}
println(impares(List(1,2,3,4,5,6)))
}
Editor is loading...
Leave a Comment