Inspiriert von diesem StackOverflow-Beitrag.
Einführung
Bobs Aufgabe ist es, Tabellen zu erstellen und zu organisieren. Die Art und Weise, wie er sie organisiert, ist nur wenigen bekannt, außer Bob. Er erstellt jedoch eine Liste aller Tabellenkalkulationen, die derselben Gruppe angehören. Das von ihm erstellte Arbeitsblatt enthält eine Reihe von Daten, aber es gibt nur ein einziges Datenelement, das wir derzeit betrachten: Die Anzahl der Tage zwischen dem Tag, an dem er diesen Job gestartet hat, und dem Tag, an dem er das Arbeitsblatt erstellt hat. Am ersten Tag erstellte er zwei Tabellenkalkulationen, notierte beide als 0
und sortierte sie an den richtigen Positionen.
Jetzt bittet sein Chef um eine Überprüfung, welche Art von Tabellenkalkulation jeden Tag passiert ist, und es ist Ihre Aufgabe, Code zu schreiben, der das für Bob herausfindet. er hat viel zu viele Tabellenkalkulationen, um es von Hand zu tun.
Eingang
Bobs Informationen, die er Ihnen gibt, werden in Form eines (0 oder 1 indizierten) gezackten Arrays geliefert, wobei jedes Datum von der Form ist x = a[i][j]
. a
ist das, was ich das gezackte Array selbst nenne, i
ist der Typ der Tabelle und x
ist das Datum, an dem das Array erstellt wurde. j
ist unwichtig.
Die Aufgabe
Wenn eine gezackte Reihe von Tabellenkalkulationstagen nach Typ geordnet ist, geben Sie eine gezackte Reihe von Tabellenkalkulationstypen zurück, die nach Tabellenkalkulationstag geordnet sind.
Beispiele
Bob wird Sie nicht einfach mit diesen abstrakten Daten zurücklassen. Er hat mir einen Teil seiner Tabellen gegeben, um Ihnen dabei zu helfen, herauszufinden, was alles sein soll.
Beispieleingabe (0-indiziert):
a = [
[3,2,5,0], # Bob doesn't necessarily sort his lists
[1,3],
[2,1,0,4],
[4,5,3],
[6,6]
]
Beispielausgabe (mit Kommentar, der natürlich nicht benötigt wird):
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
]
Beachten Sie, dass Bob nicht immer zwei Tabellen pro Tag erstellt, sodass die Ausgabe möglicherweise auch uneinheitlich ist. Er erstellt jedoch immer mindestens eine Tabelle pro Tag, sodass die Ausgabe niemals leere Arrays enthalten muss. Wenn Ihre Ausgabe am Ende leere Arrays enthält, müssen Sie sie nicht entfernen.
Weitere Testfälle:
[[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]]
Die inneren Listen der Ausgabe müssen nicht sortiert werden.
Wie immer gibt es keine Standardlücken und natürlich gewinnt der kürzeste Code.
(Da dies meine erste Frage ist, lassen Sie mich bitte wissen, was ich tun kann, um sie zu verbessern.)
[[0 0]]
zB eine Ausgabe geben [[0 0] []]
?