Dây Langford


11

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 Ncá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ó Mchữ giữa chúng, nơi Mlà 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ể 3BCABACCABACB. Như bạn có thể thấy, trong cả hai chuỗi này có một chữ cái nằm giữa Ahai chữ cái, hai chữ cái nằm giữa Bvà 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 Nchỉ có thể được sản xuất khi N ≡ 0 (mod 4)hoặc N ≡ 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ặc 123...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

1
Tôi đề cập đến điều này (chạy chương trình)
Leaky Nun

Câu trả lời:


3

CJam (23 byte)

{,2*e!{__f{\a/1=,(}=},}

Bản demo trực tuyến . Đây là một khối ẩn danh (hàm) nhận đầu vào trên ngăn xếp và để lại đầu ra trên ngăn xếp dưới dạng một mảng các mảng của các số nguyên tuần tự dựa trên 0.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.