Wiemy, że f jest wielomianem z nieujemnymi współczynnikami całkowitymi.
Biorąc pod uwagę f (1) i f (1 + f (1)), zwraca f . Możesz wypisać f jako listę współczynników, wielomian w formacie ASCII lub podobny.
Przykłady:
f(1) f(1+f(1)) f
0 0 0
1 1 1
5 75 2x^2 + 3
30 3904800 4x^4 + 7x^3 + 2x^2 + 8x + 9
1 1073741824 x^30
f(1)
if(1+f(1))
?Odpowiedzi:
Galaretka , 3 bajty
Wypróbuj online!
Zwraca wielomian jako listę współczynników.
Ponieważ wiemy, że wielomian ma nieujemne współczynniki liczb całkowitych, f (b) można interpretować jako „współczynniki wielomianu, przyjmowane jako zasada b cyfry ”, zgodnie z definicją zasady. Jest to uzależnione od warunku, że żaden ze współczynników nie przekracza lub nie jest równy b , ale wiemy o tym, ponieważ b jest o jeden większy niż suma współczynników (czyli f (1) ).
Program po prostu zwiększa pierwszy argument (
‘
), aby uzyskać 1 + f (1) , a następnie wywołuje atom konwersji bazowej (b
) z pierwszym argumentem jako bazą, a drugim argumentem jako liczbą (używając@
do zamiany kolejności argumentów, ponieważb
zwykle bierze numer pierwszy, a drugi bazowy).To było całkiem sprytne wyzwanie; dzięki, orlp!
źródło
Matematyka,
2928 bajtówDzięki JungHwan Min za oszczędność 1 bajtu! (jak na ironię, z
Max
)Czysta funkcja przyjmująca dwie nieujemne liczby całkowite i zwracająca listę współczynników (nieujemnych liczb całkowitych).
#2~IntegerDigits~(#+1)
byłby tym samym algorytmem, co w odpowiedzi Galaretki Doorknoba ; niestety,IntegerDigits
dławiki Mathematiki, gdy podstawa wynosi 1, stąd potrzeba dodatkowych bajtówMax[...,2]
.źródło
Python 2 , 38 bajtów
Wypróbuj online!
wyprowadza współczynniki oddzielone znakiem nowej linii
Przykładowe dane wyjściowe dla
30, 3904800
:=>
9*x^0 + 8*x^1 + 2*x^2 + 7*x^3 + 4*x^4
źródło
VBA, 75 bajtów
Kiedy formatuje się automatycznie, wygląda to tak:
\
Operator podział podłogiźródło
AHK , 63 bajty
AutoHotkey przypisuje liczby 1-n jako nazwy zmiennych dla przychodzących parametrów. Powoduje to pewne problemy, gdy próbujesz użyć tych funkcji, ponieważ myślisz, że masz na myśli dosłowną liczbę 1 zamiast zmiennej o nazwie 1. Najlepszym obejściem, jakie mogę znaleźć, jest przypisanie ich do różnych zmiennych.
źródło
Java, 53 bajty
Tworzy listę współczynników. Dzięki ovs za matematykę.
Wyrażenie musi być przypisane do a
Function<Integer, IntConsumer>
i wywołane najpierwapply
przez funkcję, a następnieaccept
przezint
. Importowanie z Java 9 nie jest potrzebnejshell
:źródło
Common Lisp, 87 bajtów
Nie golfowany:
źródło
C #, 62 bajty
źródło