Desafio
Dado um número inteiro, , como entrada em que o valor de (Onde representa a Função Riemann Zeta ).
Outras informações
é definido como:
Você deve enviar sua resposta para 5 casas decimais (nem mais nem menos). Se a resposta for infinita, você deve produzir ou equivalente no seu idioma.
Os Riemann Zeta embutidos são permitidos, mas é menos divertido fazê-lo dessa maneira;)
Exemplos
As saídas devem ser exatamente como mostrado abaixo
Input -> Output
1 -> ∞ or inf etc.
2 -> 1.64493
3 -> 1.20206
4 -> 1.08232
8 -> 1.00408
19 -> 1.00000
Recompensa
Como consolo para permitir embutidos, vou oferecer uma recompensa de 100 repetições para a resposta mais curta que não use funções zeta embutidas. (A marca de seleção verde ainda irá para a solução mais curta geral)
Ganhando
O código mais curto em bytes vence.
19
realmente produzir o texto1.00000
? Não seria1
ou1.0
seria válido? Parece que você transformou em um desafio de camaleão.Respostas:
Mathematica,
9711 bytesExplicação:
Sem embutido:
Mathematica, 23 bytes UTF-8
Agradecimentos a Kelly Lowder
fonte
N@*Zeta
salva dois bytes.@*
é o operador de composição (esquerdo):f@*g
indica uma função cujo valor no argumentox
éf[g[x]]
.1
ele geraComplexInfinity
e arredonda para5
lugares. (eg1.64493
)*
funciona?N~5
mas sua explicação usa6
.Javascript,
81706665 bytesExemplos executáveis:
fonte
Array(1e6).fill()
por[...Array(1e6)]
e substitua o primeiro(s)
pors
APL (Dyalog) ,
2221 bytesOlha ma, não tem embutidos! -1 graças a ngn.
Como o Dyalog APL não tem infinitos, eu uso a notação proposta por Iverson .
Experimente online!
{
função anônima:1=⍵:
se o argumento for um, então:'¯'
retornar um macron⋄
outro!9
fatorial de nove (362880)⍳
primeiro que muitos inteiros i ntegers⍵*⍨
elevá-los ao poder do argumento÷
valores recíprocos+/
soma5⍕
formato com cinco casas decimais}
[fim da função anônima]fonte
1E6
->!9
C,
747069 bytesCompile com
-fwrapv
. Levará algum tempo para produzir uma saída.Veja como funciona aqui . A peça
++n>0
é substituída por++n<999999
, para que você não precise esperar. Isso mantém funcionalidade e saída idênticas.fonte
float
?TI-Basic, 16 bytes (sem embutidos)
fonte
99
porE9
onde E é o E científico, ou seja, representando 10 ^ 9. (Ou, obviamente, algo menor como E5). Entender que E99 é geralmente usado para infinito positivo também permite essa funcionalidade teoricamente, se o limite superior da soma fosseE99
. Os emuladores podem fornecer isso muito mais rápido que uma calculadora física. Obrigado por seus pensamentos :)C (gcc) ,
1121019484 bytesObrigado pelas dicas de golfe da ceilingcat.
Experimente online!
fonte
f(1)
não parece correto.Julia , 36 bytes
fonte
MATL , 21 bytes
Experimente online!
Explicação
A entrada
1
é especificada na saídainf
, e é assim que o MATL exibe o infinito.Para entradas diferentes de
1
, somar os primeiros2e5
termos é suficiente para obter uma precisão de 5 casas decimais. A razão é que, a partir da computação direta, esse número de termos é suficiente para entrada2
e, para expoentes maiores, a cauda da série é menor.fonte
R, 54 bytes
Localiza a soma diretamente e formata conforme desejado, produzindo
Inf
se a for 1. A soma de9^6
parece ser suficiente para obter precisão de cinco locais enquanto ainda é testável;9^9
obteria melhor precisão no mesmo comprimento de código. Eu poderia ficar mais curto se R tivesse um operador ternário adequado.fonte
function(a)round("if"(a-1,sum((1:9^6)^-a)),5)
é alguns bytes mais curto.function(a)round("if"(a-1,sum((1:9^6)^-a),Inf),5)
funcionar e ainda for mais curto que a minha solução original.Inf
, isso é o que eu ganho por código de digitação na caixa de comentário diretamente ...C,
129 130128 bytesusa a seguinte fórmula
teste e resultados
fonte
Σ(1/(n^s))
? Parece muito mais complicado ...oo
está bem, você não precisa especificá-lo como positivoPython 3: 67 bytes (sem embutidos)
Nada extravagante, só usa python 3 por causa da codificação implícita utf-8.
Experimente online com casos de teste.
fonte
Perl 6 , 50 bytes
fonte
PARI / GP,
2726 bytesfonte
Gelatina , 23 bytes
Experimente online!
Quão?
0
quandoabs(input)<=1
produzirinf
(em vez de14.392726722864989
) para1
abs(result)<=1
para formatar o1.0
quanto1.00000
fonte
Python 3 + SciPy, 52 bytes
Experimente online!
fonte
∞
para entrada1
?inf
que é permitido.zetac(n)
vez dezeta(n,1)
?Geléia , 26 bytes
Não tente online com este link! (Como usa 16! ~ 20 trilhões de termos, a execução no TIO produz um MemoryError)
Experimente online com este link. (Usa 1 milhão de termos. Muito mais gerenciável, mas requer mais um byte)
Retorna
inf
para a entrada 1.Explicação
Dos 26 bytes, 7 são usados para computação, 12 são para formatação e 7 são para produção
inf
em zero. Tem que haver um golfe melhor para isso.fonte
ȷ6
é um literal numérico de um milhão, removendo a solução alternativa fatorial.MathGolf , 14 bytes (não embutido)
Observe que no link do TIO, substituí106 ao invés de 107 . Isso ocorre porque a versão enviada aqui atinge o tempo limite para todos os casos de teste. Isso resulta nas respostas de 3 e 8 desativadas por 1 casa decimal. No entanto, existem literais numéricos de 1 byte muito maiores no MathGolf, permitindo precisão decimal arbitrária.
◄
por►
, que empurrouExperimente online!
Explicação
fonte
JavaScript (Node.js) , 64 bytes
Experimente online!
Apontado em Frxstrem
fonte