Mô tả thử thách
Một chuỗi thứ tự LangfordN
được định nghĩa như sau:
- Độ dài của chuỗi bằng
2*N
, - Chuỗi chứa
N
các chữ cái đầu tiên của bảng chữ cái tiếng Anh, mỗi chữ cái xuất hiện hai lần, - Đối với mỗi cặp của các chữ cái giống nhau, có
M
chữ giữa chúng, nơiM
là vị trí của bức thư đó trong bảng chữ cái (A = 1
,B = 2
,...
,Z = 26
).
Chẳng hạn, hai chuỗi trật tự Langford duy nhất có thể 3
là BCABAC
và CABACB
. Như bạn có thể thấy, trong cả hai chuỗi này có một chữ cái nằm giữa A
hai chữ cái, hai chữ cái nằm giữa B
và ba chữ cái nằm giữa C
. Cho một số nguyên dương N
, xuất tất cả các chuỗi thứ tự Langford N
(ở bất kỳ định dạng hợp lý nào: in từng chuỗi một cách nhau bởi một dòng mới, trả về một danh sách / mảng ...).
Đầu vào / đầu ra mẫu
3: [CABACB, BCABAC]
4: [DACABDCB, BCDBACAD]
5: # no output #
7: [GCFBECBDGFEADA, GBFCBDECGFDAEA, GBDFBCEDGCFAEA, GCAFACDEGBFDBE, GADAFCEDGCBFEB, GACAFDCEGBDFBE, GDAEAFDCGEBCFB, GBDEBFCDGECAFA, EGBFCBEDCGFADA, CGDFCBEDBGFAEA, EGDAFAEDCGBFCB, EGBCFBECDGAFAD, AGABFDBECGDFCE, EGADAFECDGBCFB, AGABEFBCDGECFD, BGDBCEFDCGAEAF, FBGDBCEFDCGAEA, BFGBAEADFCGEDC, CFGACADEFBGDBE, EAGAFBEDBCGFDC, BCGBFCEADAGFED, DAGAFDBECBGFCE, EBGCBFECDAGAFD, CEGDCFBEDBGAFA, CEGBCFBEDAGAFD, BDGBCFDECAGAFE, EFAGACEDFCBGDB, DFAGADEBFCBGEC, AFAGBDEBFCDGEC, DFAGADCEFBCGBE, ECFGBCEBDFAGAD, DEFGADAECFBGCB, CDFGCBDEBFAGAE, EBDGBFEDACAGFC, CDEGCFDAEABGFB, AEAGCDFECBDGBF, FAEAGCDFECBDGB, DFCEGDCBFEBAGA, BFCBGDCEFADAGE, ECFDGCEBDFBAGA, DAFAGDCEBFCBGE, BCFBGCDEAFADGE, AEAFGBDEBCFDGC, ADAFGCDEBCFBGE, AFACEGDCFBEDBG, BFCBEGCDFAEADG, EBFDBGECDFACAG, BEFBCGDECFADAG, EBDFBGEDCAFACG, AEAFCGDECBFDBG, AEADFGCEDBCFBG, ADAEFGDBCEBFCG]
12: # <216288 strings> #
Ghi chú
- Chuỗi đơn hàng Langford
N
chỉ có thể được sản xuất khiN ≡ 0 (mod 4)
hoặcN ≡ 3 (mod 4)
, - Bạn có thể sử dụng cả chữ thường và chữ in hoa,
- Bạn cũng có thể sử dụng các số tiếp theo (
012...
hoặc123...
thay vìABC...
) - Thứ tự các chuỗi trong đó chúng sẽ xuất hiện dưới dạng đầu ra là không xác định,
- Đầu ra có thể khá dài (ví dụ, có hơn 5 nghìn tỷ chuỗi đơn hàng Langford riêng biệt
20
), vì vậy chương trình của bạn không thực sự cần phải xuất tất cả, nhưng nó phải hoạt động trên lý thuyết (có đủ thời gian và bộ nhớ). - Thử thách này đã được thực hiện từ / r / Dailyprogrammer , tất cả tín dụng được chuyển đến / u / XenophonOfAthens
4
Có một thách thức liên quan chặt chẽ trong hộp cát. Mặc dù không có cách nào yêu cầu, nó thường là một ý tưởng tốt và có thể lịch sự để kiểm tra ở đó cũng như cho các bản sao.
—
Martin Ender
Chúng ta có thể chỉ xuất ra một mảng các số?
—
Nữ tu rò rỉ
@LeakyNun: Chắc chắn, tại sao không. Tôi cập nhật mô tả.
—
shooqie