Inspirado en esta publicación de StackOverflow.
Introducción
El trabajo de Bob es crear hojas de cálculo y organizarlas. Muy pocos conocen la forma en que los organiza, excepto Bob, pero crea una lista de cada una de las hojas de cálculo que pertenecen al mismo grupo. Hay una gran cantidad de datos en la hoja de cálculo que crea, pero solo estamos viendo un dato en este momento: el número de días entre el día en que comenzó este trabajo y el día en que hizo la hoja de cálculo. El primer día creó dos hojas de cálculo, las anotó a ambas 0y las ordenó en sus ubicaciones adecuadas.
Ahora, su jefe está pidiendo una revisión de qué tipo de hoja de cálculo ocurre cada día, y es su trabajo escribir un código que lo resuelva para Bob; tiene demasiadas hojas de cálculo para hacerlo a mano.
Entrada
La información de Bob que te da viene en forma de una matriz dentada (indexada 0-o-1) donde cada dato es de la forma x = a[i][j]. aes lo que yo llamo la matriz irregular, iel tipo de hoja de cálculo y xla fecha en que se creó la matriz. jno es importante
La tarea
Dado un conjunto irregular de días de creación de hoja de cálculo organizados por su tipo, devuelve un conjunto irregular de tipos de hoja de cálculo organizados por día de creación de hoja de cálculo.
Ejemplos
Bob no te dejará con estos datos abstractos. Me ha dado un subconjunto de algunas de sus hojas de cálculo para ayudarlo a descubrir qué se supone que es todo.
Entrada de ejemplo (indexada a 0):
a = [
[3,2,5,0], # Bob doesn't necessarily sort his lists
[1,3],
[2,1,0,4],
[4,5,3],
[6,6]
]
Ejemplo de salida (con comentario, que por supuesto no es obligatorio):
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
]
Tenga en cuenta que Bob no siempre hace dos hojas de cálculo todos los días, por lo que la salida también puede ser irregular. Pero siempre hace al menos una hoja de cálculo todos los días, por lo que la salida nunca tendrá que contener matrices vacías, aunque si su salida tiene matrices vacías al final, no necesita eliminarlas.
Más casos de prueba:
[[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]]
No es necesario ordenar las listas internas de la salida.
Como siempre, no hay lagunas estándar y, por supuesto, gana el código más corto.
(Como esta es mi primera pregunta, hágame saber cualquier cosa que pueda hacer para mejorarla).
[[0 0]]dar salida [[0 0] []]?