Ispirato da questo post StackOverflow.
introduzione
Il lavoro di Bob è quello di creare fogli di calcolo e organizzarli. Il modo in cui li organizza è noto a pochi, tranne Bob, ma crea un elenco di ciascuno dei fogli di calcolo che rientrano nello stesso gruppo. Ci sono un sacco di dati nel foglio di calcolo che crea, ma c'è solo un dato che stiamo guardando in questo momento: il numero di giorni tra il giorno in cui ha iniziato questo lavoro e il giorno in cui ha creato il foglio di calcolo. Il primo giorno ha creato due fogli di calcolo, li ha annotati entrambi 0
e li ha ordinati nella posizione corretta.
Ora, il suo capo sta chiedendo una revisione di che tipo di foglio di calcolo è successo ogni giorno, ed è il tuo lavoro scrivere un codice che lo capirà per Bob; ha troppi fogli di calcolo per farlo a mano.
Ingresso
Le informazioni di Bob che ti fornisce si presentano sotto forma di un array frastagliato (0-o-1 indicizzato) in cui ogni dato è del modulo x = a[i][j]
. a
è quello che sto chiamando l'array frastagliato stesso, i
è il tipo di foglio di calcolo ed x
è la data di creazione dell'array. j
non è importante.
L'obiettivo
Data una matrice frastagliata di giorni di creazione di fogli di calcolo organizzati per tipo, restituisce una matrice frastagliata di tipi di fogli di calcolo organizzati per giorno di creazione di fogli di calcolo.
Esempi
Bob non ti lascerà solo con questi dati astratti. Mi ha dato un sottoinsieme di alcuni dei suoi fogli di calcolo per aiutarti a capire cosa dovrebbe essere tutto.
Esempio di input (indicizzato 0):
a = [
[3,2,5,0], # Bob doesn't necessarily sort his lists
[1,3],
[2,1,0,4],
[4,5,3],
[6,6]
]
Esempio di output (con commento, che ovviamente non è richiesto):
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
]
Nota che Bob non sempre crea due fogli di calcolo ogni giorno, quindi anche l'output potrebbe essere frastagliato. Ma crea sempre almeno un foglio di calcolo ogni giorno, quindi l'output non dovrà mai contenere array vuoti - anche se alla fine l'output ha array vuoti, non è necessario rimuoverli.
Altri casi di test:
[[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]]
Non è necessario ordinare gli elenchi interni dell'output.
Come sempre, nessuna scappatoia standard, e ovviamente il codice più corto vince.
(Dato che questa è la mia prima domanda, per favore fatemi sapere tutto ciò che posso fare per migliorarlo.)
[[0 0]]
dare output [[0 0] []]
?