Langford telleri


11

Meydan okuma açıklaması

Bir Langford dize düzenin Naşağıdaki gibi tanımlanır:

  • Dizenin uzunluğu eşittir 2*N,
  • Dize N, İngiliz alfabesinin ilk harflerini içerir, her harf iki kez görünür,
  • Aynı harflerin her çifti için, orada Maralarında mektuplar, nerede Malfabesinde o harfin pozisyonudur ( A = 1, B = 2, ..., Z = 26).

Örneğin, düzenin sadece iki olası Langford dizeleri 3vardır BCABACve CABACB. Gördüğünüz gibi, bu dizgilerin her ikisinde de Aiki harf arasında bir harf, B' harf arasında iki harf ve C' harf arasında üç harf vardır . Olumlu bir tamsayı verildiğinde N, tüm Langford sipariş dizelerini çıktılayın N(makul herhangi bir formatta: bunları bir satırsonu ile ayrı ayrı yazdırın, bir liste / dizi döndürün ...).

Örnek girişler / çıkışlar

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> #

notlar

  • Düzenin Langford dizeleri Nsadece üretildiğinde edilebilir N ≡ 0 (mod 4)veya N ≡ 3 (mod 4),
  • Hem küçük hem de büyük harfleri kullanabilirsiniz,
  • Sonraki sayıları da kullanabilirsiniz ( 012...veya 123...yerine ABC...)
  • Çıktı belirtilmediğinde görünmeleri gereken dizelerin sırası,
  • Çıktı oldukça uzun olabilir (örneğin, 5 trilyondan fazla farklı Langford düzen dizisi vardır 20), bu nedenle programınızın aslında hepsini çıktılaması gerekmez, ancak teoride çalışması gerekir (yeterli zaman ve bellek verilir).
  • Bu zorluk / r / dailyprogrammer tarafından alınmıştır , tüm krediler / u / XenophonOfAthens

4
Kum havuzunda yakından ilgili bir zorluk var. Hiçbir şekilde gerekli olmamakla birlikte, genellikle kopyaları kontrol etmek de iyi bir fikir ve muhtemelen kibar.
Martin Ender

Bir sayı dizisi çıkartabilir miyiz?
Leaky Nun

@LeakyNun: Tabii, neden olmasın. Açıklamayı güncelledim.
shooqie

1
Ben atıfta bu (program çalıştırmak)
Çatlak rahibe

Yanıtlar:


3

CJam (23 bayt)

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

Çevrimiçi demo . Bu, yığına girdi alan ve çıktıya 0 tabanlı sıralı tamsayı dizileri dizisi biçiminde bırakan anonim bir bloktur (işlev).


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.