Dado que você tem uma sequência infinita de números definidos da seguinte maneira:
1: 1 = 1
2: 1 + 2 = 3
3: 1 + 3 = 4
4: 1 + 2 + 4 = 7
5: 1 + 5 = 6
6: 1 + 2 + 3 + 6 = 12
7: 1 + 7 = 8
...
A sequência é a soma dos divisores de n
, incluindo 1 e n
.
Dado um número inteiro positivo x
como entrada, calcule o número mais baixo n
que produzirá um resultado maior que x
.
Casos de teste
f(100) = 48, ∑ = 124
f(25000) = 7200, ∑ = 25389
f(5000000) = 1164240, ∑ = 5088960
Saída esperada
Seu programa deve retornar ambos n
e a soma de seus divisores, da seguinte maneira:
$ ./challenge 100
48,124
Regras
Este é o código-golfe, portanto o código mais curto em bytes, em cada idioma, vence.
n
s divisores? Você provavelmente desejará declarar isso explicitamente.n
ef(n)
, mas não o diz em nenhum lugar da especificação.f(1000) = 48
? A soma do divisor de48
is é124
Respostas:
Braquilog , 9 bytes
Este programa recebe entrada da "variável de saída"
.
e sai para a "variável de entrada"?
. Experimente online!Explicação
A variável implícita
N
é enumerada em ordem crescente, portanto seu menor valor legal é usado para a saída.fonte
Geléia ,
18121110 bytesExperimente online!
-1 byte graças ao Sr. Xcoder !
Como funciona
fonte
1
é necessário e como os¥
atos?1
diz#
para começar a contar de 1 e¥
pega os dois links anteriores (Æs
e>
) e os aplica como díade (ou seja, com dois argumentos), com o argumento esquerdo sendo a iteração e o argumento correto sendo a entrada.#
tinha sido um pouco confuso para mim antes em alguns casos.Wolfram Language (Mathematica) , 53 bytes
Experimente online!
Tenta todos os valores entre 2 e x + 1, onde x é a entrada.
(Ele
Select
retorna uma lista de todos os valores que funcionam, mas a função{#,f@#}&
aceita todos esses itens como entradas e depois ignora todas as entradas, exceto a primeira.)fonte
R , 71 bytes
Experimente online!
fonte
x
.Husk ,
1211 bytes-1 byte, graças a @Zgarb!
Experimente online!
fonte
,
não funciona (ou a inferência leva muito tempo?).R , 73 bytes
Experimente online!
Superado por duckmayr .
fonte
Japonês , 15 bytes
Tente
Explicação
Entrada implícita de número inteiro
U
.[]
é o nosso wrapper de matriz. Para o primeiro elemento,@ }a
é uma função que é executada continuamente até retornar um valor de verdade, passando para si um número inteiro incremental (começando em 0) a cada vez e emitindo o valor final desse número inteiro.â
recebe os divisores do inteiro atual (X
),x
resume-los e esse resultado é atribuído à variávelV
.<
verifica seU
é menor queV
. O segundo elemento na matriz é então apenasV
.fonte
Clojure , 127 bytes
Experimente online!
graças a @steadybox por -4 bytes!
fonte
reduce
pode ser substituído porapply
, também a funçãoe
pode ser expressa como uma função anônima através da#(...)
sintaxe, você não precisa nomeá-lo no Code Golf.#(=(rem n %)0)
é mais curto que#(zero?(rem n %))
. E lembre-se de que,
é um espaço em branco e, nesse caso, pode ser removido conforme for seguido(
, para que seja analisado corretamente.Rubi , 58 bytes
Programa completo, porque não tenho certeza se lambdas são permitidas. /dar de ombros
Experimente online!
Explicação
fonte
JavaScript (ES6),
6158 bytesEditar: salvou 3 bytes graças a @Arnauld.
fonte
05AB1E , 11 bytes
Experimente online!
Deixa a saída na pilha, conforme permitido por meta consenso . Eu adicionei
)
para fins de visualização, mas o programa também imprime implicitamente a parte superior da pilha.fonte
APL (Dyalog) , 32 bytes
Experimente online!
⍺⍵⍵⍺⍵.
fonte
SOGL V0.12 , 14 bytes
Experimente aqui!
Explicação:
fonte
C,
7978 bytesExperimente online!
fonte
i=s=!++n
vez de++n,i=s=0
MATL , 12 bytes
Experimente online!
Explicação
fonte
Gaia , 11 bytes
Experimente online!
Deixa a saída na pilha, conforme permitido por meta consenso . Eu adicionei
€.
para fins de visualização, mas o programa também imprime implicitamente a parte superior da pilha.fonte
Haskell , 59 bytes
-1 byte, graças a @nimi!
Experimente online!
fonte
Ohm v2 , 11 bytes
Experimente online!
fonte
Fator , 88
Pesquisa por força bruta. É uma cotação (lambda),
call
comx
na pilha, folhasn
ef(n)
na pilha.Como uma palavra:
fonte
Python 3, 163 bytes
fonte
noob
, em particular;)Python 3 , 100 bytes
Experimente online!
Graças a Jonathan Frech sobre a tentativa anterior do python 3, eu apenas ampliei bastante meu conhecimento da sintaxe do python. Eu nunca teria pensado no truque - ~ i for i + 1, que salva dois caracteres.
No entanto, essa resposta é 1) não é mínima e 2) não funciona para x = 1 (devido a um erro de um por um que é fácil de fazer enquanto se busca brevidade; sugiro que todos os demais verifiquem suas respostas para obter essa vantagem) caso!).
Explicação rápida:
sum(i+1for i in range(y)if y%-~i<1)
é equivalente asum(i for i in range(1,y+1)if y%i<1)
mas salva dois caracteres. Mais uma vez obrigado ao Sr. Frech.d=lambda y:sum(i+1for i in range(y)if y%-~i<1)
portanto, retorna os divisores de y.f=lambda x:min((j,d(j))for j in range(x+1)if x<=d(j))
é onde eu realmente trabalhei. Como comparar uma tupla funciona em ordem de dicionário, podemos comparar j, d (j) tão facilmente quanto podemos comparar j, e isso não nos permite encontrar o mínimo j, armazená-lo em uma variável e / depois / calcular o tupla em uma operação separada. Além disso, temos que ter <=, não <, emx<=d(j)
, porque d (1) é 1; portanto, se x é 1, você não obtém nada. É também por isso que precisamosrange(x+1)
e nãorange(x)
.Eu já havia retornado a tupla, mas preciso inscrevê-la em f, para que sejam necessários mais três caracteres.
fonte
f=
funções anônimas que são perfeitamente aceitáveis aqui!f=
número de bytes e é uma boa maneira de jogar golfe no Python. Verifique isso para obter mais dicas de golfe em Python!q=range
e substituindorange
porq
nas duas instâncias existentes. Infelizmente, isso não o melhora e, como lambda é uma palavra-chave, não posso usá-la para isso, eu teria que fazer truques exec () desperdiçando muitos caracteres.Python 2 , 81 bytes
Experimente online!
fonte
Java (OpenJDK 8) , 91 bytes
Experimente online! (tempo limite no terceiro caso de teste)
fonte
Perl 5 , 60 + 1 (
-p
) = 61 bytesExperimente online!
Formato de saída:
soma - n
fonte
Clojure, 102 bytes
fonte
PHP, 69 bytes
fonte
Perl 6 , 48 bytes
Experimente online!
fonte