Historia
Oświadczenie: Może zawierać wymyślone informacje o kangurach.
Kangury przemierzają kilka etapów rozwoju. Gdy dorastają i stają się silniejsze, mogą skakać coraz wyżej i dłużej i mogą skakać więcej razy, zanim poczują głód.
Na etapie 1 kangur jest bardzo mały i nie może w ogóle skakać. Mimo to stale wymaga pożywienia. Możemy przedstawić wzór aktywności kangura z etapu 1 w ten sposób.
o
Na etapie 2 kangur może wykonywać małe skoki, ale nie więcej niż 2, zanim stanie się głodny. Możemy przedstawić taki wzór aktywności kangura 2. stopnia .
o o
o o o
Po etapie 2 kangur szybko się poprawia. Na każdym kolejnym etapie kangur może skoczyć nieco wyżej (1 jednostka w graficznej reprezentacji) i dwa razy więcej. Na przykład wzór aktywności kangura trzeciego stopnia wygląda tak.
o o o o
o o o o o o o o
o o o o o
Całe to skakanie wymaga energii, więc kangur wymaga odżywienia po ukończeniu każdego wzorca aktywności. Dokładną wymaganą kwotę można obliczyć w następujący sposób.
Przypisz każdemu o we wzorze aktywności kangura etapu n jego wysokość, tj. Liczbę od 1 do n , gdzie 1 odpowiada ziemi, a n najwyższej pozycji.
Oblicz sumę wszystkich wysokości we wzorze aktywności.
Na przykład wzorzec aktywności kangura 3. stopnia obejmuje następujące wysokości.
3 3 3 3
2 2 2 2 2 2 2 2
1 1 1 1 1
Mamy pięć 1 , osiem 2 i cztery 3 ; suma wynosi 5,1 + 8,2 + 4,3 = 33 .
Zadanie
Napisz pełny program lub funkcję, która przyjmuje dodatnią liczbę całkowitą n jako dane wejściowe i wypisuje lub zwraca wymagania żywieniowe na aktywność kangura stage n .
To jest golf golfowy ; niech wygra najkrótsza odpowiedź w bajtach!
Przykłady
1 -> 1
2 -> 7
3 -> 33
4 -> 121
5 -> 385
6 -> 1121
7 -> 3073
8 -> 8065
9 -> 20481
10 -> 50689
http://www.wolframalpha.com/input/?i=2%5E(n-1)*(n%5E2-1)%2B1
(Dziwne znaczniki, ponieważ pomieszany jest zwykły adres URL)Odpowiedzi:
Galaretka , 6 bajtów
Używa wzoru ( n 2 - 1) 2 n - 1 + 1 do obliczenia każdej wartości. @ Qwerp-Derp's był na tyle uprzejmy, aby dostarczyć dowód .
Wypróbuj online! lub Zweryfikuj wszystkie przypadki testowe.
Wyjaśnienie
źródło
Coffeescript, 19 bajtów
Edycja: Podziękowania dla Dennisa za odcięcie 6 bajtów!
Wzór na generowanie liczb Kangur jest następujący:
Objaśnienie wzoru:
Liczbę
1
„swK(n)
” s ostatecznej sumy jest2^(n - 1) + 1
.Liczbę
n
„swK(n)
” s ostatecznej sumy jest2^(n - 1)
, więc suma wszystkichn
„s jestn * 2^(n - 1)
.Liczba dowolnych innych liczb (
d
) wK(n)
końcowej sumie wynosi2^n
, więc suma wszystkich liczbd
byłabyd * 2^n
.Zatem suma wszystkich pozostałych liczb
= (T(n) - (n + 1)) * 2^n
, gdzieT(n)
jest funkcja liczby trójkątnej (która ma wzórT(n) = (n^2 + 1) / 2
).Zastępując to, otrzymujemy ostateczną sumę
Gdy zsumujemy wszystkie sumy, otrzymamy
K(n)
, co równa się... co odpowiada powyższej formule.
źródło
n=>(n*n-1<<n-1)+1
Java 7, 35 bajtów
źródło
Galaretka , 4 bajty
Wypróbuj online! lub zweryfikuj wszystkie przypadki testowe .
Jak to działa
źródło
Python 2,
2523 bajtówWykorzystano wzór mil.
Podziękowania dla Jonathana Allana za -2 bajty.
źródło
~-x
. Możesz także użyćx-1
(nie krótszy), ponieważ odejmowanie ma wyższy priorytet niż przesunięcie.~-x
, więc postanowiłem pozostawić go bez zmian. Cóż, wydaje się, że wszyscy woląx-1
(Dennis również to powiedział).-~(x*x-1<<~-x)
dla rekordu, ale-1
nadal istnieje, więc nie lubię mieszać kodu ...- 1
.Lua, 105 bajtów
Gra w golfa:
Zabawny problem!
źródło
Właściwie 8 bajtów
Wypróbuj online!
Wyjaśnienie:
To po prostu oblicza wzór
(n**2 - 1)*(2**(n-1)) + 1
.źródło
GolfScript , 11 bajtów
Wypróbuj online!
Dzięki Martin Ender (8478) za usunięcie 4 bajtów.
Wyjaśnienie:
źródło
CJam, 11 bajtów
Wypróbuj online.
Wyjaśnienie:
źródło
ri
...Mathematica, 15 bajtów
Nie ma operatora przesunięcia bitów, więc musimy dokonać rzeczywistego potęgowania, ale wtedy krótsze jest podzielenie przez 2 zamiast zmniejszania potęgi.
źródło
C, 26 bajtów
Jako makro:
W funkcji (27):
źródło
f(1+2)
.05AB1E , 7 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
C #, 18 bajtów
Anonimowa funkcja oparta na doskonałej analizie matematycznej Qwerp-Derp .
Pełny program z przypadkami testowymi:
źródło
Partia, 30 bajtów
Cóż, i tak bije Javę.
źródło
MATL , 7 bajtów
Wykorzystuje formułę z innych odpowiedzi.
Wypróbuj online!
źródło
Oaza , 9 bajtów
Dziwi mnie, że nie ma wbudowanego
2^n
.Wypróbuj online!
Wyjaśnienie:
źródło
m
odczuwalne, to i brak kreatywności. Ponadto wielu operatorów nie zostało jeszcze zaimplementowanych z powodu lenistwa i zwlekania.Rakieta 33 bajty
Za pomocą wzoru wyjaśnionego przez @ Qwerp-Derp
Nie golfowany:
Testowanie:
Wydajność:
źródło
Ruby, 21 bajtów
@ Qwerp-Derp w zasadzie wykonał ciężkie podnoszenie.
Ze względu na pierwszeństwo w rubinie, wydaje się, że potrzebujemy trochę parens:
źródło
Scala, 23 bajty
Używa przesunięcia bitowego jako potęgowania
źródło
Pyth, 8 bajtów
pyth.herokuapp.com
Wyjaśnienie:
źródło
R, 26 bajtów
Bezwstydnie stosując formułę
źródło
J , 11 bajtów
Oparty na tej samej formule znalezionej wcześniej .
Wypróbuj online!
Wyjaśnienie
źródło
Groovy (22 bajtów)
Nie chroni
n
, ale stosuje tę samą formułę, co wszystkie inne w tym konkursie. Zapisano 1 bajt ze zmniejszeniami ze względu na potrzebny nawias.Test
źródło
JS-Forth, 32 bajty
Niezbyt krótki, ale krótszy niż Java. Ta funkcja wypycha wynik na stos. Wymaga to JS-Forth, ponieważ używam
<<
.Wypróbuj online
źródło