Bildiğiniz gibi, DNA'da dört baz vardır - adenin ( A
), sitozin ( C
), guanin ( G
) ve timin ( T
). Tipik A
ile bağlar T
ve C
ile bağlar G
ve "basamakları" oluşturan DNA çift sarmal yapısı .
Bu tanımlar tamamlayıcı yani tamamlayıcı - bir baz ile o bağları temel olduğu A
olduğu T
, tamamlayıcısı T
olan A
, tamamlayıcısı C
olan G
ve tamamlayıcı G
olan C
. Ayrıca örneğin tamamlayıcı tamamlanmaktadır, her baz ile dize için bir DNA dizisinin tamamlayıcı tanımlayabilir GATATC
IS CTATAG
.
DNA'nın çift sarmallı yapısı nedeniyle, bir sarmal üzerindeki bazlar, diğer sarmal üzerindeki bazları tamamlayıcıdır. Bununla birlikte DNA'nın bir yönü vardır ve DNA transkripsiyonu iki şerit üzerinde zıt yönlerde meydana gelir. Bu nedenle moleküler biyologlar genellikle bir DNA dizisinin ters komplemanı ile ilgilenirler - kelimenin tam anlamıyla ipin komplemanının tersi.
Daha önceki örnekte uzatmak için, ters tamamlayıcı GATATC
olan CTATAG
, yani geriye GATATC
. Fark etmiş olabileceğiniz gibi, bu örnekte ters tamamlayıcı orijinal dizeye eşittir - böyle bir dizeye ters palindrom diyoruz . *
Bir DNA dizisi verildiğinde, ters palindrom olan en uzun alt dizeyi bulabilir misiniz?
* Palindromun olağan anlamından ayırt etmek için Rosalind'den alınan "ters palindrom" terimini kullanıyorum .
Giriş
Girdi, yalnızca ACGT
büyük harf karakterlerden oluşan tek bir dize olacaktır . Bu zorluk için bir işlev veya tam bir program yazabilirsiniz.
Çıktı
Çıktıyı yazdırma veya geri gönderme yoluyla seçebilirsiniz (ikinci seçenek yalnızca bir işlev durumunda kullanılabilir).
Benzersiz bir çözüm varsa, programınız giriş dizesinin en uzun ters palindromik alt dizesini çıkarmalıdır. Birden fazla çözüm varsa, bunlardan herhangi birini veya tümünü (seçiminiz) çıktı alabilirsiniz. Hepsini çıkarmayı seçerseniz, kopyalar tamamdır.
Girişin en az 2 uzunluğunda bir çözeltisi olması garanti edilir.
Çalışılan örnek
ATGGATCCG -> GGATCC
Ters tamamlayıcı GGATCC
kendisi ( GGATCC --complement--> CCTAGG --reverse--> GGATCC
), yani GGATCC
ters palindromdur. GATC
aynı zamanda bir ters palindomdur, ancak en uzun olanı değildir.
Test senaryoları
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
puanlama
Bu kod golf, bu yüzden en az bayt içindeki çözüm kazanır.