Dadas duas entradas (m = ID inicial mínimo , n = número de IDs ), gere uma lista seqüencial de IDs, iniciando em> = m, composta pelos dígitos 0-9, em que não existem 2 números contíguos, por exemplo, 1232 é ok, 1233 não é (contém 2 '3's próximos um do outro).
Exemplo
para m = 985, n = 6, abaixo mostra quais IDs seriam gerados / ignorados
...
985 - ok, 1st
986 - ok, 2nd
987 - ok, 3rd
# skip 0988 (contains '88')
989 - ok, 4th
# Skip 099x (contains '99')
# Skip 100x (contains '00')
1010 - ok, 5th
# Skip 1011 (contains '11')
1012 - ok, 6th
...
Resultado
Cada ID deve ser impresso em uma nova linha, como na sequência acima:
985
986
987
989
1010
1012
Regras
Regras padrão de código de golfe, menor número de bytes ganhos
code-golf
subsequence
beirtipol
fonte
fonte
Respostas:
Gelatina , 6 bytes
Experimente online!
Como funciona?
fonte
Braquilog ,
1110 bytesEntrada é uma lista de dois números. Experimente online!
Explicação
O interno
ḅ
pega uma lista ou string, como"1000220"
, e divide-a em blocos de elementos adjacentes iguais, como["1","000","22","0"]
. Neste programa, aplico o~
operador a ele, para que funcione ao contrário: ele pega uma lista de cadeias, verifica se cada cadeia consiste em repetições de um único caractere e as cadeias vizinhas têm caracteres diferentes e concatena a lista. O predicado≤
enumera números começando da primeira entrada em ordem crescente, e eu verifico uma condição neles, imprimindo aqueles que a satisfazem e parando quando eu encontrei o suficiente.fonte
05AB1E , 9 bytes
Experimente online!
Exlpanação
fonte
Java 8, 83 bytes
Explicação:
Experimente online.
fonte
PowerShell , 59 bytes
Experimente online!
Basicamente semelhante às outras respostas. Loops, desde que tenhamos números para imprimir (
for(;$n)
), testa se temos uma correspondência de regex com um dígito duplo e, se não, coloca isso no pipeline e diminui$n
. Então incrementamos$m
e fazemos um loop novamente. Os elementos são retirados do pipeline e o implícitoWrite-Output
nos fornece uma saída separada por nova linha de graça.fonte
R ,
1119271 bytesExperimente online!
Usa
grepl
para procurar dígitos repetidos.fonte
Geléia , 9 bytes
Experimente online!
Se não for para a restrição de saída,
Y
pode ser removido.fonte
C, 73 bytes
Experimente online!
fonte
Perl 6 , 56 bytes
Tente
Expandido:
fonte
Retina , 34 bytes
Experimente online! Toma
n
em
como entrada em linhas separadas. Explicação:Desative a saída automática e exclua
n
do buffer de trabalho.Repita os
n
tempos.Imprima o valor de
m
no final do seguinte grupo em loop.Faça um loop enquanto houver dígitos contíguos.
Converta para unário.
Conte o número de cadeias vazias, que é mais um que o número de caracteres, adicionando 1 e convertendo novamente em decimal. Isso termina o loop interno.
Após a impressão
m
, adicione 1 novamente da mesma maneira. (A última linha não precisa de umC`
porque é o tipo de estágio padrão para a última linha.) O loop externo é implicitamente encerrado.Observe que a conversão para unário e de volta para decimal é um pouco lenta; para 39 bytes, uma versão que não faz nenhuma conversão:
Experimente online! Explicação:
$.(
calcula o comprimento do restante da substituição, convenientemente sem expandi-lo; como o comprimento de*_
é implicitamente o valor correspondente e o comprimento de_
é, obviamente, 1, isso apenas incrementa o valor.fonte
Perl 5.10.0 +
-n
,4039 bytesExperimente online!
-1 byte graças a Xcali
Entrada em duas linhas, primeiro n, depois m. Verifique se NÃO há nova linha após m:
fonte
Perl 5 ,
-ln
33 bytesDigite 2 linhas em STDIN, primeiro identificador inicial e conte
Experimente online!
fonte
$n.=<>
trabalhou assim, especialmente com a-=
...$n
pode0
fazer os dois juntos erradoPython 2 ,
8073 bytes-7 bytes graças ao Sr. Xcoder
Experimente online!
fonte
Haskell , 70 bytes
-19 bytes graças a nimi.
Experimente online!
17 bytes dedicados à separação por novas linhas.
fonte
mapM
eprint
. Experimente online!Stax ,
98 bytes CP437Experimente online!
Acontece que coincide com o algoritmo do @ Mr.Xcoder em sua resposta Jelly.
-1 byte por comentário de @recursive.
Explicação
Usa o formato descompactado para explicar.
fonte
Haskell ,
949391 bytes-1 byte graças a Laikoni
-2 bytes graças a Zgarb
Experimente online!
Primeiro golfe Haskell.
fonte
group(show a)
pode sergroup$show a
.(<2).length
pode sernull.tail
Pitão , 12 bytes
Experimente aqui
fonte
JavaScript (ES6), 50 bytes
Recebe entrada na sintaxe de currying
(m)(n)
.Experimente online!
fonte
C # (.NET Core), 91 bytes
Porta da resposta C do @Steadybox '.
Experimente online.
fonte
Perl 5 (
-nl
), 42 bytesExperimente online!
fonte
AWK , 90 bytes
Experimente online!
Isso é muito mais feio do que eu pensava. Descobri que
AWK
apenas há substituição traseira em suagensub
função, o que tornaria pouco eficiente o uso para este aplicativo.Portanto, essa é uma abordagem muito simples de incrementar um contador de ID, dividir o contador em cada caractere, percorrendo os caracteres para ver se algum caractere é igual ao caractere anterior. Se nenhum caractere repetido for encontrado, imprima o contador de IDs e aumente o número de IDs impressos.
Tentarei abster-me de fazer uma declaração na mesma linha de "
AWK
deveria ter a capacidade de fazer expressões regulares mais robustas", mas será difícil.fonte
Utilitários Bash + GNU, 35
Experimente online .
fonte
Ruby , 47 bytes
Experimente online!
Se você não gosta das aspas, são 50 bytes
Experimente online!
fonte
Pip , 22 bytes
Experimente online!
Explicação
fonte