Company logo
  • Empleos
  • Bootcamp
  • Acerca de nosotros
  • Para profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
    • Bootcamp
  • Para empresas
    • Inicio
    • Nuestro proceso
    • Planes
    • Pruebas
    • Nómina
    • Blog
    • Calculadora

0

39
Vistas
How to translate matrix list index into matrix coords?

Say you have a 2d matrix:

const matrix = [
  [0, 1, 2, 3, 4, 5],
  [0, 1, 2, 3, 4, 5]
];

Which is represented as a list:

const list = [0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5];

You can easily generate the list index in the list using the following:

function coordsToListIndex({ x, y }, width) {
    return x + (y * width);
}

// index = 7
const index = coordsToListIndex({ x: 1, y: 1 }, 6);

What is the best way to translate in the opposite direction, from list index to coordinates?

What I've come up with is as follows, but I suspect there could be a better way.

function listIndexToCoords(index, width) {

    let count = 0;
    let x = 0;
    let y = 0;
    for (let i = 0; i < width; i++) {
        count++;
        x++;
        if (count === index) {
            break;
        } else if (i == width - 1) {
            x = 0;
            y++;
            i = 0;
        }
    }

    return {
        x,
        y
    };
}

// cords = { x: 1, y: 1 }
const coords = listIndexToCoords(7, 6);
7 months ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Based on input and solutions from
Mike 'Pomax' Kamermans and shawn_halayka in the comments above.

function coordsToListIndex({ x, y }, width) {
    return x + (y * width);
}

function listIndexToCoords(index, width) {
    return {
        x: index % width,
        y: Math.floor(index / width)
    };
}
7 months ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar empleo Planes Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2023 PeakU Inc. All Rights Reserved.