In dieser Herausforderung werden Sie aufgefordert, eine beliebige Funktion (oder ein vollständiges Programm) zu implementieren, die zwei Eigenschaften erfüllt. Diese Eigenschaften sind:
Ihre Funktion muss eine injektive (umkehrbare) Funktion sein, die von den Polynomen mit nicht negativen Ganzzahlkoeffizienten bis zu den nicht negativen Ganzzahlen reicht. Dies bedeutet, dass keine zwei ungleichen Eingaben einer gleichen Ausgabe zugeordnet werden können.
Ihre Funktion muss die Gesamtzahl der "Ein-Bits" von der Eingabe bis zur Ausgabe beibehalten. Das heißt, wenn Sie die 1 Bits jedes Koeffizienten des Polynoms zählen, sollte deren Summe der Anzahl der 1 Bits in der Binärdarstellung des Ausgangs entsprechen. Zum Beispiel
9
ist es1001
binär, also hat es 21
Bits.
IO
Ein nicht negatives ganzzahliges Polynom ist dasselbe wie eine unendliche Liste nicht negativer Ganzzahlen, sodass nach einem bestimmten Punkt alle Ganzzahlen Null sind. Somit können Polynome entweder durch unendliche Listen (obwohl dies wahrscheinlich unerwünscht ist) oder durch endliche Listen mit impliziten Nullen nach dem Ende der Liste dargestellt werden.
Der Hauptunterschied zwischen Polynomen und endlichen Listen besteht darin, dass das Hinzufügen einer Null am Ende einer Liste die Liste ändert:
Das Hinzufügen einer Null am Ende eines Polynoms ändert seinen Wert nicht:
Wenn Ihre Funktion also eine endliche Liste als Eingabe verwendet, die ein Polynom darstellt, darf das Hinzufügen einer Null das Ergebnis nicht ändern.
Bei der Darstellung von Polynomen als Listen können Sie diese entweder mit dem ersten oder dem letzten Eintrag darstellen, der den konstanten Term darstellt. Beispielsweise könnten Sie eine der folgenden Möglichkeiten haben:
Im ersten Fall sollte das Hinzufügen von Nullen am Ende der Liste das Ergebnis nicht ändern. Im zweiten Fall sollte das Hinzufügen von Nullen am Anfang der Liste das Ergebnis nicht ändern.
Wenn Ihre Sprache Polynome unterstützt, können Sie diese natürlich als Eingabe verwenden.
Die Ausgabe sollte über alle Standardmethoden eine nicht negative Ganzzahl sein.
Dies ist Codegolf, daher werden die Antworten in Bytes gewertet, wobei weniger Bytes besser sind.
[]
oder[0]
eine gültige Eingabe?