To pytanie zostało przerobione. Przeczytaj je ponownie.
Ultrafactorials
Ultrafactorials to ciąg liczb, które można wygenerować za pomocą następującej funkcji:
a(n) = n! ^ n!
Wynikowe wartości rosną niezwykle szybko. Uwaga dodatkowa: Jest to pozycja A046882 w OEIS. Powiązane są również hiperczynniki, wciąż dość duża, ale nieco mniejsza sekwencja: A002109
Twoje zadanie
Twoim zadaniem jest zaimplementowanie tych liczb w swoim języku. Twój program obliczy sumę wszystkich ultrafactorials od 0 do włącznie n
.
Wkład
Twój program może przyjmować tylko jedno dane wejściowe: liczbę, która przypomina ostatnią (n) ultrafaktoryczną, która zostanie dodana do sumy. Dane wejściowe są zapewnione jako dodatnie lub 0.
Wydajność
Wszystko zależy od ciebie, o ile gdzieś widoczna jest suma liczb.
Zasady
- Możesz założyć wszystkie liczby całkowite, a zatem wprowadzać liczby całkowite i używać pętli zliczania liczb całkowitych, aby uzyskać pewne wyniki.
Przypadki testowe
Input: -1
Output: Any kind of error (because -1! is undefined), or no handling at all
Input: 0
Output: 1
Input: 1
Output: 2
Input: 2
Output: 6
Input: 3
Output: 46662
Wyzwanie
To jest golf golfowy , więc wygrywa odpowiedź o najmniejszej długości w bajtach!
double
)?Odpowiedzi:
05AB1E , 5 bajtów
Kod:
Wyjaśnienie:
Wykorzystuje kodowanie CP-1252 . Wypróbuj online!
źródło
L!DmO
działa również, jeśli chcesz zdjąć bit „kodowania CP-1252”.Mathematica, 19 bajtów
Przepraszamy za wyjątkowo przejrzysty kod;)
źródło
Galaretka, 6 bajtów
Wypróbuj online!
źródło
‘
, więcR!*`S‘
oszczędza bajt (poszłam‘Ḷ!*`S
).R -
3430 bajtówwektoryzacja jest fajna
edycja: zapisane 4 bajty dzięki @MickyT
źródło
x=factorial(0:scan());sum(x^x)
J,
1512 bajtówZaoszczędzone 3 bajty dzięki kilometrom!
Wyjaśnienie
Przypadki testowe
źródło
1#.i.^~@!@,]
goli jeszcze kilka bajtów.1#.
wykonuje podsumowanie. Jeśli to jeszcze nie jest wskazówka, zdecydowanie powinieneś ją dodać!Perl 6 ,
413837 bajtów( Wypróbuj online. )
Wyjaśnienie:
for 0 .. $_
: Dla każdej liczby całkowitej od 0 do wejścia[*](1 .. $_) xx 2
: obliczyć silnię dwukrotnie,[**] ...
: i potęguj dwa identyczne silnie.[+] ...
: Następnie zsumuj wszystkie wyniki pętli.Dzięki b2gills za 1 bajt.
źródło
([*] …)
można zapisać jako[*](…)
zapisywanie bajtuCheddar ,
4437 bajtówDziękujemy kozom za zmniejszenie operatora! Myślę, że dobrym pomysłem byłoby dodanie silni
Wypróbuj online
Nie golfił
Wyjaśnienie
Uwaga: Trochę przestarzałe, naprawi
źródło
MATL , 7 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
PHP, 49 bajtów
INF
dlan>5
systemu 64-bitowego.dla dużych liczb 70 bajtów
wymaga kompilacji PHP
--with-gmp
źródło
Rubin,
6466 bajtówDodano dwie postacie dla poprawki błędu off-by-one (zajmie się później skróceniem wywołań iniekcji).
źródło
a=(0..i)
zamiasta=(1..i)
?+1
jest najlepszym rozwiązaniem.Pyth -
98 bajtówPakiet testowy .
źródło
Haskell,
6756 bajtówPamiętaj, że przesłanie to nastąpiło przed usunięciem reguł zakazujących wbudowanych wersji.
Na przykład:
źródło
Python 2,
7372 bajtyźródło
PARI / GP , 19 bajtów
źródło
R, 42
35bajtówTeraz, gdy dobrze przeczytałem pytanie, włożyłem sumę.
Wymaga to dostępności biblioteki gmp (arytmetyki wielokrotnej precyzji). Umożliwia to obsługę dużych liczb. W przeciwnym razie cokolwiek powyżej 5 zwrotów
INF
.Jest to zaimplementowane jako funkcja bez nazwy, aby uniknąć tego,
as.character
który byłby wymagany do wyjścia do STDOUT przezcat
Przykładowy przebieg
f (9) działa całkiem dobrze, ale wypełnia kilka stron. Około kilkuset i 2 017 528 cyfr. f (10) zabija sesję na moim komputerze.
źródło
factorialZ(0:x)
. Czy istnieje konkretny powód, aby nie używać tejbase::factorial()
funkcji?gmp::factorialZ
do obsługi dużych liczb.JavaScript (ES7), 38 bajtów
źródło
Pyke, 11 bajtów
Wypróbuj tutaj!
Ciekawostka: Pyke nie ma wbudowanej silni, ponieważ
SB
ma tylko 2 bajty!źródło
Haskell, 43 bajty
Przykład użycia:
a 3
->46662
.b
oblicza pojedynczy ultrafactorials ia
sumuje wszystkie ultrafactorials od0
don
.źródło
JavaScript (ES7), 44 bajty
źródło
Python 2, 82 bajtów
źródło
range(input())
tego, by usunąć kilka bajtówCud , 33 bajty
Stosowanie:
Wyjaśnienie
Utwórz zakres obejmujący od 0 do wejścia.
Mapuj w zakresie za pomocą funkcji, która 1) oblicza silnię elementu, 2) zapisuje wynik
f
, a 3) obliczaf^f
.Suma.
źródło
TI-Basic, 13 bajtów
PS Można wymienić
sum(seq(
zeΣ(
jeśli masz nowszy system operacyjny (bez zmiany rozmiaru).źródło
GameMaker Language, 97 bajtów
Główna funkcja (52 bajty)
Funkcja f (45 bajtów)
źródło
Rubinowy 2, 41 bajtów
źródło
s
w tym samym czasie, gdy przekazuje go jakot
wartość początkową do zmniejszenia / wstrzyknięcia.->n{((t=s=1)..n).map{|i|t+=(s*=i)**s};t}
lub->n{t=s=1;(1..n).map{|i|t+=(s*=i)**s};t}
Dyalog APL, 10 bajtów
W jaki sposób?
⍳
zakres wejściowy0,
poprzedzone 0!*!
zastosowaćx! ^ x!
+/
sumaźródło
*
i!
są funkcjami skalarnymi, więc używaj tablic:+/*⍨!0,⍳⎕
lub(+/!*!)0,⍳
jeśli naprawdę chcesz pociągu.Mathematica, 19 bajtów
Funkcja anonimowa. Pobiera liczbę jako dane wejściowe i zwraca liczbę jako dane wyjściowe.
źródło
Brachylog , 12 bajtów
Wypróbuj online!
Wyjaśnienie
źródło
C #, 79 bajtów z wyjściem konsoli
C #, 64 bajty jako powrót
źródło
Właściwie
1110 bajtówJak to działa
źródło
Rakieta 54 bajty
Nie golfowany:
Testowanie:
Wydajność:
źródło