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 :)