Question

Supposons que j'ai le tableau :

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

Maintenant basé sur quelques paramètres :

  1. current_item - élément actuellement sélectionné.
  2. select_size - taille de sélection, toujours impaire.

Je souhaite obtenir une sous-liste de la liste qui suit les conditions :

  1. article_actuel devrait être au milieu de la sous-liste si cela est possible.
  2. Dans le cas où il n'y a pas assez d'éléments à gauche/droite de la liste, utilisez ceux de droite/gauche.

Exemples:

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]
Était-ce utile?

La solution

Soit l'index de l'élément central $c$, et la longueur de la liste soit $2r+1$.Nous supposons que les indices de la liste sont $0,\ldots,n-1$.

Il y a quatre cas à considérer :

  • Si $n > 2r+1$, alors les résultats ne sont pas définis (selon votre message).
  • Si $0 \leq c-r$ et $c+r \leq n-1$, alors tu prends juste des éléments $c-r,\ldots,c+r$.
  • Si $c-r < 0$, alors vous prenez des éléments $0,\ldots,2r$.
  • Si $c+r \geqn$, alors vous prenez des éléments $n-2r-1,\ldots,n-1$.

Dans ces deux derniers cas, nous sommes assurés d'être dans les limites puisque $n > 2r+1$.

Licencié sous: CC-BY-SA avec attribution
Non affilié à cs.stackexchange
scroll top