#genocon2021a. [genocon2021_a]Practice 1

[genocon2021_a]Practice 1

配点 : 100100

問題文

ssは文字A, C, G, Tからなる長さNNの文字列である.ssii 番目の文字はs\[i\]と記述する(1leqileqN1 \\leq i \\leq N). ここで,A, C, G, Tの各文字について相補文字を定義する.Aの相補文字はT, Tの相補文字はA, Cの相補文字はG, Gの相補文字はCとする.また,任意の文字aaの相補文字は,R(a)R(a)と記述することとする. このとき文字列ssについて,その逆相補鎖配列と呼ばれる文字列は次のように定義される: R(s\[N\]), R(s\[N-1\]),..., R(s\[2\]), R(s\[1\]). 例えば,AACGT の逆相補鎖配列はACGTTとなる.

mm本の入力文字列s1s_1,...,sms_mについて,それぞれの逆相補鎖配列を出力せよ.

制約

  • s1s_1,...,sms_mはA, C, G, Tからなる文字列である.
  • 1leqmleq1001 \\leq m \\leq 100とする.
  • 1leqs1,ldots,smleq10001 \\leq |s_1|, \\ldots, |s_m| \\leq 1000 (文字列xxの長さをx|x|と記述する.)

入力

入力は以下の形式で標準入力から与えられる.

mm s1s1 s2s2 :: smsm

出力

入力文字列の逆相補鎖配列を出力せよ.各逆相補鎖配列は一行で出力し,対応する入力文字列と同じ順序で出力すること.


入力例 1

6
CATAGAACGACTATT
TA
GCGGCTTTTTGAAGCGT
TACCTTGATCA
GGCGTGCATAG
T

出力例 1

AATAGTCGTTCTATG
TA
ACGCTTCAAAAAGCCGC
TGATCAAGGTA
CTATGCACGCC
A

問題の背景

この項目は読まなくても問題を解くことができますが,出題の背景となりますため,ご興味を持ってくださった方はお読みいただけると幸いです.

DNAと塩基配列

生物の構成に必要な遺伝情報はDNAに保存されています.それでは,DNAはどのようにして遺伝情報を持つのでしょうか?

ヌクレオチドが鎖状に連なった物質を一本鎖DNAと呼びます.DNAは,長さが同じで対応関係のある二本の一本鎖DNAが結合してらせん構造を形成した物質です.ここではまず,一本鎖DNAについて説明をします. 一本鎖DNAを構成する各ヌクレオチドは塩基を一つ含みます.塩基はアデニン(adenin), シトシン(cytosin), グアニン(guanine),チミン(thymine) の4種類です.そのため,各ヌクレオチドの塩基を鎖の端から順に読み取ると,4種類の記号から成る配列と解釈することができます.鎖の両端は,ヌクレオチドの構造に応じて一方を5'末端,他方を3'末端と区別することができるため,一般的には,5'端から$\rightarrow$3'端の向きに記号を読み取って配列とみなします. **この配列を,DNA配列,塩基配列,ゲノム配列などと呼びます**.配列の各要素は塩基の頭文字により表現します.例えば下図のように,5'末端$\rightarrow$3'末端に向かってアデニン,シトシン,シトシン,チミンが並んでいる場合は,ACCTと表記します.

DNAの構造,逆相補鎖

一本鎖DNAの各塩基は,特定の別の塩基と結合する性質を持っています.具体的には,アデニン(A)はチミン(T)と,シトシン(C)はグアニン(G)と互いに結合します.DNAを構成する二本の鎖は,向かい合う塩基同士が全て結合するような塩基の並びをしており,それゆえに,二本の鎖が離れることなく二重らせんを形成できるのです.ここで注意が必要なのは,二本の鎖は互いに逆向きに並んでいるということです.下図の下の鎖では,5'末端$\rightarrow$3'末端に向かってアデニン(A),シトシン(C),チミン(T),グアニン(G)と並んでいます.上の鎖では5'末端$\rightarrow$3'末端に向かってシトシン(C),アデニン(A),グアニン(G),チミン(T)と並んでおり,それぞれの塩基は上の鎖の対応する塩基と結合しています.

二重らせんを形成する一方の鎖に対して,もう一方の鎖を逆相補鎖と呼びます.図の例の場合,下の鎖の塩基配列はACTGと記述し,その逆相補鎖である上の鎖の塩基配列はCAGTと記述します.(TGACでないことに注意.) 二つの鎖は互いに対応関係のある塩基の並びをしているため,DNAは同一の情報を二重に保持しているといえます.そして,生物には一方の鎖に損傷が生じても,他方の鎖を元に損傷個所を復元する仕組みが備わっています. さて, DNAの遺伝情報は二本の鎖のどちらを読み出し元とするかによって,二通りの塩基配列で表記されることになります.例えば,DNAのある部分がAGGCと表記されている場合,その逆相補鎖の塩基配列であるGCCTと表記しても同じ情報とみなすことができるのです.