ラングフォード弦


11

チャレンジの説明

ラングフォード文字列の順序のは、N次のように定義されています。

  • 文字列の長さに等しく2*N
  • 文字列にNは英語のアルファベットの最初の文字が含まれ、各文字は2回表示されますが、
  • 同じ文字の各ペアについて、あるMそれらの間の文字は、どこMアルファベットで、その文字の位置です(A = 1B = 2...Z = 26)。

例えば、オーダーの2つのだけの可能なラングフォード文字列が3あるBCABACCABACB。ご覧のとおり、これらの両方の文字列にはA、2つの文字の間に1つの文字、2つの文字の間に2つの文字、Bおよび3つの文字の間に3つの文字がありCます。正の整数を指定するとN、すべての順序のラングフォード文字列を出力しますN(合理的な形式で:改行で区切って1つずつ印刷し、リスト/配列を返します...)。

サンプル入力/出力

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

ノート

  • 順序のラングフォード文字列はNN ≡ 0 (mod 4)またはの場合にのみ生成できますN ≡ 3 (mod 4)
  • 小文字と大文字の両方を使用できますが、
  • 後続の番号も使用できます(012...またはの123...代わりにABC...
  • 出力として表示される文字列の順序は指定されていませんが、
  • 出力は非常に長くなる可能性があります(たとえば、5兆を超える異なるラングフォードの順序の文字列があり20ます)。したがって、プログラムは実際にすべてを出力する必要はありませんが、理論的には動作する必要があります(十分な時間とメモリが与えられます)。
  • この課題は/ r / dailyprogrammerから取られました。すべてのクレジットは/ u / XenophonOfAthensに送られます

4
サンドボックスには密接に関連する課題があります。決して必要ではありませんが、通常は重複をチェックするのも良い考えです。
マーティンエンダー

数字の配列だけを出力できますか?
リーキー修道女

@LeakyNun:もちろんです。説明を更新しました。
shooqie

1
私はこれを参照します(プログラムを実行します)
Leaky Nun

回答:



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.