Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

292
Views
groovy/katalon: Validar la secuencia de la lista

Tengo dos listas:

 def listA = ['2', '3', '4.5', '5', '6.5', '7', '7.5', '8'] def listB = ['10', '11', '13', '1', '2', '2.5']

Quiero validar la secuencia de ambas listas. Para listA, cada elemento actual es más pequeño que el siguiente, así que tengo el siguiente ciclo para eso.

 double previous = 0.0 for (int i = 0; i < listA.size(); i++) { double current = Double.parseDouble(listA.get(i)) if (previous >= current) { KeywordUtil.markFailed("previous=${previous}, current=${current} not in order") } previous = current }

El código anterior funciona correctamente para listA.

Pero estoy atascado en cómo validar la segunda lista. El requisito es que del 10 al 13.5 los elementos deben estar en secuencia, pero después del 13.5, '1' debe estar ahí.

La lista B es dinámica. A veces sería ['11.5', '2', '3'] y otras veces ['12', '2'] o cualquier otra combinación. Cualquiera que sea la lista, siempre debe seguir la secuencia de 10-13.5 and then 1-3

Actualización , trataría de explicar el requisito un poco mejor. Básicamente, estoy probando la secuencia de tamaños de un producto que se muestra en la imagen.

Requisito

Así que estoy probando diferentes sitios y se prueban diferentes productos. Cada producto tendría diferente disponibilidad de tamaño. La mayoría de los productos tendrían los tamaños en secuencia numérica, como el tamaño actual sería más pequeño que el siguiente. Para ellos, el bucle for anterior funcionaría.

Pero para ciertas categorías como 'Niños pequeños', el requisito es que los tamaños deben estar en el orden --> 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 1, 1.5, 2, 2.5, 3 . Es posible que a algunos de estos productos les falten ciertos tamaños, pero independientemente de los tamaños disponibles, deben seguir el orden anterior. Por ejemplo, si hay disponibles 12 y 2 tamaños, entonces debe estar en ese orden, no 2 y 12. De manera similar, si hay disponibles 13, 1 y 3 tamaños, debe estar en ese orden, y no 1, 3, 13

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

No estoy seguro de haber entendido sus requisitos (especialmente sobre listB ) correctamente, pero implementaría ambas comprobaciones mediante la clasificación de esta manera:

  1. Aquí uso toSorted() que crea una nueva lista basada en un Comparator que se expresa como Closure {} . El comparador compara los valores convertidos al doble. La lista ordenada se compara con la original, y si se reordenó -> la lista no cumple con las reglas:
 boolean checkA( list ){ list == list.toSorted{ it.toDouble() } } assert checkA( [ '2', '3', '4.5', '5', '6.5', '7', '7.5', '8' ] ) assert !checkA( [ '2', 1, '3', '4.5', '5', '6.5', '7', '7.5', '8' ] )
  1. Aquí uso el mismo método, pero el comparador funciona según el índice de cada elemento dentro de la lista de WEIGHTS y, por lo tanto, ordena la lista original por WEIGHTS .
 def WEIGHTS = [ 10, 10.5, 11, 11.5, 12, 12.5, 13, 13.5, 1, 1.5, 2, 2.5, 3 ]*.toDouble().asImmutable() def checkB = { list -> list == list.toSorted{ WEIGHTS.indexOf it.toDouble() } } assert checkB( ['10', '11', '13', '1', '2', '2.5'] ) assert checkB( ['11.5', '2', '3'] ) assert checkB( ['12', '2'] ) assert !checkB( ['11', '10', '1', '13', '2', '2.5'] ) assert !checkB( ['1', '12', '3'] )
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!