Dadas 2 entradas (m = identificación inicial mínima , n = número de identificadores ), genera una lista secuencial de identificadores, comenzando en> = m, compuesta por los dígitos 0-9 donde no hay 2 números contiguos iguales, por ejemplo, 1232 es ok, 1233 no lo es (contiene 2 '3 al lado del otro).
Ejemplo
para m = 985, n = 6, a continuación se muestran los identificadores que se generarían / omitirían
...
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
...
Salida
Cada ID debe imprimirse en una nueva línea, como en la secuencia anterior:
985
986
987
989
1010
1012
Reglas
Reglas estándar de código de golf, el conteo de bytes más bajo gana
code-golf
subsequence
beirtipol
fuente
fuente
Respuestas:
Jalea , 6 bytes
Pruébalo en línea!
¿Cómo funciona?
fuente
Brachylog ,
1110 bytesLa entrada es una lista de dos números. Pruébalo en línea!
Explicación
El incorporado
ḅ
toma una lista o cadena, como"1000220"
, y la divide en bloques de elementos adyacentes iguales, como["1","000","22","0"]
. En este programa, le aplico el~
operador, por lo que funciona a la inversa: toma una lista de cadenas, comprueba que cada cadena consta de repeticiones de un solo carácter y las cadenas vecinas tienen caracteres diferentes, y concatena la lista. El predicado≤
enumera los números comenzando desde la primera entrada en orden creciente, y verifico una condición en ellos, imprimiendo los que lo satisfacen y deteniéndome cuando encuentro suficiente.fuente
05AB1E , 9 bytes
Pruébalo en línea!
Exlpacion
fuente
Java 8, 83 bytes
Explicación:
Pruébalo en línea.
fuente
PowerShell , 59 bytes
Pruébalo en línea!
Básicamente similar a las otras respuestas. Bucles siempre que nos queden números para imprimir (
for(;$n)
), comprueba si tenemos una coincidencia de expresiones regulares contra un doble dígito y, de lo contrario, lo pone en la tubería y disminuye$n
. Luego incrementamos$m
y repetimos nuevamente. Los elementos se recogen de la tubería y lo implícitoWrite-Output
nos da una salida separada de la nueva línea de forma gratuita.fuente
R ,
1119271 bytesPruébalo en línea!
Utiliza
grepl
para buscar dígitos repetidos.fuente
Jalea , 9 bytes
Pruébalo en línea!
Si no es por la restricción de salida,
Y
se puede eliminar.fuente
C, 73 bytes
Pruébalo en línea!
fuente
Perl 6 , 56 bytes
Intentalo
Expandido:
fuente
Retina , 34 bytes
Pruébalo en línea! Toma
n
ym
como entrada en líneas separadas. Explicación:Apague la salida automática y elimine
n
del búfer de trabajo.Repite
n
veces.Imprima el valor de
m
al final del siguiente grupo en bucle.Bucle mientras hay dígitos contiguos.
Convierte a unario.
Cuente el número de cadenas vacías, que es uno más que el número de caracteres, sumando 1 y convirtiendo de nuevo a decimal. Esto termina el ciclo interno.
Después de imprimir
m
, agregue 1 nuevamente de la misma manera. (La última línea no necesita unC`
porque es el tipo de etapa predeterminado para la última línea). El bucle externo está implícitamente terminado.Tenga en cuenta que convertir a unario y volver a decimal es un poco lento; para 39 bytes, una versión que no realiza ninguna conversión:
Pruébalo en línea! Explicación:
$.(
calcula la longitud del resto de la sustitución, convenientemente sin expandirla realmente; como la longitud de*_
es implícitamente el valor coincidente y la longitud de_
es, por supuesto, 1, esto solo incrementa el valor.fuente
Perl 5.10.0 +
-n
,4039 bytesPruébalo en línea!
-1 byte gracias a Xcali
Entrada en dos líneas, primero n, luego m. Asegúrese de que NO haya nueva línea después de m:
fuente
Perl 5 ,
-ln
33 bytesIngrese 2 líneas en STDIN, primero inicie la identificación y luego cuente
Pruébalo en línea!
fuente
$n.=<>
funcionaba así, especialmente con el-=
...$n
puede ser0
así que hacer ambas cosas juntas está malPython 2 ,
8073 bytes-7 bytes gracias al Sr. Xcoder
Pruébalo en línea!
fuente
Haskell , 70 bytes
-19 bytes gracias a nimi.
Pruébalo en línea!
17 bytes dedicados a la separación por nuevas líneas.
fuente
mapM
yprint
. Pruébalo en línea!Stax ,
98 bytes CP437Pruébalo en línea!
Sucede para coincidir con el algoritmo de @ Mr.Xcoder en su respuesta de Jelly.
-1 byte por comentario de @recursive.
Explicación
Utiliza el formato desempaquetado para explicar.
fuente
Haskell ,
949391 bytes-1 byte gracias a Laikoni
-2 bytes gracias a Zgarb
Pruébalo en línea!
Primero Haskell golf.
fuente
group(show a)
puede sergroup$show a
.(<2).length
puede sernull.tail
Pyth , 12 bytes
Pruébalo aquí
fuente
JavaScript (ES6), 50 bytes
Toma entrada en la sintaxis de curry
(m)(n)
.Pruébalo en línea!
fuente
C # (.NET Core), 91 bytes
Puerto de @Steadybox 'C respuesta.
Pruébalo en línea.
fuente
Perl 5 (
-nl
), 42 bytesPruébalo en línea!
fuente
AWK , 90 bytes
Pruébalo en línea!
Esto es mucho más feo de lo que pensé que sería. Descubrí que
AWK
solo tiene sustitución de retroceso en sugensub
función, lo que haría que su uso no fuera muy eficiente.Por lo tanto, este es un enfoque muy sencillo de incrementar un contador de ID, dividir el contador en cada carácter, recorrer los caracteres para ver si algún carácter es el mismo que el anterior. Si no se encuentran caracteres repetidos, imprima el contador de ID e incremente el número de ID impresos.
Intentaré abstenerme de hacer una declaración en la línea de "
AWK
debería tener la capacidad de hacer expresiones regulares más robustas", pero será difícil.fuente
Bash + GNU utilidades, 35
Pruébalo en línea .
fuente
Ruby , 47 bytes
Pruébalo en línea!
Si no le gustan las comillas, son 50 bytes
Pruébalo en línea!
fuente
Pip , 22 bytes
Pruébalo en línea!
Explicación
fuente