Esta questão foi reformulada, por favor, leia-a novamente.
Ultrafatoriais
Os ultrafatoriais são uma sequência de números que pode ser gerada usando a seguinte função:
a(n) = n! ^ n!
Os valores resultantes aumentam extremamente rapidamente. Nota lateral: Esta é a entrada A046882 no OEIS. Também estão relacionados os hiperfatoriais, uma sequência ainda bastante grande, mas um pouco menor: A002109
Sua tarefa
Sua tarefa é implementar esses números no seu idioma. Seu programa calculará a soma de todos os ultrafatoriais de 0 a inclusivo n
.
Entrada
Seu programa pode receber apenas uma entrada: um número, que se assemelha ao último a (n) ultrafatorial a ser adicionado à soma. A entrada é garantida como positiva ou 0.
Saída
Sua saída depende de você, desde que exista a soma visível dos números em algum lugar.
Regras
- Você pode assumir todos os números inteiros, portanto, números inteiros e usar loops de contagem inteira para produzir alguns resultados.
Casos de teste
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
Desafio
Isso é código-golfe , então a resposta com o menor comprimento em bytes vence!
double
) suporta?Respostas:
05AB1E , 5 bytes
Código:
Explicação:
Usa a codificação CP-1252 . Experimente online!
fonte
L!DmO
também funciona se você deseja remover o bit "CP-1252 encoding".Mathematica, 19 bytes
Desculpas pelo código extremamente claro;)
fonte
Gelatina, 6 bytes
Experimente online!
fonte
‘
, entãoR!*`S‘
salva um byte (eu fui para‘Ḷ!*`S
).R -
3430 bytesvetorizar é legal
edit: salvou 4 bytes graças a @MickyT
fonte
x=factorial(0:scan());sum(x^x)
J,
1512 bytesEconomizou 3 bytes graças a milhas!
Explicação
Casos de teste
fonte
1#.i.^~@!@,]
raspa mais alguns bytes.1#.
realiza soma. Se já não é uma dica, você deve definitivamente adicioná-la!Perl 6 ,
413837 bytes( Experimente online. )
Explicação:
for 0 .. $_
: Para cada número inteiro de 0 à entrada,[*](1 .. $_) xx 2
: calcule o fatorial duas vezes,[**] ...
: e exponencia os dois fatoriais idênticos.[+] ...
: Soma todos os resultados do loop.Graças ao b2gills por 1 byte.
fonte
([*] …)
pode ser escrita como[*](…)
salvar um byteQueijo Cheddar ,
4437 bytesObrigado cabras para reduzir operador! Eu acho que seria uma boa ideia adicionar fatorial
Experimente online
Ungolfed
Explicação
Nota: Um pouco desatualizado, irá corrigir
fonte
MATL , 7 bytes
Experimente online!
Explicação
fonte
PHP, 49 bytes
INF
paran>5
em um sistema de 64 bits.para números grandes, 70 bytes
requer que o PHP seja compilado com
--with-gmp
fonte
Rubi,
6466 bytesAdicionados dois caracteres para a correção de bug off-by-one (analisará mais tarde as chamadas de injeção).
fonte
a=(0..i)
vez dea=(1..i)
?+1
é a melhor solução.Pitão -
98 bytesConjunto de Teste .
fonte
Haskell,
6756 bytesObserve que esse envio foi feito antes da remoção das regras que baniam os componentes internos.
Por exemplo:
fonte
Python 2,
7372 bytesfonte
PARI / GP , 19 bytes
fonte
R, 42
bytes35Agora que li a pergunta corretamente, coloquei a soma.
Isso requer o gmp biblioteca (aritmética de precisão múltipla) esteja disponível. Isso permite que grandes números sejam manipulados. Caso contrário, qualquer coisa acima de 5 retornos
INF
.Isso é implementado como uma função sem nome para evitar o
as.character
que seria necessário para a saída para STDOUT atravéscat
Exemplo de execução
O f (9) funciona muito bem, mas preenche várias páginas. Algumas centenas ou mais e 2.017.528 dígitos. f (10) mata a sessão na minha máquina.
fonte
factorialZ(0:x)
. Existe um motivo específico para não usar abase::factorial()
função?gmp::factorialZ
para lidar com grandes números.JavaScript (ES7), 38 bytes
fonte
Pyke, 11 bytes
Experimente aqui!
Curiosidade: Pyke não possui um fatorial embutido, pois
SB
possui apenas 2 bytes!fonte
Haskell, 43 bytes
Exemplo de uso:
a 3
->46662
.b
calcula um único ultrafatorial ea
soma todos os ultrafatoriais de0
atén
.fonte
JavaScript (ES7), 44 bytes
fonte
Python 2, 82 bytes
fonte
range(input())
isso iria remover alguns bytesMaravilha , 33 bytes
Uso:
Explicação
Crie um intervalo inclusivo de 0 a entrada.
Mapeie o intervalo com uma função que 1) calcula o fatorial do item, 2) armazena o resultado
f
e 3) calculaf^f
.Soma.
fonte
TI-Basic, 13 bytes
PS Você pode substituir
sum(seq(
comΣ(
se você tiver um sistema operacional mais recente (sem alteração de tamanho).fonte
Idioma do GameMaker, 97 bytes
Função principal (52 bytes)
Função f (45 bytes)
fonte
Ruby 2, 41 bytes
fonte
s
ao mesmo tempo em que passa como ot
valor inicial para reduzir / injetar.->n{((t=s=1)..n).map{|i|t+=(s*=i)**s};t}
ou->n{t=s=1;(1..n).map{|i|t+=(s*=i)**s};t}
Dyalog APL, 10 bytes
Quão?
⍳
faixa de entrada0,
precedido com 0!*!
Apliquex! ^ x!
+/
somafonte
*
e!
são funções escalares, então use matrizes:+/*⍨!0,⍳⎕
ou(+/!*!)0,⍳
se você realmente deseja um trem.Mathematica, 19 bytes
Função anônima. Pega um número como entrada e retorna um número como saída.
fonte
Braquilog , 12 bytes
Experimente online!
Explicação
fonte
C #, 79 bytes com saída do console
C #, 64 bytes como retorno
fonte
Atualmente
1110 bytesComo funciona
fonte
Raquete 54 bytes
Ungolfed:
Teste:
Saída:
fonte