チャレンジの説明
ラングフォード文字列の順序のは、N次のように定義されています。
- 文字列の長さに等しく
2*N、 - 文字列に
Nは英語のアルファベットの最初の文字が含まれ、各文字は2回表示されますが、 - 同じ文字の各ペアについて、ある
Mそれらの間の文字は、どこMアルファベットで、その文字の位置です(A = 1、B = 2、...、Z = 26)。
例えば、オーダーの2つのだけの可能なラングフォード文字列が3あるBCABACとCABACB。ご覧のとおり、これらの両方の文字列には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> #
ノート
- 順序のラングフォード文字列は
N、N ≡ 0 (mod 4)またはの場合にのみ生成できますN ≡ 3 (mod 4)。 - 小文字と大文字の両方を使用できますが、
- 後続の番号も使用できます(
012...またはの123...代わりにABC...) - 出力として表示される文字列の順序は指定されていませんが、
- 出力は非常に長くなる可能性があります(たとえば、5兆を超える異なるラングフォードの順序の文字列があり
20ます)。したがって、プログラムは実際にすべてを出力する必要はありませんが、理論的には動作する必要があります(十分な時間とメモリが与えられます)。 - この課題は/ r / dailyprogrammerから取られました。すべてのクレジットは/ u / XenophonOfAthensに送られます
4
サンドボックスには密接に関連する課題があります。決して必要ではありませんが、通常は重複をチェックするのも良い考えです。
—
マーティンエンダー
数字の配列だけを出力できますか?
—
リーキー修道女
@LeakyNun:もちろんです。説明を更新しました。
—
shooqie