아시다시피 DNA 에는 아데닌 ( A
), 시토신 ( C
), 구아닌 ( G
) 및 티민 ( T
)의 네 가지 염기가 있습니다 . 일반적 A
으로 결합 T
과 C
함께 결합 G
의 "가로대"의 형성, DNA 이중 나선 구조 .
우리는 정의 보완 즉의 보수 - 염기가 그 채권을 기초로 A
한다 T
,의 보완 T
이다 A
,의 보완 C
이다 G
과의 보완 G
이다 C
. 또한 DNA 문자열의 보수를 각 염기가 보완 된 문자열로 정의 할 수 있습니다 (예 : GATATC
is 의 보수 ) CTATAG
.
DNA의 이중 가닥 구조로 인해 한 가닥의 염기는 다른 가닥의 염기와 상보 적입니다. 그러나 DNA에는 방향이 있으며 DNA 전사는 두 가닥에서 반대 방향으로 발생합니다. 따라서 분자 생물 학자들은 종종 DNA 스트링 의 역 보체 에 관심이 있습니다.
이전 예제를 확장하려면의 역 보완 GATATC
이다 CTATAG
, 그래서 뒤로 GATATC
. 보시다시피,이 예에서 역 보체는 원래 문자열과 같습니다. 우리는 이러한 문자열을 역 회문이라고 합니다. *
DNA 문자열이 주어지면 역 회문 인 가장 긴 하위 문자열을 찾을 수 있습니까?
* 나는 Palindrome 의 일반적인 의미와 구별하기 위해 Rosalind 에서 가져온 "Reverse palindrome"이라는 용어를 사용합니다 .
입력
입력은 ACGT
대문자 로만 구성된 단일 문자열 입니다. 이 도전에 대한 함수 또는 전체 프로그램을 작성할 수 있습니다.
산출
인쇄 또는 반송을 통해 출력하도록 선택할 수 있습니다 (후자의 선택은 기능의 경우에만 사용 가능).
고유 한 솔루션이있는 경우 프로그램은 입력 문자열의 가장 긴 역 palindromic 하위 문자열을 출력해야합니다. 여러 솔루션이 존재하는 경우 솔루션 중 하나를 출력하거나 모두 선택할 수 있습니다 (선택). 당신이 그들 모두를 출력하도록 선택하면 복제는 괜찮습니다.
입력은 길이 2 이상의 솔루션을 보장합니다.
작동 예
ATGGATCCG -> GGATCC
역 보완 GGATCC
자체는 ( GGATCC --complement--> CCTAGG --reverse--> GGATCC
)이므로 GGATCC
역 회문도 마찬가지 입니다. GATC
또한 역 palindome이지만 가장 긴 것은 아닙니다.
테스트 사례
AT -> AT
CGT -> CG
AGCA -> GC
GATTACA -> AT, TA
ATGGATCCG -> GGATCC
CCCCCGGGGG -> CCCCCGGGGG
ACATATATAGACT -> ATATAT, TATATA
ATTCGATCTATGTAAAGAGG -> TCGA, GATC
CGCACGTCTACGTACCTACGTAG -> CTACGTAG
TCAATGCATGCGGGTCTATATGCAT -> ATGCAT, GCATGC [, ATGCAT]
CGCTGAACTTTGCCCGTTGGTAGAACGGACTGATGTGAACGAGTGACCCG -> CG, GC, TA, AT [, GC, CG, CG, CG, CG]
CTCGCGTTTGCATAACCGTACGGGCGGAACAGTCGGCGGTGCCTCCCAGG -> CCGTACGG
채점
이것은 코드 골프이므로 가장 적은 바이트의 솔루션이 이깁니다.