Um número de salto é definido como um número positivo n, em que todos os pares de dígitos decimais consecutivos diferem por 1. Além disso, todos os números de um dígito são considerados números de salto. por exemplo. 3, 45676, 212 estão saltando números, mas 414 e 13 não. A diferença entre 9 e 0 não é considerada como 1
O desafio Crie um programa que produza um dos seguintes resultados:
- Dada uma entrada,
n
os primeirosn
números saltados. - Dada uma
n
saída de entrada, o termo én
th da sequência.
Nota
- Qualquer formato de E / S válido é permitido
- Índice 1 ou 0 é permitido (especifique)
Aqui estão alguns números de salto:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 21, 23, 32, 34, 43, 45, 54, 56, 65, 67, 76, 78, 87, 89, 98, 101, 121, 123, 210, 212, 232, 234, 321, 323, 343, 345, 432, 434, 454, 456, 543, 545, 565, 567, 654, 656, 676, 678, 765, 767, 787, 789, 876, ...
Este também é A033075
n
, é com você.Respostas:
Haskell , 57 bytes
Experimente online!
fonte
Geléia , 8 bytes
Um programa completo que aceita um número inteiro
n
,, de STDIN, que imprime uma lista dos primeirosn
números positivos de salto.Experimente online!
Quão?
Diferenças incrementais aceitáveis entre dígitos sãoxx= x
1
e-1
enquanto outras[-9,-2]+[2,9]
não. Isso se alinha com números inteiros que são invariantes quando aumentados para si mesmos. ie desde que:fonte
05AB1E (herdado) , 5 bytes
A entrada é indexada em 1.
Código:
Usa a codificação 05AB1E . Experimente online!
Explicação
fonte
Python 2 ,
7975 bytes-4 bytes por xnor
Experimente online!
Derivado do Chas Brown 's resposta . A função auxiliar
g(i)
retorna sei
é um número de salto. Se os dois últimos dígitos de um númeron
tiverem uma diferença absoluta 1,n%100%11
será 1 ou 10, assimn%100%11%9
será 1.fonte
%11
. Você pode fazer issof=lambda n,i=1:n and-~f(n-g(i),i+1)
se mudar para a indexação única.APL (Dyalog Unicode) , SBCS de 36 bytes
1 indexado. Agradecemos a dzaima por sua ajuda no golfe.
Editar: -15 bytes de ngn.
Experimente online!
Explicação
Temos
f⍣g⍣h
, onde, como⍣
operador, a APL traduz isso para(f⍣g)⍣h
. (Em contraste com as funções onde2×3+1
é traduzido2×(3+1)
)fonte
10⊥⍣¯1⊢⍺
->⍎¨⍕⍺
⍣
vez de recursão:{1+⍣{∧/1=|2-/⍎¨⍕⍺}⍣⍵⊢0}
ou1+⍣{∧/1=|2-/⍎¨⍕⍺}⍣⎕⊢0
C (gcc) , 90 bytes
Experimente online!
fonte
Japonês, 14 bytes
Produz o primeiro
n
termo, indexado em 1.Tente
(Eu sei, eu sei, eu deveria estar dando um tempo, mas estou em retirada de golfe!)
fonte
Python 2 ,
8887 bytesExperimente online!
Retorna o número de salto indexado em 0 (ou seja, f (0) => 1, etc).
fonte
Haskell , 69 bytes
Experimente online!
fonte
g
3 bytes mais curto, reescrevendo-a para ser pointfree, em seguida, usando<*>
:g=all((==1).abs).(zipWith(-)<*>tail).map(read.pure).show
JavaScript (ES7), 60 bytes
Experimente online!
fonte
Geléia , 9 bytes
-1 por Jonathan Allan
Experimente online!
1 indexado.
fonte
Rápido, 228 bytes
Experimente online!
fonte
Python 3 ,
122121 bytesExperimente online!
-1 byte, passando
f
de impressão para uma função de gerador.g
é uma função auxiliar recursiva que determina se uma strings
é uma "string de salto" (isso funciona porque os códigos de caracteres de 0 a 9 estão em ordem e são contíguos).f
é uma função geradora que absorven
e produz os primeirosn
números de salto.fonte
R , 85 bytes
Experimente online!
Suspeite que isso possa ser jogado mais. Lê o número usando
scan()
e gera o número de salto apropriado.fonte
Perl 5 , 56 bytes
Experimente online!
Indexado em 1, gera o enésimo número de salto
fonte
Wolfram Language (Mathematica) , 85 bytes
Experimente online!
retorna o n-ésimo número
fonte
Fator , 129 bytes
Experimente online!
Emite os primeiros
n
números de saltofonte
Catholicon , 5 bytes
Experimente online!
fonte