Deskripsi tantangan
Sebuah tali Langford order N
didefinisikan sebagai berikut:
- Panjang string sama dengan
2*N
, - String berisi
N
huruf pertama dari alfabet bahasa Inggris, setiap huruf muncul dua kali, - Untuk setiap pasangan huruf yang sama, ada
M
surat-surat antara mereka, di manaM
posisi bahwa surat di alfabet (A = 1
,B = 2
,...
,Z = 26
).
Sebagai contoh, hanya dua untaian urutan Langford yang mungkin 3
adalah BCABAC
dan CABACB
. Seperti yang Anda lihat, dalam kedua string ini ada satu huruf antara dua A
, dua huruf antara B
dan tiga huruf antara C
. Dengan bilangan bulat positif N
, hasilkan semua string Langford pesanan N
(dalam format apa pun yang masuk akal: cetak satu per satu dipisahkan oleh baris baru, kembalikan daftar / array ...).
Input / output sampel
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> #
Catatan
- Langford strings of order
N
hanya dapat diproduksi ketikaN ≡ 0 (mod 4)
atauN ≡ 3 (mod 4)
, - Anda dapat menggunakan huruf besar dan kecil,
- Anda juga dapat menggunakan nomor berikutnya (
012...
atau123...
bukanABC...
) - Urutan string di mana mereka akan muncul karena output tidak ditentukan,
- Keluaran bisa sangat panjang (misalnya, ada lebih dari 5 triliun urutan Langford yang berbeda
20
), sehingga program Anda sebenarnya tidak perlu menampilkan semuanya, tetapi harus bekerja secara teori (diberikan waktu dan memori yang cukup). - Tantangan ini telah diambil dari / r / dailyprogrammer , semua kredit diberikan ke / u / XenophonOfAthens
Jawaban:
CJam (23 byte)
Demo online . Ini adalah blok anonim (fungsi) yang mengambil input pada stack dan meninggalkan output pada stack dalam bentuk array array dari integer berurutan berbasis 0.
sumber
Brachylog , 43 byte
Cobalah online!
sumber