Pregunta

Supongamos que tengo la matriz:

[2, 3, 4, 5, 6, 7, 8, 9]

ahora basado en pocos parámetros:

  1. current_item - Artículo seleccionado actualmente.
  2. select_size - tamaño de selección, siempre extraño.
  3. Quiero obtener un sublista de la lista que sigue las condiciones:

    1. current_item debe estar en medio de sublista si eso es posible.
    2. En caso de que no haya suficientes elementos en la izquierda / derecha de la lista, use los de derecha / izquierda.
    3. Ejemplos:

      list: [2, 3, 4, 5, 6, 7, 8, 9]
      current_item: 5
      select_size: 3
      
      result: [4, 5, 6]
      
      
      list: [2, 3, 4, 5, 6, 7, 8, 9]
      current_item: 2
      select_size: 5
      
      result: [2, 3, 4, 5, 6]
      
      list: [2, 3, 4, 5, 6, 7, 8, 9]
      current_item: 8
      select_size: 5
      
      result: [5, 6, 7, 8, 9]
      

¿Fue útil?

Solución

Deja que el índice del artículo central sea $ C $ y la longitud de la lista sea $ 2R + 1 $ . Suponemos que los índices de la lista son $ 0, \ ldots, n-1 $ .

Hay cuatro casos a considerar:

  • si $ n> 2R + 1 $ , entonces los resultados son indefinidos (por su publicación).
  • Si $ 0 \ leq cr $ y $ C + R \ leq n-1 $ , luego Usted acaba de tomar elementos $ CR, \ LDOTS, C + R $ .
  • si $ CR <0 $ , entonces toma elementos $ 0, \ ldots, 2r $ .
  • si $ C + r \ geq n $ , luego toma elementos $ n-2R-1, \ ldots , N-1 $ .

En los últimos dos casos, nos garantizamos que estamos dentro de los límites desde $ n> 2r + 1 $ .

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