Đầu vào:
- Một số nguyên
n
trong phạm vi2 <= n <= 10
- Danh sách các số nguyên dương
Đầu ra:
Chuyển đổi các số nguyên thành biểu diễn nhị phân của chúng (không có bất kỳ số 0 đứng đầu nào) và nối tất cả chúng lại với nhau.
Sau đó, xác định tất cả các chuỗi con nhị phân tạo thành một 'hàng rào nhị phân' bằng cách sử dụng n
số lượng hàng rào. Các khoảng trống (số không) giữa mỗi cột hàng rào là không liên quan (ít nhất là 1), nhưng bản thân các hàng rào phải có chiều rộng bằng nhau.
Ở đây các biểu thức chính các chuỗi con nhị phân phải khớp với từng 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
Nhìn vào các n=4
ví dụ:
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
Sau đó, chúng tôi xuất ra các số sử dụng chữ số nhị phân của 'hàng rào nhị phân' phù hợp.
Thí dụ:
Input: n=4
,L=[85,77,71]
Biểu diễn nhị phân của các số nguyên này được nối với nhau là:
1010101 1001101 1000111
(LƯU Ý: Các khoảng trắng chỉ được thêm vào dưới dạng làm rõ cho ví dụ).
Vì n=4
, chúng tôi tìm kiếm các chuỗi con phù hợp với biểu thức chính quy (1+)0+\10+\10+\1
, trong trường hợp đó chúng tôi có thể tìm thấy hai:
1010101
(tại vị trí (1010101) 1001101 1000111
); và 11001101100011
(tại vị trí 101010(1 1001101 100011)1
)
Hàng rào nhị phân đầu tiên chỉ sử dụng các chữ số nhị phân từ 85
và hàng rào nhị phân thứ hai sử dụng các chữ số nhị phân từ cả ba số nguyên. Vì vậy, đầu ra trong trường hợp này sẽ là:
[[85],[85,77,71]]
Quy tắc thử thách:
- Mặc dù nó cũng được đề cập trong ví dụ trên, câu cuối cùng là một câu quan trọng: Chúng tôi đưa ra các số mà các chữ số nhị phân được sử dụng trong chuỗi con 'hàng rào nhị phân'.
- I / O là linh hoạt. Đầu vào có thể là một danh sách / mảng / luồng số nguyên, chuỗi được phân cách bằng dấu cách / dấu phẩy / dòng mới, v.v. Đầu ra có thể là một danh sách số nguyên 2D, một chuỗi phân tách đơn, một danh sách chuỗi, dòng mới được in thành STDOUT, v.v. Tất cả tùy thuộc vào bạn, nhưng vui lòng cho biết những gì bạn đã sử dụng trong câu trả lời của mình.
- Thứ tự đầu ra của danh sách là không liên quan, nhưng đầu ra của mỗi danh sách bên trong tất nhiên theo cùng thứ tự với danh sách đầu vào. Vì vậy, với ví dụ trên,
[[85,77,71],[85]]
là một đầu ra hợp lệ là tốt, nhưng[[85],[77,85,71]]
không phải. - Như bạn có thể đã nhận thấy từ ví dụ (the
85
), chữ số nhị phân có thể được sử dụng nhiều lần. - Các regexes phải phù hợp hoàn toàn với chuỗi con. Vì vậy,
110101
hoặc010101
không bao giờ là một 'hàng rào nhị phân' hợp lệ (10101
tuy nhiên, iffn=3
). - Các mục trong danh sách đầu ra không phải là duy nhất, chỉ các vị trí nhị phân của 'hàng rào nhị phân' là duy nhất. Nếu nhiều 'hàng rào nhị phân' có thể được tạo với cùng một số nguyên, chúng tôi sẽ thêm chúng nhiều lần vào danh sách đầu ra.
Ví dụ :n=2
,L=[109, 45]
(nhị phân1101101 101101
) có thể tạo các chuỗi con 'hàng rào nhị phân' này:11011
(tại vị trí(11011)01 101101
);101
(tại vị trí1(101)101 101101
);11011
(tại vị trí110(1101 1)01101
);101
(tại vị trí1101(101) 101101
);11011
(tại vị trí110110(1 1011)01
);101
(tại vị trí1101101 (101)101
);101
(tại vị trí1101101 101(101)
), vì vậy đầu ra sẽ là[[109],[109],[109,45],[109],[109,45],[45],[45]]
.
Một ví dụ khác :n=2
,L=[8127]
(nhị phân1111110111111
) có thể tạo thành các chuỗi con 'hàng rào nhị phân' này:1111110111111
(tại vị trí(1111110111111)
);11111011111
(tại vị trí1(11111011111)1
);111101111
(tại vị trí11(111101111)11
);1110111
(tại vị trí111(1110111)111
);11011
(tại vị trí1111(11011)1111
);101
(tại vị trí11111(101)11111
), vì vậy đầu ra sẽ là[[8127],[8127],[8127],[8127],[8127],[8127]]
. - Nếu không có đầu ra hợp lệ là có thể, bạn có thể trả về một danh sách trống hoặc một số loại khác của sản lượng falsey (
null
,false
, ném một lỗi, vv Một lần nữa, cuộc gọi của bạn).
Quy tắc chung:
- Đây là môn đánh gôn , vì vậy câu trả lời ngắn nhất bằng byte thắng.
Đừng để ngôn ngữ mã-golf ngăn cản bạn đăng câu trả lời với các ngôn ngữ không mã hóa. Cố gắng đưa ra một câu trả lời càng ngắn càng tốt cho ngôn ngữ lập trình 'bất kỳ'. - Các quy tắc chuẩn áp dụng cho câu trả lời của bạn, vì vậy bạn được phép sử dụng STDIN / STDOUT, các hàm / phương thức với các tham số thích hợp và kiểu trả về, các chương trình đầy đủ. Cuộc gọi của bạn.
- Lỗ hổng mặc định bị cấm.
- Nếu có thể, vui lòng thêm một liên kết với một bài kiểm tra cho mã của bạn (ví dụ TIO ).
- Ngoài ra, thêm một lời giải thích cho câu trả lời của bạn rất được khuyến khích.
Các trường hợp thử nghiệm:
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]
hợp lệ cho testcase 4? Tôi thấy hàng rào(1 10 11)
2, [10, 10]
, điều này sẽ dẫn đến [[10],[10,10],[10]]
nếu tôi hiểu thử thách chính