Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Obtener la posicion de un elemento en la lista #76

Open
lspigariol opened this issue Sep 29, 2020 · 2 comments
Open

Obtener la posicion de un elemento en la lista #76

lspigariol opened this issue Sep 29, 2020 · 2 comments
Labels
duplicate This issue or pull request already exists

Comments

@lspigariol
Copy link
Contributor

Estudiantes me transmitieron la sugerencia o necesidad de agregar un metodo:

Seria util en ocasiones, conociendo un elemento, saber en qué lugar de la lista se encuentra.,

Se espera obtener un número con la posición de la primera aparición en la lista
si no se encuentra, lanza excepción

Sería sólo para las listas. podria llamarse index( ) o indexOf()

@lgassman
Copy link
Contributor

Me surgió ayer esta necesidad para un TP de unos alumnos. Me pareció sensato el requerimiento. Ellos tienen un juego de un personaje que recolecta cosas por el mundo, y quieren mostrar las cosas que recojen en una linea arriba de todo. Entonces para eso cada elemento visual debe calcular su posición en el eje y con respecto a su posición en la lista del inventario. Les sugerí dos implementaciónes como workarround:

Una recursiva:

class RecursiveContainer {
    const property inner = []
    
    method indexOf(element) {
        return self.calculateIndex(element, 0)
    }
    
    method calculateIndex(element, candidate) {
        return if(inner.get(candidate) == element) { 
            candidate
        } else { 
            self.calculateIndex(element, candidate + 1)
        }
    }
}

Una basada en rangos + find

class RangeContainer {
    const property inner = []
    
    method indexOf(element) {
        return (0..inner.size()-1).find({index => inner.get(index) == element})
    }    
}

@lgassman lgassman added the duplicate This issue or pull request already exists label Oct 23, 2021
@lgassman
Copy link
Contributor

duplicate at #42

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
duplicate This issue or pull request already exists
Projects
None yet
Development

No branches or pull requests

3 participants