랭 포드 현


11

도전 설명

랭 포드 문자열 순서는 N다음과 같이 정의된다 :

  • 문자열의 길이가 같은지 2*N,
  • 문자열에는 N영어 알파벳의 첫 글자가 포함 되며 각 글자는 두 번 나타납니다.
  • 같은 문자의 각 쌍의 경우, 거기에 M그들 사이의 문자가 어디 M알파벳에서 해당 문자의 위치는 ( A = 1, B = 2, ..., Z = 26).

예를 들어, 가능한 두 개의 Langford 순서 문자열 3BCABACCABACB입니다. 보시다시피,이 두 문자열에는 A두 개의 문자 사이에 하나의 문자가 있고 두 개의 문자 사이에 두 개의 문자가 B있고 사이에 세 개의 문자가 C있습니다. 양의 정수가 주어지면 N모든 Langford 순서의 문자열을 출력하십시오 N(합리적인 형식으로 줄 바꿈으로 구분하여 하나씩 인쇄하고 목록 / 배열을 반환하십시오 ...).

샘플 입력 / 출력

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
샌드 박스에는 밀접한 관련 문제가 있습니다. 어떤 식 으로든 요구되는 것은 아니지만 일반적으로 거기에서 중복을 확인하는 것이 좋습니다.
Martin Ender

숫자 배열을 출력 할 수 있습니까?
Leaky Nun

@LeakyNun : 물론 이죠. 설명을 업데이트했습니다.
shooqie

1
나는 참조 (프로그램을 실행)
새는 수녀에게

답변:


3

CJam (23 바이트)

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

온라인 데모 . 익명 블록 (함수)은 스택에 입력을 취하고 0 기반 순차 정수 배열의 배열 형태로 스택에 출력을 남깁니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.