Dada uma matriz inteira a
e um inteiro não negativo i
, produz um mapeamento b
que mapeia os valores distintos na i
th coluna de a
para linhas de a
quem tem esse valor na i
th coluna.
Você pode assumir que i
está no intervalo semi-aberto [0, num_cols(a))
(ou [1, num_cols(a)]
se você optar por usar índices baseados em 1) e que todos os números inteiros estão dentro do intervalo representável para o seu idioma. A entrada e a saída podem ser feitas de qualquer maneira razoável, desde que atenda aos requisitos básicos do desafio (matriz 2D -> mapeamento de entradas para matrizes 2D de entradas). Desde que o mapeamento seja claro e consistente, as chaves não precisam ser incluídas na saída.
Exemplos
[[1]], 0 -> {1: [[1]]}
[[3, 4, 5], [1, 4, 2], [5, 5, 5], [7, 7, 7], [1, 5, 9]], 1 -> {4: [[3, 4, 5], [1, 4, 2]], 5: [[5, 5, 5], [1, 5, 9]], 7: [[7, 7, 7]]}
[[1, 2, 3, 4, 5], [5, 4, 3, 2, 1], [2, 3, 4, 5, 6], [8, 9, 100, 0, 2]], 4 -> {5: [[1, 2, 3, 4, 5]], 1: [[5, 4, 3, 2, 1]], 6: [[2, 3, 4, 5, 6]], 2: [[8, 9, 100, 0, 2]]}
Isso é código-golfe , então a resposta mais curta em bytes vence.