Saltar al contenido

Lista de aplanar Scala

Solución:

No necesita anidar sus declaraciones de coincidencia. En su lugar, haga la coincidencia en su lugar así:

  def flatten(xs: List[Any]): List[Any] = xs match {
    case Nil => Nil
    case (head: List[_]) :: tail => flatten(head) ++ flatten(tail)
    case head :: tail => head :: flatten(tail)
  }

Mi, equivalente a la solución de SDJMcHattie.

  def flatten(xs: List[Any]): List[Any] = xs match {
    case List() => List()
    case (y :: ys) :: yss => flatten(y :: ys) ::: flatten(yss)
    case y :: ys => y :: flatten(ys)
  } 

Eliminando la línea 4

case head :: Nil => List(head)

Obtendrá la respuesta correcta.

Piense en el caso de prueba

List(List(List(1)))

Con la línea 4, el último elemento de la lista no se procesará

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *