Inspirado por este post StackOverflow.
Introdução
O trabalho de Bob é criar planilhas e organizá-las. A maneira como ele os organiza é conhecida por muito poucos, exceto por Bob, mas ele cria uma lista de cada uma das planilhas que se enquadram no mesmo grupo. Há um monte de dados na planilha que ele cria, mas há apenas um dado que estamos vendo agora: o número de dias entre o dia em que ele iniciou esse trabalho e o dia em que ele fez a planilha. No primeiro dia, ele criou duas planilhas, anotou as duas 0
e as classificou nos locais apropriados.
Agora, o chefe dele está pedindo uma revisão de quais tipos de planilhas acontecem todos os dias, e é seu trabalho escrever um código que descubra isso para Bob; ele tem muitas planilhas para fazer isso manualmente.
Entrada
As informações de Bob que ele fornece vêm na forma de um array irregular (indexado com 0 ou 1), em que cada dado é do formulário x = a[i][j]
. a
é o que estou chamando de matriz irregular, i
é o tipo de planilha e x
a data em que a matriz foi criada. j
não é importante.
A tarefa
Dada uma matriz irregular de dias de criação de planilhas organizada por seu tipo, retorne uma matriz irregular de tipos de planilhas organizada pelo dia de criação da planilha.
Exemplos
Bob não vai deixar você com esses dados abstratos. Ele me deu um subconjunto de algumas de suas planilhas para ajudá-lo a descobrir o que tudo deveria ser.
Exemplo de entrada (indexado 0):
a = [
[3,2,5,0], # Bob doesn't necessarily sort his lists
[1,3],
[2,1,0,4],
[4,5,3],
[6,6]
]
Exemplo de saída (com comentário, o que obviamente não é necessário):
output = [
[0,2] # On day 0, Bob made one type 0 and one type 2 spreadsheet
[1,2] # On day 1, Bob made one type 1 and one type 2 spreadsheet
[0,2] # On day 2, Bob made one type 0 and one type 2 spreadsheet
[0,1,3] # On day 3, Bob made one type 0, one type 1, and one type 3 spreadsheet
[2,3] # On day 4, Bob made one type 2 and one type 3 spreadsheet
[0,3] # On day 5, Bob made one type 0 and one type 3 spreadsheet
[4,4] # On day 6, Bob made two type 4 spreadsheets
]
Observe que Bob nem sempre cria duas planilhas todos os dias e, portanto, a saída também pode ser irregular. Mas ele sempre cria pelo menos uma planilha todos os dias, portanto, a saída nunca precisará conter matrizes vazias - embora se sua saída tiver matrizes vazias no final, você não precisará removê-las.
Mais casos de teste:
[[3,5,6,2],[0,0,0],[1,0,3,4]] -> [[1,1,1,2],[2],[0],[0,2],[2],[0],[0]]
[[-1]] -> Undefined behavior, as all input numbers will be non-negative integers.
[[0],[0],[],[0]] -> [[0,1,3]]
As listas internas da saída não precisam ser classificadas.
Como sempre, não há brechas padrão e, claro, o código mais curto vence.
(Como esta é minha primeira pergunta, informe-me sobre qualquer coisa que eu possa fazer para melhorá-la.)
[[0 0]]
dar saída [[0 0] []]
?