Entrada:
- Un entero
n
en el rango2 <= n <= 10
- Una lista de enteros positivos
Salida:
Convierta los enteros a su representación binaria (sin ceros a la izquierda), y únalos a todos juntos.
Luego determine todas las subcadenas binarias que forman una 'cerca binaria' usando la n
cantidad de postes de cerca. Los espacios (ceros) entre cada poste de la cerca son irrelevantes (al menos 1), pero los postes de la cerca deben tener el mismo ancho.
Aquí las expresiones regulares que las subcadenas binarias deben coincidir para cadan
:
n Regex to match to be a 'binary fence' Some examples
2 ^(1+)0+\1$ 101; 1100011; 1110111;
3 ^(1+)0+\10+\1$ 10101; 1000101; 110011011;
4 ^(1+)0+\10+\10+\1$ 1010101; 110110011011; 11110111100001111001111;
etc. etc. You get the point
Mirando los n=4
ejemplos:
1010101
^ ^ ^ ^ All fence posts have a width of one 1
^ ^ ^ with one or more 0s in between them
110110011011
^^ ^^ ^^ ^^ All fence posts have a width of two 1s
^ ^^ ^ with one or more 0s in between them
11110111100001111001111
^^^^ ^^^^ ^^^^ ^^^^ All fence posts have a width of four 1s
^ ^^^^ ^^ with one or more 0s in between them
Luego sacamos los números que usan dígitos binarios de las coincidencias 'cercas binarias'.
Ejemplo:
Entrada: n=4
,L=[85,77,71]
La representación binaria de estos enteros unidos es:
1010101 1001101 1000111
(NOTA: Los espacios solo se agregan como aclaración para el ejemplo).
Desde entonces n=4
, buscamos subcadenas que coincidan con la expresión regular (1+)0+\10+\10+\1
, en cuyo caso podemos encontrar dos:
1010101
(en la posición (1010101) 1001101 1000111
); y 11001101100011
(en la posición 101010(1 1001101 100011)1
)
La primera cerca binaria solo usa dígitos binarios de 85
, y la segunda cerca binaria usa dígitos binarios de los tres enteros. Entonces la salida en este caso sería:
[[85],[85,77,71]]
Reglas de desafío:
- Aunque también se menciona en el ejemplo anterior, la última oración es importante: sacamos los números para los que se utilizan dígitos binarios en la subcadena 'cerca binaria'.
- I / O es flexible. La entrada puede ser una lista / matriz / secuencia de enteros, espacio / coma / cadena delimitada por nueva línea, etc. La salida puede ser una lista entera en 2D, una sola cadena delimitada, una lista de cadenas, una nueva línea impresa en STDOUT, etc. Todo depende de usted, pero indique lo que ha utilizado en su respuesta.
- El orden de salida de la lista en sí es irrelevante, pero la salida de cada lista interna es, por supuesto, en el mismo orden que la lista de entrada. Entonces, con el ejemplo anterior, también
[[85,77,71],[85]]
es una salida válida, pero[[85],[77,85,71]]
no lo es. - Como ya habrás notado en el ejemplo (the
85
), los dígitos binarios se pueden usar varias veces. - Las expresiones regulares deben coincidir con la subcadena por completo. Por lo tanto,
110101
o010101
no son nunca una 'cerca binaria' válida (10101
es, sin embargo, iffn=3
). - Los elementos en la lista de salida no son únicos, solo las posiciones binarias de las 'cercas binarias' son únicas. Si se pueden crear múltiples 'cercas binarias' con los mismos enteros, los agregamos varias veces a la lista de salida.
Por ejemplo:n=2
,L=[109, 45]
(binario1101101 101101
) puede formar estas subcadenas 'valla binario':11011
(en la posición(11011)01 101101
);101
(en la posición1(101)101 101101
);11011
(en la posición110(1101 1)01101
);101
(en la posición1101(101) 101101
);11011
(en la posición110110(1 1011)01
);101
(en la posición1101101 (101)101
);101
(en la posición1101101 101(101)
), entonces la salida sería[[109],[109],[109,45],[109],[109,45],[45],[45]]
.
Otro ejemplo:n=2
,L=[8127]
(binario1111110111111
) puede formar estas subcadenas 'valla binario':1111110111111
(en la posición(1111110111111)
);11111011111
(en la posición1(11111011111)1
);111101111
(en la posición11(111101111)11
);1110111
(en la posición111(1110111)111
);11011
(en la posición1111(11011)1111
);101
(en la posición11111(101)11111
), entonces la salida sería[[8127],[8127],[8127],[8127],[8127],[8127]]
. - Si no hay salida válida es posible, puede devolver una lista vacía o algún otro tipo de salida Falsey- (
null
,false
, arroja un error, etc. Una vez más, su llamada).
Reglas generales:
- Este es el código de golf , por lo que la respuesta más corta en bytes gana.
No permita que los lenguajes de code-golf lo desanimen a publicar respuestas con lenguajes que no sean codegolfing. Trate de encontrar una respuesta lo más breve posible para 'cualquier' lenguaje de programación. - Aplican reglas estándar para su respuesta, por lo que puede usar STDIN / STDOUT, funciones / método con los parámetros adecuados y programas completos de tipo retorno. Tu llamada.
- Las lagunas predeterminadas están prohibidas.
- Si es posible, agregue un enlace con una prueba para su código (es decir, TIO ).
- Además, se recomienda agregar una explicación para su respuesta.
Casos de prueba:
Input: Output
(the binary below the output are added as clarification,
where the parenthesis indicate the substring matching the regex):
4, [85,77,71] [[85],[85,77,71]]
(1010101) 1001101 1000111; 101010(1 1001101 100011)1
2, [109,45] [[109],[109],[109,45],[109],[109,45],[45],[45]]
(11011)01 101101; 1(101)101 101101; 110(1101 1)01101; 1101(101) 101101; 110110(1 1011)01; 1101101 (101)101; 1101101 101(101)
3, [990,1,3,3023,15,21] [[990,1,3,3023],[990,1,3,3023],[1,3,3023],[21]]
(1111011110 1 11 1)01111001111 1111 10101; 11110(11110 1 11 101111)001111 1111 10101; 1111011110 (1 11 101111001111) 1111 10101; 1111011110 1 11 101111001111 1111 (10101)
2, [1,2,3,4,5,6,7,8,9,10] [[1,2,3],[2,3],[4,5],[5],[5,6,7],[6,7],[6,7],[8,9],[9],[10]]
(1 10 11) 100 101 110 111 1000 1001 1010; 1 (10 1)1 100 101 110 111 1000 1001 1010; 1 10 11 (100 1)01 110 111 1000 1001 1010; 1 10 11 100 (101) 110 111 1000 1001 1010; 1 10 11 100 10(1 110 111) 1000 1001 1010; 1 10 11 100 101 (110 11)1 1000 1001 1010; 1 10 11 100 101 1(10 1)11 1000 1001 1010; 1 10 11 100 101 110 111 (1000 1)001 1010; 1 10 11 100 101 110 111 1000 (1001) 1010; 1 10 11 100 101 110 111 1000 1001 (101)0
3, [1,2,3,4,5,6,7,8,9,10] [[4,5],[8,9]]
1 10 11 (100 101 )110 111 1000 1001 1010; 1 10 11 100 101 110 111 (1000 1001) 1010
10, [1,2,3,4,5,6,7,8,9,10] []
No binary fences are possible for this input
6, [445873,2075] [[445873,2075],[445873,2075],[445873,2075]]
(1101100110110110001 1)00000011011; 110(1100110110110001 100000011)011; 1101100(110110110001 100000011011)
2, [8127] [[8127],[8127],[8127],[8127],[8127],[8127]]
(1111110111111); 1(11111011111)1; 11(111101111)11; 111(1110111)111; 1111(11011)1111; 11111(101)11111
2, [10,10] [[10],[10,10],[10]]
(101)0 1010; 10(10 1)010; 1010 (101)0
4, [10,10,10] [[10,10],[10,10,10],[10,10]]
(1010 101)0 1010; 10(10 1010 1)010; 1010 (1010 101)0
[1,2,3]
válido para el caso de prueba 4? Veo la cerca(1 10 11)
2, [10, 10]
que debería traducirse en [[10],[10,10],[10]]
si entiendo el desafío correctl.y