HPHHPPHPHHPHPといった配列です(現実のタンパク質はもっと大きい)。これを
H1P1H2P2H1P1H2P1H1P1と略記します。こういった配列が 二次元格子の上を運動して,基底状態に辿り着 き, 働く(生理学的機能をもった)分子となることを想定します。このモデルをタンパク質の 二次元格子模型と言います。HPからなるタンパク質では,HH,HP,PPの3組の 相互作用が考えられますが,HHの隣り合った接触(HH接触)のみ エネルギーをカウントします。ですから,HH接触が最大となる配置が, タンパクの基底状態となります。例のタンパクでは,図1のような配置(HP 格子)が HH接触数が5となり,基底状態を与えます。図2の赤点線はHH接触を表しています。
図1 | |
図2 |
【問題】与えられたHP配列から、HH接触数を最大とするようなHP格子を 計算するプログラムを作成しなさい。(入力データ)HP配列。例) HPHHPPHPHHPHP (出力データ)与えられるHP配列の長さNとして、左下隅を(0,0)とする(2N+2) * (2N+2)の整数座標格子上にH、Pを配置。ただしHP配列の最初の要素の座標は 任意とする。 出力一行目:座標ペアの列(各ペアには1から始まるインデックスが付く) 出力二行目:HH接触のペアの列(座標ペアのインデックスで指定、順不同) 出力三行目:HH接触数先の例題を基にすると次のような出力になる。 13 13 13 14 14 14 14 15 13 15 13 16 14 16 15 16 15 15 15 14 15 13 14 13 14 12 1 12 3 12 3 11 4 9 4 7 5 |