Terminologia
Um número crescente é aquele em que cada dígito é maior ou igual a todos os dígitos à esquerda dele (ex. 12239)
Um número decrescente é aquele em que cada dígito é menor ou igual a todos os dígitos à esquerda dele (ex. 95531)
Um número insuficiente é qualquer número que não esteja aumentando ou diminuindo. Como isso requer pelo menos três dígitos, o primeiro número insuficiente é 101
A tarefa
Dado um número inteiro n maior ou igual a 1, encontre a soma dos primeiros n números saltitantes
Regras
- Isso é código de golfe, então a resposta com a menor quantidade de bytes ganha
- Se o seu idioma tiver limites de tamanho inteiro (ex. 2 ^ 32-1), n será pequeno o suficiente para que a soma caiba no número inteiro
- A entrada pode ser de qualquer forma razoável (stdin, arquivo, parâmetro de linha de comando, número inteiro, string, etc.)
- A saída pode ser de qualquer forma razoável (stdout, arquivo, elemento gráfico do usuário que exibe o número, etc.)
Casos de teste
1 > 101
10 > 1065
44701 > 1096472981
sort
numerar e verificar se são iguais ao número original? Está usando um built-in (sort
), mas não é estritamente um built-in para verificar se está aumentando. Confira os requisitos do programa não observáveis e faça X sem Y na meta post "Coisas a evitar".Respostas:
Geléia ,
108 bytesExperimente online!
Como funciona
fonte
ṚƬ
é extremamente puro ...Pitão , 10 bytes
Experimente aqui!
Como funciona?
fonte
K (ngn / k) , 37 bytes
Experimente online!
{
}
é uma função com argumentox
x{
}\0
aplica o{}
em0
x
tempos, preservando os resultados intermediários(1+)
é a função sucessora{
}(1+)/x+1
aplica a função sucessora a partir dex+1
até o{}
retorno true10\x
são os dígitos decimais dex
a:
atribuir aa
|\
é o max-scan (maxima parcial) dea
&\
analogamente, é o min-scana~|\a
nãoa
corresponde ao seu max-scan?|
oua~&\a
seu min-scan?+/
somafonte
JavaScript (ES6), 77 bytes
Experimente online!
Comentado
fonte
Python 2,
1109289 bytesExperimente online
Esta função determina se um número é insuficiente:
fonte
set(map(cmp,`x`[:-1],`x`[1:]))
.map
dessa maneira.x=s=0\nwhile n:b={-1,1}<=set(map(cmp,`x`[:-1],`x`[1:]));s+=x*b;n-=b;x+=1
economiza 3 bytesPython 2 , 84 bytes
Experimente online! Ou veja uma suíte de testes .
fonte
Retina , 93 bytes
Experimente online! Explicação:
Inicialize
s=i=0
. (s
é o número de#
s antes de:
,i
o número de#
s depois.)Repita os
n
tempos.Repita enquanto
i
não estiver saltitante.Incremente
i
e faça uma cópia em decimal.Converta os dígitos da cópia em unário. O teste de bounciness usa a cópia unária, portanto, só funciona uma vez
i
que foi incrementado pelo menos uma vez.Adicionar
i
paras
e excluir a cópia dos dígitos unários, de modo que para a próxima passagem do circuito interno do teste bounciness falha ei
é incrementado pelo menos uma vez.Converta
s
para decimal.A versão de 121 bytes é calculada em decimal, portanto, pode funcionar para valores maiores de
n
:Experimente online! Explicação:
Inicialize
s=i=0
.Repita os
n
tempos.Repita enquanto
i
não estiver saltitante.Incremente
i
e faça uma cópia.Converta os dígitos da cópia em unário. O teste de bounciness usa a cópia unária, portanto, só funciona uma vez
i
que foi incrementado pelo menos uma vez.Adicionar
i
paras
e excluir a cópia dos dígitos unários, de modo que para a próxima passagem do circuito interno do teste bounciness falha ei
é incrementado pelo menos uma vez.Excluir
i
.fonte
05AB1E , 12 bytes
Experimente online!
Explicação
fonte
Java 8,
114112 bytesUsa uma expressão regular para verificar se o número está aumentando ou diminuindo. Experimente online aqui .
Ungolfed:
fonte
Python 2, 250 bytes
fonte
;
para colocar o máximo de instruções em uma única linha possível, removendo os espaços em branco e definindo uma função para as duas linhas longas muito semelhantes, para que você possa reutilizar parte do código. Além disso, você pode fazera=b=s=0
elen(g)!=h-1!=len(d)
.Stax , 14 bytes
Execute e depure
fonte
Vermelho , 108 bytes
Experimente online!
Mais legível:
Uma boa oportunidade de usar
form
-form i
é 5 bytes menor queto-string i
fonte
MATL ,
3130 bytesExperimente online!
fonte
R , 96 bytes
Experimente online!
Explicação:
fonte
Ruby (123 bytes)
Parece muito feio para mim. Bounciness é definido neste bloco
x.sort!=x&&x.sort!=x.reverse
fonte
Ruby , 76 bytes
Experimente online!
fonte
C (gcc), 104 bytes
Experimente online aqui .
Ungolfed:
fonte
u+=!y?--b,o:0,++o
vez deu+=y?0:o+0*--b,++o
, em;y&=(c-=n%10)<0?:c?2:y)c=n%10,n/=10;
vez de;)c=n%10,n/=10,y&=(c-=n%10)<0?:c?2:y;