입력:
n
범위 의 정수2 <= n <= 10
- 양의 정수 목록
산출:
정수를 선행 0없이 2 진 표현으로 변환하고 함께 결합하십시오.
그런 다음 n
펜스 포스트 양을 사용하여 '이진 펜스'를 형성하는 모든 이진 하위 문자열을 결정하십시오 . 각 펜스 기둥 사이의 공백 (0)은 관련이 없지만 (적어도 1) 펜스 기둥 자체의 너비는 모두 같아야합니다.
여기서 이진 부분 문자열의 정규 표현식은 각각에 대해 일치해야합니다 n
.
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
n=4
예제를 보면 :
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
그런 다음 'binary fences'와 일치하는 이진수를 사용하는 숫자를 출력합니다.
예:
입력 : n=4
,L=[85,77,71]
함께 결합 된이 정수의 이진 표현은 다음과 같습니다.
1010101 1001101 1000111
(참고 : 공백은 예제를위한 설명으로 만 추가됩니다).
이후 n=4
정규 표현식 (1+)0+\10+\10+\1
과 일치하는 하위 문자열을 찾습니다 .이 경우 두
1010101
위치를 찾을 수 있습니다 (1010101) 1001101 1000111
. 그리고 11001101100011
(위치 101010(1 1001101 100011)1
)
첫 번째 이진 펜스는의 이진수 만 사용 85
하고 두 번째 이진 펜스는 세 정수 모두의 이진수를 사용합니다. 따라서이 경우 출력은 다음과 같습니다.
[[85],[85,77,71]]
도전 규칙 :
- 위의 예에서도 언급되었지만 마지막 문장은 중요한 것입니다. 'binary fence'하위 문자열에서 이진수가 사용되는 숫자를 출력합니다.
- I / O는 유연합니다. 입력은 정수의 목록 / 배열 / 스트림, 공백 / 쉼표 / 줄 바꾸기 구분 문자열 등이 될 수 있습니다. 출력은 2D 정수 목록, 단일 구분 문자열, 문자열 목록, STDOUT에 인쇄 된 줄 바꿈 등이 될 수 있습니다. 모두 당신에게 달려 있지만 답에 사용한 것을 적어주십시오.
- 목록 자체의 출력 순서는 관련이 없지만 각 내부 목록의 출력은 물론 입력 목록과 동일한 순서입니다. 따라서 위의 예
[[85,77,71],[85]]
에서 유효한 출력도 있지만[[85],[77,85,71]]
그렇지 않습니다. - 예제 (
85
) 에서 이미 알 수 있듯이 이진수는 여러 번 사용할 수 있습니다. - 정규 표현식은 부분 문자열과 완전히 일치해야합니다. 그래서
110101
나010101
지금까지 유효한 '진 울타리'(아니다10101
그러나이며, IFFn=3
). - 출력 목록의 항목은 고유하지 않으며 '이진 펜스'의 이진 위치 만 고유합니다. 동일한 정수로 여러 개의 '이진 펜스'를 만들 수있는 경우이를 여러 번 출력 목록에 추가합니다.
예를 들어n=2
,L=[109, 45]
(이진1101101 101101
)이 '이진 울타리'문자열을 형성 할 수있다 :11011
(위치(11011)01 101101
);101
(위치1(101)101 101101
);11011
(위치110(1101 1)01101
);101
(위치1101(101) 101101
);11011
(위치110110(1 1011)01
);101
(위치1101101 (101)101
);101
(위치에서1101101 101(101)
) 출력은입니다[[109],[109],[109,45],[109],[109,45],[45],[45]]
.
다른 예 :n=2
,L=[8127]
(이진1111110111111
)이 '이진 울타리'문자열을 형성 할 수있다 :1111110111111
(위치(1111110111111)
);11111011111
(위치1(11111011111)1
);111101111
(위치11(111101111)11
);1110111
(위치111(1110111)111
);11011
(위치1111(11011)1111
);101
(위치에서11111(101)11111
) 출력은입니다[[8127],[8127],[8127],[8127],[8127],[8127]]
. - 유효한 출력이 없으면 빈 목록 또는 다른 종류의 잘못된 출력을 반환 할 수 있습니다 (
null
,false
오류가 발생하는 등의 경우 다시 호출).
일반 규칙:
- 이것은 code-golf 이므로 바이트 단위의 최단 답변이 이깁니다.
코드 골프 언어가 코드 골프 언어 이외의 언어로 답변을 게시하지 못하게하십시오. '모든'프로그래밍 언어에 대한 가능한 한 짧은 대답을 생각해보십시오. - 표준 규칙이 답변에 적용 되므로 STDIN / STDOUT, 적절한 매개 변수 및 반환 유형의 전체 프로그램과 함께 함수 / 방법을 사용할 수 있습니다. 당신의 전화.
- 기본 허점 은 금지되어 있습니다.
- 가능하면 코드 테스트 (예 : TIO ) 링크를 추가하십시오 .
- 또한 답변에 대한 설명을 추가하는 것이 좋습니다.
테스트 사례 :
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]
테스트 케이스 4에 유효 하지 않습니까? 나는 울타리를 본다(1 10 11)
2, [10, 10]
[[10],[10,10],[10]]