Forma idiomática de secuencia dertwigda en tres lists usando Kotlin

Así que esto es posiblemente más sobre functional programming que Kotlin, estoy en esa etapa si un poco de conocimiento es peligroso, y escribí la aplicación en Kotlin, por lo que parece justo hacer una pregunta de Kotlin como sus estructuras de Kotlins que me interesan.

Tengo una secuencia de elementos, están en lotes de tres, por lo que la secuencia puede parecerse

1,a,+,2,b,*,3,c,&....... 

Lo que quiero hacer es dividir esto en tres lists, actualmente estoy haciendo esto mediante la partición en dos lists, una que contiene los numbers y una que contiene todo lo demás, y luego toma la segunda mitad del resultado, las letras y símbolos y particionando de nuevo, en letras y símbolos, así termino con tres lists.

Esto me parece algo ineficiente, tal vez un enfoque funcional no es el mejor enfoque aquí.

¿Hay una forma eficiente de hacerlo, son mis elecciones, esto o un ciclo for?

Gracias

Puede usar el método groupBy para agrupar elementos de su secuencia por un tipo de elemento:

 val elementsByType = sequence.groupBy { getElementType(it) } 

donde getElementType es function que devuelve un tipo del elemento: si es una letra, un número o un símbolo. Esta function puede devolver un número, como 1, 2, 3 o un valor de alguna enumeración con 3 inputs diferentes.

groupBy devuelve un map del tipo de elemento a la list de elementos de ese tipo.

  • Spring Boot: Agregar @Transactional produce java.lang.ClassNotFoundException: org.aspectj.util.PartialOrder $ PartialComparable
  • Cómo crear instancia de class genérica pasando una reference de método en constructor con kotlin
  • Spring Security múltiples proveedores de authentication exitosos
  • Travis CI: Maven no consigue la dependencia de Kotlin 1.1.1 en Linux
  • Error: ejecución fallida para la tarea ': app: compileDebugKotlin'. > Error de compilation. Ver logging para más detalles
  • Acceso al valor externo dentro de aplicar
  • No existe la relación Heroku postgres "information_schema.session_state"
  • Evaluación dinámica de cadenas con plantilla en Kotlin
  • ¿Cómo las funciones de almacenamiento en la colección estática afectarán el sistema?
  • ¿Cómo comparar dos matrices en Kotlin?
  • Tiempo de espera en las testings de espresso, la testing no se ejecuta