In questa sfida ti verrà chiesto di implementare qualsiasi funzione (o programma completo) che soddisfi due proprietà. Tali proprietà sono:
La tua funzione deve essere una funzione iniettiva (reversibile) dai polinomi con valori interi non negativi con valori interi non negativi. Ciò significa che non è possibile associare due input disuguali a un output uguale.
La tua funzione deve preservare il numero totale di "su bit" dal suo input al suo output. Ciò significa che se si contano 1 bit di ciascun coefficiente del polinomio, la loro somma dovrebbe essere uguale al numero di 1 bit nella rappresentazione binaria dell'output. Ad esempio
9
è1001
in binario, quindi ha 21
bit.
IO
Un polinomio intero non negativo è uguale a un elenco infinito di numeri interi non negativi tale che dopo un certo punto tutti gli interi sono zero. Pertanto, i polinomi possono essere rappresentati da liste infinite (sebbene ciò sia probabilmente indesiderabile) o da liste finite con zeri impliciti dopo la fine della lista.
La distinzione chiave tra polinomi ed elenchi finiti è che l'aggiunta di uno zero alla fine di un elenco cambierà l'elenco:
Mentre l'aggiunta di uno zero alla fine di un polinomio non cambia il suo valore:
Pertanto, se la tua funzione prende un elenco finito che rappresenta un polinomio come input, l'aggiunta di uno zero non deve modificarne il risultato.
Quando si rappresentano i polinomi come elenchi, è possibile rappresentarli con la prima o l'ultima voce che rappresentano il termine costante. Ad esempio potresti avere una delle seguenti possibilità:
Nel primo caso, l'aggiunta di zeri alla fine dell'elenco non dovrebbe modificare il risultato; nel secondo caso, l'aggiunta di zeri alla parte anteriore della lista non dovrebbe cambiare il risultato.
Naturalmente se la tua lingua supporta i polinomi puoi prenderli come input.
L'output dovrebbe essere un output intero non negativo tramite qualsiasi metodo standard.
Si tratta di code-golf, quindi le risposte verranno classificate in byte, con un numero inferiore di byte migliori.
[]
o[0]
un input valido?