JE Maxfield provou o seguinte teorema (ver DOI: 10.2307 / 2688966 ):
Se é qualquer número inteiro positivo com dígitos, existe um número inteiro positivo modo que os primeiros dígitos de constituem o número inteiro .
Desafio
Detalhes
- representa o fatorial de .
- Os dígitos de no nosso caso são entendidos na base .
- Seu envio deve funcionar para arbitrário, com tempo e memória suficientes. Apenas o uso de tipos de 32 bits para representar números inteiros não é suficiente.
- Você não precisa necessariamente de saída menos possível .
Exemplos
A N
1 1
2 2
3 9
4 8
5 7
6 3
7 6
9 96
12 5
16 89
17 69
18 76
19 63
24 4
72 6
841 12745
206591378 314
O mínimo possível de para cada pode ser encontrado em https://oeis.org/A076219
Respostas:
Python 2 , 50 bytes
Experimente online!
Essa é uma variação da solução de 47 bytes explicada abaixo, ajustada para retornar
1
para entrada'1'
. (Nomeadamente, adicionamos1
à expressão completa, e não à chamada recursiva, e começamos a contarn==2
para remover uma camada de profundidade, equilibrando o resultado para todas as não'1'
entradas.)Python 2 , 45 bytes (mapeia 1 para
True
)Essa é outra variação, de @Jo King e @xnor, que recebe a entrada como um número e retorna
True
para a entrada1
. Algumas pessoas pensam que é um jogo justo, mas eu pessoalmente acho um pouco estranho.Mas custa apenas 3 bytes para agrupar o resultado booleano nojento
+()
, fornecendo uma solução "agradável" mais curta:Python 2 , 48 bytes
fonte
+1
qualquer maneira.a
um número.-a
in-p
'', isso é um truque legal :)Braquilog ,
35 bytesExperimente online!
Toma entrada através de sua variável de saída e sai através de sua variável de entrada. (Ao contrário, ele apenas encontra prefixos arbitrários do fatorial da entrada, o que não é tão interessante.) Tempo limite no penúltimo caso de teste no TIO, mas funciona bem no último . Eu o uso no 841 do meu laptop há vários minutos no momento em que escrevi isso, e ele ainda não deu uma resposta, mas tenho fé.
Desde a única entrada
ḟa₀
que não funciona é 1 e 1 é um prefixo positivo de 1! = 1,1|ḟa₀
funciona tão bem.Além disso, a partir desta edição, o 841 está em execução há quase três horas e ainda não produziu uma saída. Eu acho que calcular o fatorial de cada número inteiro de 1 a 12745 não é exatamente rápido.
fonte
C ++ (gcc) ,
10795 bytes, usando-lgmp
e-lgmpxx
Obrigado às pessoas nos comentários por apontarem alguns percalços tolos.
Experimente online!
Calculan! multiplicando (n−1)! por n , em seguida, divide-o repetidamente por 10 até que não seja maior que o número inteiro passado. Nesse ponto, o loop termina se o fatorial for igual ao número inteiro passado ou prosseguir para o próximo n caso contrário.
fonte
107
bytes.return
?Geléia , 8 bytes
Experimente online!
Pega um número inteiro e retorna um singleton.
fonte
05AB1E , 7 bytes
Experimente online ou verifique quase todos os casos de teste (o
841
tempo limite é excluído).Explicação:
fonte
Pitão - 8 bytes
Experimente online .
fonte
JavaScript,
4743 bytesSaída como um BigInt.
Experimente Online!
Economizou alguns bytes adotando a abordagem de Lynn de "construir" o fatorial, em vez de calculá-la em cada iteração. Portanto, vote novamente a solução dela também se estiver votando nesta.
fonte
_Ês bU}f1
em Japt não funcionas
.1
if0
pode ser retornado paran=1
.x=i=1n;f=n=>`${x*=++i}`.search(n)?f(n):i
C # (.NET Core) , 69 + 22 = 91 bytes
Experimente online!
Usa o
System.Numerics.BigInteger
que requer umausing
declaração.-1 byte graças a @ExpiredData!
fonte
Gelatina , 16 bytes
Experimente online!
Explicação
fonte
Perl 6 , 23 bytes
Experimente online!
Explicação
fonte
Carvão , 16 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Empurre
1
para a lista vazia para que ela comece com um produto definido.Repita enquanto a entrada não puder ser encontrada no início do produto da lista ...
... empurre o comprimento da lista para si mesmo.
Imprima o último valor enviado para a lista.
fonte
Perl 5
-Mbigint -p
, 25 bytesExperimente online!
fonte
J ,
2822 bytes-6 bytes graças ao FrownyFrog
Experimente online!
resposta original J , 28 bytes
Experimente online!
>:@] ... x:@1
começando com uma precisão estendida1
, continue aumentando enquanto ...-.@
não é o caso que ...{.@
o primeiro olmo é uma partida inicial de ...E.&":
todas as correspondências de substring (após stringfying dos dois argumentos&":
) da procura da entrada original em ...!
o fatorial do número que estamos incrementandofonte
(]+1-0{(E.&":!))^:_&1x
C (gcc) -lgmp, 161 bytes
Experimente online!
fonte
strstr(b=mpz_get_str(0,10,_),a)-b;mpz_mul(_,_,n))mpz_add_ui(n,n,1)
vez deb=mpz_get_str(0,10,_),strstr(b,a)-b;mpz_add_ui(n,n,1),mpz_mul(_,_,n))
Python 3 , 63 bytes
Experimente online!
-24 bytes graças a Jo King
-3 bytes graças a Chas Brown
fonte
f=
que o que você tem no cabeçalho deve contar para a sua contagem de bits.Gelatina , 11 bytes
Experimente online!
fonte
Limpo , 88 bytes
Experimente online!
Define
$ :: Integer -> Integer
.Usa
Data.Integer
números inteiros arbitrários de tamanho para E / S.fonte
Wolfram Language (Mathematica) , 62 bytes
Experimente online!
fonte
Ruby , 40 bytes
Experimente online!
fonte
Ícone ,
6563 bytesExperimente online!
fonte
Haskell, 89 bytes
Se alguém souber como ignorar a importação necessária, entre em contato.
fonte