Pregunta

Tengo una lista como esta, por ejemplo, el nombre de la lista es output que tiene:

[[[o, g], [g, o]], [[o, g, o, d]], [[o, d]], [[t, s, n, e, e, e, n, c, s]], [[t, s, n, e, e]], [[e, n, c, s]]]

Y tengo una opinión como esta, digamos input es:

ogodtsneeencs

Ahora obviamente, el input se puede formar desde output. Probé el subsequences() de output Para encontrar las posibles combinaciones que forman el input, pero la cosa es que no funcionará para todos los input.

¿Alguien puede decirme cómo puedo encontrar las combinaciones de output que será igual a input? Y posiblemente almacenar en algunos list.

Gracias por adelantado.

¿Fue útil?

Solución

Dado solo este pequeño conjunto de datos de prueba que ha proporcionado, se me ocurrió esto:

def list = [[['o', 'g'], ['g', 'o']], [['o', 'g', 'o', 'd']], [['o', 'd']], [['t', 's', 'n', 'e', 'e', 'e', 'n', 'c', 's']], [['t', 's', 'n', 'e', 'e']], [['e', 'n', 'c', 's']]]

// For every combination of the lists
def result = list.combinations().collect { combination ->
  // Join them into strings
  combination*.join().with { stringcombo ->
    // Then find every string in the list
    stringcombo.findAll { word ->
      // Which is not a substring of another string in the list
      (stringcombo - word).every { it.indexOf( word ) == -1 }
    }
  }.permutations()*.join() // Then get every String permutation of these remaining strings
}.flatten().unique() // and get them into a single unique list

// And print them out
result.each {
  println it
}

Que imprime:

ogodtsneeencs
tsneeencsogod

Sin más datos, es difícil saber si es correcto, pero podría ser un buen lugar de inicio para usted

editar

Actualizado para devolver todas las permutaciones de los tokens válidos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top