Várias linguagens de programação constroem números inteiros grandes 'concatenando' o dígito até o final do número existente. Por exemplo, Labirinto ou Adapt . Concatenando o dígito até o final, quero dizer que, se o número existente for e o dígito for , o número do resultado será .
Um número construído é um número que pode ser construído dessa maneira através do uso de múltiplos de números de um dígito: AKA um elemento em uma destas 9 sequências:
Para fornecer um exemplo de como as seqüências são construídas, veja como a sequência de construída:
e incluídos para demonstrar quando . Ummontede dígitos pontilhada para fora para o espaço.
Ainda não está claro como essas seqüências são construídas; portanto, existem duas maneiras diferentes de entendê-las:
Cada sequência começa no dígito único. O próximo termo é encontrado pegando o próximo múltiplo desse dígito, multiplicando o termo anterior por e adicionando o múltiplo. Em termos de sequência:
onde é um único dígito ( a )
Cada um dos elementos em qualquer ponto da sequência ( por exemplo, ) são múltiplos de de a , em que é construído por
Portanto, os primeiros valores são , o segundo é , o terceiro , etc.
Sua tarefa é pegar um número construído como entrada e gerar o dígito inicial usado para construí-lo. Você pode assumir que a entrada sempre será um número construído e será maior que . Pode ser um dígito, que mapeia de volta para si mesmo.
Você pode receber informações de qualquer maneira razoável, inclusive como uma lista de dígitos, como uma seqüência de caracteres etc. É aceitável (embora não recomendado) receber informações de forma unária ou qualquer outra base de sua escolha.
Este é um código de golfe, portanto o código mais curto vence!
Casos de teste
u_n => a
37035 => 3
6172839506165 => 5
5 => 5
246913580244 => 2
987654312 => 8
61728395061720 => 5
1111104 => 9
11111103 => 9
111111102 => 9
2469134 => 2
98760 => 8
8641975308641962 => 7
ou como duas listas:
[37035, 6172839506165, 5, 246913580244, 987654312, 61728395061720, 1111104, 11111103, 111111102, 2469134, 98760, 8641975308641962]
[3, 5, 5, 2, 8, 5, 9, 9, 9, 2, 8, 7]
Quando publiquei esse desafio, não percebi que isso poderia ser simplificado tanto pelo método usado na resposta de Grimy e, portanto, estaria muito interessado em respostas que adotassem uma abordagem mais matemática para resolver isso, em vez de um 'dígito' truque (obviamente todas as respostas válidas são igualmente válidas, exatamente o que eu estaria interessado em ver).
Respostas:
05AB1E ,
754 bytesExperimente online!
fonte
a * (((10**n - 1) / 9 - n) / 9)
. Multiplique isso por 9 e adicionea*n
, e você obtéma * ((10**n - 1) / 9)
, também conhecido como dígito, um n repetido vezes. Acontece que adicionar 9 em vez dea*n
trabalhar para n = 1 e para n maior a diferença constante é desprezível próximo ao crescimento exponencial.MathGolf , 6 bytes
Experimente online!
Infelizmente, não há
head
operação no MathGolf, então eu tenho que me contentar▒├Þ
em converter em string, pop da esquerda e descartar tudo, exceto o topo da pilha.fonte
Gelatina , 5 bytes
Experimente online!
Usando a abordagem de Grimy .
fonte
Stax , 5 bytes
Execute e depure
fonte
Japonês
-g
,765 bytes-1 byte graças a Shaggy
Recebe entrada como uma string
Experimente | Teste várias entradas
fonte
Carvão , 7 bytes
Experimente online! Link é a versão detalhada do código. @ Grimy é claro. Aqui está uma abordagem matemática de 27 bytes:
Experimente online! Link é a versão detalhada do código. Falha em entradas inválidas. Explicação:
Insira o número construído.
Interprete a lista como um número na base 10, multiplique por todos os números de
0
até9
e veja se o número construído aparece.Empurre o comprimento da lista para si mesmo. A lista torna-se, portanto, do formulário
[0, 1, 2, ..., n]
.Recrie os números construídos, mas desta vez encontre e produza o índice no qual o número de entrada apareceu.
fonte
Labirinto ,
28 2220 bytesAplica o método baseado em dígitos descrito por Grimy por divisão inteira repetida por dez até zero ser encontrado.
Experimente online!
fonte
Espaço em branco , 108 bytes
Letras
S
(espaço),T
(guia) eN
(nova linha) adicionadas apenas como destaque.[..._some_action]
adicionado apenas como explicação.Porto de @Grimy resposta 05AB1E 's , exceto que eu não tenho um builtin para obter o primeiro dígito. ;)
Experimente online (apenas com espaços brutos, guias e novas linhas).
Explicação em pseudo-código:
fonte
Python 3 , 22 bytes
Experimente online!
Porto de Grimy 's resposta 05AB1E
Python 3 , 74 bytes
Experimente online!
Explicação
Função recursiva. Repete a sequência de cada dígito
l
, iniciando em1
. Se a entradai
for igual à iteração atualj
, o dígito correspondentel
será retornado. Caso contrário , se o valor atualj
na sequência exceder o valor de entradai
, ele aumentará o dígitol
e começará novamente. O argumentok
é usado para aumentar o fator de multiplicação.fonte
JavaScript (ES6),
1615 bytesAgradeço ao @Grimy por levantar a restrição de 32 bits que tive com a versão anterior.
Usando o encantamento mágico de Grimy . Recebe a entrada como uma sequência.
Experimente online!
JavaScript (ES6), 53 bytes
Abordagem ingênua de força bruta.
Experimente online!
fonte
-~n*9
pode sern*9+9
, que é o mesmo bytecount, mas deve se livrar da limitação de 32 bits se eu entendi corretamente.14808
n=>n
funcionará para todas as entradas.Java 8, 23 bytes
Porto de @Grimy resposta 05AB1E 's , por isso, certifique-se de upvote-lo!
Experimente online.
Mas como eu me sinto mal por @cairdCoinheringaahing , aqui uma abordagem de força bruta com um pouco mais de recursos ( 83 bytes ):
Experimente online.
Explicação:
fonte
PHP , 20 bytes
Experimente online!
Mais uma porta de resposta do Grimy !
fonte
Geléia , 8 bytes
Experimente online!
Um programa completo que pega um número inteiro e imprime o dígito inicial. Não usa o método inteligente de Grimy! Terrivelmente ineficiente para maior entrada. A versão a seguir lida com todos os casos de teste, mas é um byte mais longo:
Geléia , 9 bytes
Experimente online!
fonte
Hy , 44 bytes
Usa o método de Grimy
Experimente online!
fonte
Barril
-rr
, 4 bytesExperimente online!
Obviamente, usa a mesma abordagem que a resposta 05AB1E. Também usa o novo
-rr
sinalizador (reverter e imprimir bruto).Transpiles para:
fonte
Wren , 30 bytes
Apenas um porto da maioria das respostas.
Experimente online!
fonte