Coding Problem 8

Muy buenas a todas y todos, hoy retomamos nuestros Coding Problems, después de un largo tiempo.


Este problema fue preguntador por Twitter.


Dado un array y una permutación, aplica la permutación al array. Por ejemplo, dado el array ["a", "b", "c"] y la permutación [2, 1, 0] donde 0 y 2 se han permutado, devuelve ["c", "b", "a"].



Solución:


Como siempre comenzamos con un pequeño test, en este caso usaremos el propio ejemplo al ser un ejercicio tan sencillo.


@Test
public void shouldReturnCorrectList() {
    List<String> characters = List.of("a", "b", "c");
    List<String> charactersExpected = List.of("c", "b", "a");
    List<Integer> permutations = List.of(2, 1, 0);

    assertEquals(changeList(characters, permutations), charactersExpected);
}

Ahora vamos a implementar el código:


public List<String> changeList(List<String> chars, List<Integer> perms){
    return perms.stream().map(chars::get).collect(Collectors.toList());
}

Como veis en una sola línea se puede resolver lo que hacemos es devolver un nuevo array con la ordenación de las permutaciones. Si las permutaciones son 2, 1 y 0, lo que hacemos es devolver: ...get(2), ....get(1), ....get(0) y así obtenemos el orden correcto.


Espero que te haya gustado este pequeño ejercicio para ir poco a poco saliendo de las vacaciones, nos vemos en la próxima :)




©2020 por Juanma Perez.