@riker Parece que é sobre encontrar um número faltando em uma sequência. Parece ser sobre encontrar um dígito ausente em um conjunto.
DJMcMayhem
10
@Riker Eu não acho que seja uma duplicata, já que o desafio vinculado tem uma sequência estritamente incrementadora (de números potencialmente com vários dígitos), enquanto aqui está em ordem arbitrária.
AdmBorkBork 27/03
3
Olá Josh! Como ninguém mais mencionou isso até agora, direcionarei você para o Sandbox, onde você poderá postar idéias de desafios futuros e obter um feedback significativo antes de postar no main. Isso teria ajudado a resolver todos os detalhes (como STDIN / STDOUT) e resolvido o dilema duplicado antes de você receber votos negativos aqui.
AdmBorkBork
1
É uma pena que 9-x% 9 funcione para qualquer dígito, exceto 0. Talvez alguém mais esperto que eu encontre uma maneira de fazê-lo funcionar.
Bijan
2
Várias respostas usam um número inteiro como entrada de função. Isso é permitido?
32043 pode ser alterado para um número mais bonito. 99066 é o centro-simétrico (não se altera se uma rotação de 180 graus em torno do centro) ou talvez 97779 (palíndromo, dois dígitos distintos)
Sarge Borsch
1
Se o OP permitir imprimir o número duas vezes, você 764**4poderá salvar dois bytes.
@KarlKastor, o módulo 15 na base 16 funciona analogamente ao módulo 9 na base 10. O módulo base-1 é constante ao obter a soma dos dígitos, apenas porque 10 ≡ 1 (mod base-1). A soma de todos os dígitos possíveis é constante; portanto, o dígito ausente é a diferença dessa constante e o número de entrada (módulo base-1).
A soma de todos os dígitos do Ascii é 525. Este programa resume a entrada e a subtrai de 525 para obter o dígito ausente.
((([]())[]{}){()()({}[()])}{} )
Pressionará 525. Isso tira vantagem do fato de que sabemos que haverá 9 elementos de entrada para começar. Isso significa que é []avaliado como 9, o que nos permite obter grandes números como 525 rapidamente.
Se você mover negative(sum(input()))para o final, poderá abusar do nilad de altura da pilha para empurrar 525 mais facilmente. (([][][]()()()){()()({}[()])}{}[{{}}])deve economizar 10 bytes
Experimente online! Uso: (477-).sum.map fromEnum $ "123456890". 477 é a soma dos códigos de caracteres dos dígitos 1 a 9, excluindo 0. Esta função anônima calcula 477 menos a soma de todos os códigos de caracteres para encontrar o que está faltando.
Transformar os dígitos dos caracteres em ints é um byte a mais:
Gosto da maneira como todas as linguagens de golfe (e mesmo algumas linguagens que não são de golfe) estão usando o mesmo algoritmo, mas o Jelly consegue ter os nomes mais curtos para os componentes internos que usa, e o mínimo que é necessário para reverter os argumentos ḟ.
1
@ ais523 APL é letra por letra da mesma forma (exceto que seria um trecho de APL em vez de uma função / programa): Ø= ⎕, D= D, ḟ= ~, como em ⎕D~'867953120'.
Adám 27/03/19
3
Eu, enquanto percorria as respostas: "Estou prevendo três caracteres no Jelly". Bingo. : ^ D
Edite 1 byte de salvar thx @Neil, com um truque muito mais inteligente
Xoring todos os valores de 1 a 9 fornece 1. Xor 1 mais uma vez e o resultado é 0. Portanto, se algum valor único estiver ausente, o resultado será o valor ausente.
Porta da resposta Python do @ xnor, exceto que o JavaScript tem apenas um operador restante em vez de um módulo, portanto, não posso fazê-lo em uma única etapa. Editar: salvou 6 bytes graças a @Arnauld.
Você está apaixonado demais reduce. +1 de qualquer maneira
edc65 27/03
@ Arnauld Eu não vejo isso funcionando quando s[0]!='0', mas já existe uma resposta que usa eval.
284 Neil
Você poderia fazer s=>(15-`0x${s}`%15)%15?
precisa
@Arnauld Bah, e eu já tinha feito isso para a porta Batch também ...
Neil
6
Brainfuck, 17 15 bytes
-[-[->-<],]>++.
Experimente aqui .
Esta solução funciona apenas no Brainfuck padrão (células de 8 bits), pois depende da embalagem.
É um dia raro em que Brainfuck pode realmente competir, mas esse desafio acabou de se alinhar com as especificações do BF muito bem!
Em vez de detalhar essa resposta, eu gostaria de passar pelas iterações que fiz, porque acho que seria mais compreensível (e mais interessante).
Nota: esta solução é inspirada principalmente pela resposta Brain-Flak do Wheat Wizard .
Explicação
Etapa 1, 26 bytes
Em sua resposta, Wheat Wizard apontou que a soma dos valores ASCII de 0-9 soma a 525. E como o Brainfuck padrão tem apenas uma noção de [0,255], isso torna o valor 525% 256 = 13 . Ou seja, subtrair os valores ASCII da entrada de 13 fornece o dígito ausente.
A primeira versão deste programa foi:
1. Coloque 13 na primeira célula
2. Insira entradas na segunda célula
3. Subtraia a segunda célula da primeira célula
4. Salte para 2 se houver entradas restantes
5. Imprima a primeira célula
E aqui está o código para a solução simples:
+++++++++++++ #Set the first cell to 13
>, #Take inputs into the second cell
[[<->-],] #Subtract the second cell from the first cell and repeat until inputs are over
<. #Print the first cell
Etapa 2, 19 bytes
Como apontado em sua resposta, como sabemos que a entrada terá exatamente o comprimento 9, podemos usar esse valor como uma constante e eliminar essa longa sequência de + no início.
Também não importa em que ponto adicionamos 13 (obrigado, propriedade comutativa!), Portanto, misturamos isso com as etapas de subtração e impressão.
, #Take input to enter the loop
[[->-<], #Subtract the first cell from the second cell
>+<] #Add 1 for each input; totaling 9
>++++ #Add the missing 4 to make 13
. #And print
Esta foi a minha resposta original para esse problema, mas podemos fazer melhor.
Etapa 3, 17 bytes
Curiosamente, a resposta anterior funciona mesmo se começarmos com um + em vez de um,
+[[->-<],>+<]>++++.
Brainfuck exigiu algo em uma célula para iniciar um loop. Ingenuamente, adicionamos mais 4 no final, quando poderia ter sido em outros lugares.
-[[->-<],>+<]>++.
Com alguns truques de loop totalmente intencionais (leia-se: tentativa e erro), iniciar o programa com a - leva a dois resultados interessantes:
Um é adicionado à segunda célula (economizando 1 byte no final).
Os loops são executados um tempo extra, totalizando 10 em vez de 9 (economizando mais 1 byte).
1 + 10 + 2 = 13, e terminamos com a resposta original.
Olhando para trás, é provavelmente uma redação excessiva para um programa tão simples do Brainfuck.
Etapa 4, 15 bytes
Depois de pensar um pouco mais nessa solução, consegui cortar 2 bytes.
Eu queria esclarecer algo sobre a etapa anterior:
o sinal de menos para inserir o loop efetivamente adiciona 1, mas o que realmente está fazendo é subtrair 255 da segunda célula (resultando em 1).
É óbvio em retrospecto, mas subtrair 1 da primeira célula é o mesmo que adicionar 1 à segunda célula (porque tudo na primeira célula é subtraído da segunda célula).
-[-[->-<],]>++.
Consegui remover o "> + <" adicionando um "-" no início do primeiro loop. Ele precisa ir até lá, e não onde estava o "> + <", porque o programa repetirá infinitamente.
Função pura pegando uma string como entrada e retornando um número inteiro. O Mathematica tem nomes longos de comando e reluta em converter entre seqüências de caracteres e números inteiros, o que o torna particularmente ruim nesse desafio. O melhor que pude encontrar foi o algoritmo da resposta Ruby da Level River St , que calcula com base no total dos códigos ASCII da string de entrada; no Mathematica, isso usa apenas um nome de comando longo.
Bom, eu não penso em guarnição. Valores alternativos32043,32286,33144,35172,35337,35757,35853,37176,37905,38772,39147,39336,40545,42744,43902,44016,45567,45624,46587,48852,49314,49353,50706,53976,54918,55446,55524,55581,55626,56532,57321,58413,58455,58554,59403,60984,61575,61866,62679,62961,63051,63129,65634,65637,66105,66276,67677,68763,68781,69513,71433,72621,75759,76047,76182,77346,78072,78453,80361,80445,81222,81945,83919,84648,85353,85743,85803,86073,87639,88623,89079,89145,89355,89523,90144,90153,90198,91248,91605,92214,94695,95154,96702,97779,98055,98802,99066
Jörg Hülsermann 28/03
5
Bash + coreutils, 19 bytes
Encontrei uma solução bash mais curta , que usa uma abordagem interessante de soma de verificação:
O sumcomando imprime uma soma de verificação e uma contagem de blocos. Não conheço muitos detalhes, mas o uso da opção -s(algoritmo System V) tornará a soma de verificação igual à soma ASCII de cada código de caractere de entrada. Como tal, a soma de verificação permanece constante quando a ordem dos mesmos caracteres de entrada é alterada.
Dado 867953120como caso de teste (último exemplo), eis como o script funciona:
sum -ssaídas 473 1. Se nenhum número inteiro estivesse faltando, a soma de verificação teria sido 525.
dc -e524?empurra 524 e depois a entrada do tubo. A pilha é: 1 473 524. A idéia é subtrair a soma de verificação de 525, mas como a soma gera 1 também, preciso trabalhar com ela.
--P. Após a aplicação dos dois subtracções (524- (473-1)), a pilha é: 52. Com 'P', imprimo o caractere com esse código ASCII:, 4o dígito ausente.
function m(s)
character(len=10)::s,t
t='0123456789'
do j=1,10
k=0
do i=1,9
if(s(i:i)==t(j:j))k=1
end do
if(k==0)m=j-1
end do
end
Receio que não seja muito curto.
Ungolfed:
integer function m(s)
implicit none
character(len=9)::s
character(len=10)::t
integer:: i, j, k
t='0123456789'
do j=1,10
k=0
do i=1,9
if (s(i:i) == t(j:j)) k=1
end do
if (k==0) m=j-1
end do
end function m
A, e# The range from 0 to 9: [0 1 2 3 4 5 6 7 8 9]
s e# Cast to a string: "0123456789"
q e# The input
- e# Remove all characters from the range that are in the input
e# Implicit output
xA implementação é antiga e bastante complicada, e é por isso que você precisa ẹ.
Fatalize 28/03
Você pode argumentar que algo assim ¬∋ℕdeveria funcionar em apenas três caracteres - foi o que tentei primeiro - mas há várias razões para isso não acontecer, e não acho que exista uma maneira plausível de mudar o Brachylog para que funcione.
Ter um ¬∋ℕtrabalho como esse nem é possível no Prolog, a menos que você esteja programando especificamente o que você quer dizer com não not in. ¬em Brachylog é equivalente a \+Prolog, e seu significado é "não provável sob a suposição do mundo fechado", em vez de "me dê pontos de escolha para tudo que não verifica isso" (que é quase sempre um número infinito de coisas )
Fatalize 29/03
A única maneira de fazer isso no Prolog seria "rotular" a ℕantecipação, mas isso significaria mexer com a ordem de avaliação de Brachylog com base no conteúdo dos predicados. Esse é apenas um dos problemas que tem; existem muitos outros.
3
Lisp comum, 47 bytes
(lambda(s)(- 45(reduce'+ s :key'digit-char-p)))
Ungolfed:
(lambda (s) (- 45 (reduce '+ s :key 'digit-char-p)))
Explicação:
(reduce '+ s :key 'digit-char-p)
Isso percorre os caracteres s, converte-os em dígitos e os adiciona. O dígito-char-p, convenientemente, retorna o número do caractere como seu valor "verdadeiro", para que possa ser usado como teste ou conversão.
(- 45 ...)
Subtrair de 45 devolve o dígito que estava faltando na entrada.
Usa o mesmo tipo de método que essa resposta à prova de balas .
Crie o valor -525 na pilha pressionando 5, 2, concatenar, pressionar 5, concatenar e negar.
Em seguida, obtenha repetidamente a entrada e adicione até o final da entrada ser atingido.
Remova a última entrada, negue (faça positivo) o último resultado da adição, produza o caractere e interrompa.
O motivo para trabalhar de -525 em diante é que a saída de caracteres é atingida para cada iteração de entrada. Como o valor é negativo, nada é produzido até que o loop seja encerrado e o valor negativo seja positivo.
A soma dos valores ASCII varia de 477 a 468, dependendo do número que está faltando. Subtraindo isso de 7, obtemos o intervalo -470 a -461. Ao modificar esse número por 10, obtemos o intervalo de 0 a 9, que podemos imprimir.
~+; ;# Sums the ASCII values of all characters to stdIn
~ # The # doesn't skip over the ~ because it's on the end of a line
~ Once EOF is hit, the ~ reverses the IP's direction
;# Jump the ; that was used before
--7 Subtract the sum from 7 (really just 0 - (sum - 7))
%a Mod it by 10
@. Print and exit
A razão pela qual eu uso os valores ASCII em vez de receber uma entrada inteira é porque o &comando no Try it Online é interrompido no EOF (mesmo que ele deva reverter o IP). Mas ~funciona corretamente.
A soma dos valores ASCII de todos os 10 dígitos é 525. Subtraindo a soma dos dígitos fornecidos de 525, obtemos o valor ASCII do caractere ausente.
#v~+ Sums the ASCII values of all characters on stdIn
Moves to the next line when this is done
>'i5* Pushes 525 (105 * 5)
-- Subtracts the sum from 525
@ , Prints and exits
Recebe entrada $n, constrói um intervalo 0..9(ou seja, 0, 1, 2 ... 9) e usa uma Where-Objectcláusula (the |?{...}) para extrair o número que regex -notmatch. Isso é deixado no pipeline, a produção está implícita.
Eu gosto porque você pode dizer em voz alta. '' žhISK '', ele gritou, enquanto balançava a varinha por cima da cartola e um pequeno coelho branco apareceu em uma nuvem de fumaça '.
Respostas:
Python 2 ,
1816 bytes+ beleza graças a @Sarge Borsch
Experimente online!
99066**2
é apenas uma maneira mais curta de gerar uma string que contém 0 ~ 9fonte
764**4
poderá salvar dois bytes.764**4
está faltando5
,8
e9
763**4
=338920744561
Python , 22 bytes
Experimente online!
Uma solução aritmética. Interpreta a sequência de entrada como hexadecimal, a nega e pega o módulo de resultado 15.
fonte
APL (Dyalog) , 4 bytes
Função derivada
⎕D
D igits∘
(vincula um argumento esquerdo à seguinte função diádica para criar uma função monádica)~
exceto [o argumento]Experimente online!
Trem de funções
⎕D
D igits~
exceto⊢
o argumento certoExperimente online!
Programa explícito
⎕D
D igits~
exceto⍞
entrada de caracteresExperimente online!
fonte
Flacidez cerebral ,
483836 + 3 = 39 bytes10 bytes salvos graças ao DJMcMayhem!
Experimente online!
Explicação
A soma de todos os dígitos do Ascii é 525. Este programa resume a entrada e a subtrai de 525 para obter o dígito ausente.
Pressionará 525. Isso tira vantagem do fato de que sabemos que haverá 9 elementos de entrada para começar. Isso significa que é
[]
avaliado como 9, o que nos permite obter grandes números como 525 rapidamente.Em seguida, temos o pouco:
que somará as entradas e subtrairá do total.
fonte
negative(sum(input()))
para o final, poderá abusar do nilad de altura da pilha para empurrar 525 mais facilmente.(([][][]()()()){()()({}[()])}{}[{{}}])
deve economizar 10 bytesHaskell ,
2423 bytesExperimente online! Uso:
(477-).sum.map fromEnum $ "123456890"
. 477 é a soma dos códigos de caracteres dos dígitos 1 a 9, excluindo 0. Esta função anônima calcula 477 menos a soma de todos os códigos de caracteres para encontrar o que está faltando.Transformar os dígitos dos caracteres em ints é um byte a mais:
Experimente online!
fonte
Gelatina , 3 bytes
Simplesmente filtra (
ḟ
) a sequência de entrada de "0123456789" (ØD
).Experimente online!
fonte
ḟ
.Ø
=⎕
,D
=D
,ḟ
=~
, como em⎕D~'867953120'
.Ruby, 14
Soma os códigos ascii e subtrai de 48 * 9 + 45
Use assim
fonte
JavaScript (ES6), 26
Edite 1 byte de salvar thx @Neil, com um truque muito mais inteligente
Xoring todos os valores de 1 a 9 fornece 1. Xor 1 mais uma vez e o resultado é 0. Portanto, se algum valor único estiver ausente, o resultado será o valor ausente.
Teste
fonte
s=>eval([1,...s].join`^`)
salva um byte.Retina ,
27 2119 bytes-6 Agradecimentos ao pôr do sol básico
-2 Agradecimentos a Martin Ender
Experimente online!
Substitua todos os dígitos por tantos se
_
51
s:Remover todas as
_
s e uma1
para cada um:Conte o número de
1
s restantes:fonte
.
.^
5
^.
$*9¶
.
$*_
+`_¶_
¶
_
_
para1
salvar um byte.)05AB1E , 6 bytes
Experimente online!
fonte
JavaScript (ES6),
31292822 bytesPorta da resposta Python do @ xnor, exceto que o JavaScript tem apenas um operador restante em vez de um módulo, portanto, não posso fazê-lo em uma única etapa. Editar: salvou 6 bytes graças a @Arnauld.
fonte
s=>[...s].map(c=>r-=c,r=45)|r
;-)reduce
. +1 de qualquer maneiras[0]!='0'
, mas já existe uma resposta que usaeval
.s=>(15-`0x${s}`%15)%15
?Brainfuck,
1715 bytesExperimente aqui . Esta solução funciona apenas no Brainfuck padrão (células de 8 bits), pois depende da embalagem.
É um dia raro em que Brainfuck pode realmente competir, mas esse desafio acabou de se alinhar com as especificações do BF muito bem!
Em vez de detalhar essa resposta, eu gostaria de passar pelas iterações que fiz, porque acho que seria mais compreensível (e mais interessante).
Nota: esta solução é inspirada principalmente pela resposta Brain-Flak do Wheat Wizard .
Explicação
Etapa 1, 26 bytes
Em sua resposta, Wheat Wizard apontou que a soma dos valores ASCII de 0-9 soma a 525. E como o Brainfuck padrão tem apenas uma noção de [0,255], isso torna o valor 525% 256 = 13 . Ou seja, subtrair os valores ASCII da entrada de 13 fornece o dígito ausente.
A primeira versão deste programa foi:
1. Coloque 13 na primeira célula
2. Insira entradas na segunda célula
3. Subtraia a segunda célula da primeira célula
4. Salte para 2 se houver entradas restantes
5. Imprima a primeira célula
E aqui está o código para a solução simples:
Etapa 2, 19 bytes
Como apontado em sua resposta, como sabemos que a entrada terá exatamente o comprimento 9, podemos usar esse valor como uma constante e eliminar essa longa sequência de + no início.
Também não importa em que ponto adicionamos 13 (obrigado, propriedade comutativa!), Portanto, misturamos isso com as etapas de subtração e impressão.
Esta foi a minha resposta original para esse problema, mas podemos fazer melhor.
Etapa 3, 17 bytes
Curiosamente, a resposta anterior funciona mesmo se começarmos com um + em vez de um,
Brainfuck exigiu algo em uma célula para iniciar um loop. Ingenuamente, adicionamos mais 4 no final, quando poderia ter sido em outros lugares.
Com alguns truques de loop totalmente intencionais (leia-se: tentativa e erro), iniciar o programa com a - leva a dois resultados interessantes:
1 + 10 + 2 = 13, e terminamos com a resposta original.
Olhando para trás, é provavelmente uma redação excessiva para um programa tão simples do Brainfuck.
Etapa 4, 15 bytes
Depois de pensar um pouco mais nessa solução, consegui cortar 2 bytes.
Eu queria esclarecer algo sobre a etapa anterior:
o sinal de menos para inserir o loop efetivamente adiciona 1, mas o que realmente está fazendo é subtrair 255 da segunda célula (resultando em 1).
É óbvio em retrospecto, mas subtrair 1 da primeira célula é o mesmo que adicionar 1 à segunda célula (porque tudo na primeira célula é subtraído da segunda célula).
Consegui remover o "> + <" adicionando um "-" no início do primeiro loop. Ele precisa ir até lá, e não onde estava o "> + <", porque o programa repetirá infinitamente.
fonte
Oitava , 22 bytes
Experimente online!
fonte
Mathematica, 25 bytes
Função pura pegando uma string como entrada e retornando um número inteiro. O Mathematica tem nomes longos de comando e reluta em converter entre seqüências de caracteres e números inteiros, o que o torna particularmente ruim nesse desafio. O melhor que pude encontrar foi o algoritmo da resposta Ruby da Level River St , que calcula com base no total dos códigos ASCII da string de entrada; no Mathematica, isso usa apenas um nome de comando longo.
fonte
PHP, 27
usa o truque da resposta de Rod para gerar uma string contendo todos os dígitos e remove todos os dígitos, exceto o que está faltando.
PHP, 41
Este usa xor porque ainda não o vi.
fonte
32043,32286,33144,35172,35337,35757,35853,37176,37905,38772,39147,39336,40545,42744,43902,44016,45567,45624,46587,48852,49314,49353,50706,53976,54918,55446,55524,55581,55626,56532,57321,58413,58455,58554,59403,60984,61575,61866,62679,62961,63051,63129,65634,65637,66105,66276,67677,68763,68781,69513,71433,72621,75759,76047,76182,77346,78072,78453,80361,80445,81222,81945,83919,84648,85353,85743,85803,86073,87639,88623,89079,89145,89355,89523,90144,90153,90198,91248,91605,92214,94695,95154,96702,97779,98055,98802,99066
Bash + coreutils, 19 bytes
Encontrei uma solução bash
mais curta, que usa uma abordagem interessante de soma de verificação:Experimente online!
Explicação:
O
sum
comando imprime uma soma de verificação e uma contagem de blocos. Não conheço muitos detalhes, mas o uso da opção-s
(algoritmo System V) tornará a soma de verificação igual à soma ASCII de cada código de caractere de entrada. Como tal, a soma de verificação permanece constante quando a ordem dos mesmos caracteres de entrada é alterada.Dado
867953120
como caso de teste (último exemplo), eis como o script funciona:sum -s
saídas473 1
. Se nenhum número inteiro estivesse faltando, a soma de verificação teria sido 525.dc -e524?
empurra 524 e depois a entrada do tubo. A pilha é:1 473 524
. A idéia é subtrair a soma de verificação de 525, mas como a soma gera 1 também, preciso trabalhar com ela.--P
. Após a aplicação dos dois subtracções (524- (473-1)), a pilha é:52
. Com 'P', imprimo o caractere com esse código ASCII:,4
o dígito ausente.fonte
Fortran 95,
146128 bytesReceio que não seja muito curto.
Ungolfed:
fonte
CJam , 5 bytes
Experimente online!
fonte
GNU sed , 36 bytes
Inclui +1 para
-r
Experimente online!
fonte
Braquilog (2), 5 bytes
Experimente online!
Provavelmente deve ser mais curto (ainda estou confuso sobre o porquê disso
ẹ
ser necessário), mas é o melhor que posso fazer.Explicação
fonte
x
A implementação é antiga e bastante complicada, e é por isso que você precisaẹ
.¬∋ℕ
deveria funcionar em apenas três caracteres - foi o que tentei primeiro - mas há várias razões para isso não acontecer, e não acho que exista uma maneira plausível de mudar o Brachylog para que funcione.¬∋ℕ
trabalho como esse nem é possível no Prolog, a menos que você esteja programando especificamente o que você quer dizer com nãonot in
.¬
em Brachylog é equivalente a\+
Prolog, e seu significado é "não provável sob a suposição do mundo fechado", em vez de "me dê pontos de escolha para tudo que não verifica isso" (que é quase sempre um número infinito de coisas )ℕ
antecipação, mas isso significaria mexer com a ordem de avaliação de Brachylog com base no conteúdo dos predicados. Esse é apenas um dos problemas que tem; existem muitos outros.Lisp comum, 47 bytes
Ungolfed:
Explicação:
Isso percorre os caracteres
s
, converte-os em dígitos e os adiciona. O dígito-char-p, convenientemente, retorna o número do caractere como seu valor "verdadeiro", para que possa ser usado como teste ou conversão.Subtrair de 45 devolve o dígito que estava faltando na entrada.
fonte
Cubix , 18 bytes
Expandido
Experimente aqui
Usa o mesmo tipo de método que essa resposta à prova de balas .
Crie o valor -525 na pilha pressionando 5, 2, concatenar, pressionar 5, concatenar e negar.
Em seguida, obtenha repetidamente a entrada e adicione até o final da entrada ser atingido.
Remova a última entrada, negue (faça positivo) o último resultado da adição, produza o caractere e interrompa.
O motivo para trabalhar de -525 em diante é que a saída de caracteres é atingida para cada iteração de entrada. Como o valor é negativo, nada é produzido até que o loop seja encerrado e o valor negativo seja positivo.
fonte
PHP, 37 bytes
fonte
Bash (+ utilitários),
22, 19 bytesseq
vez de expansão entre chaves, -3 bytes (Thx @Riley!)Teste
Experimente Online!
fonte
$1
que seria mais óbvio ...seq
vez deecho
:seq 0 9|tr -d \\n$1
Planilhas Google,
3933 bytesCódigo:
Economizou 6 bytes graças a Steve Kass.
Código anterior:
Resultado:
fonte
=REGEXEXTRACT(0&49^9,"[^"&A1&"]")
também é uma solução válida, dada lógica semelhante. Resposta atualizada.Entre 98,
1412 bytesSalvei 1 byte, movendo o programa para 1 linha e 1 byte, fazendo um cálculo melhor
Experimente online!
Explicação
A soma dos valores ASCII varia de 477 a 468, dependendo do número que está faltando. Subtraindo isso de 7, obtemos o intervalo -470 a -461. Ao modificar esse número por 10, obtemos o intervalo de 0 a 9, que podemos imprimir.
A razão pela qual eu uso os valores ASCII em vez de receber uma entrada inteira é porque o
&
comando no Try it Online é interrompido no EOF (mesmo que ele deva reverter o IP). Mas~
funciona corretamente.Programa Antigo , 14 bytes
A soma dos valores ASCII de todos os 10 dígitos é 525. Subtraindo a soma dos dígitos fornecidos de 525, obtemos o valor ASCII do caractere ausente.
fonte
PowerShell , 30 bytes
Experimente online!
Recebe entrada
$n
, constrói um intervalo0..9
(ou seja,0, 1, 2 ... 9
) e usa umaWhere-Object
cláusula (the|?{...}
) para extrair o número que regex-notmatch
. Isso é deixado no pipeline, a produção está implícita.fonte
Röda , 28 bytes
Experimente online!
fonte
Pyth, 5 bytes
tente!
explicação
"-jUT" também funciona, mas produz novas linhas para cada int.
fonte
05AB1E , 5 bytes
Experimente online!
Explicação
fonte