あなたの仕事は、2つの遺伝子配列と「クロスオーバーポイント」の配列を入力として受け入れ、指定されたクロスオーバーから生じる遺伝子配列を返すことです。
これが意味するのは、シーケンス[A, A, A, A, A, A, A]、および[Z, Z, Z, Z, Z, Z, Z]、およびのクロスオーバーポイントがある2とし5ます。結果のシーケンスは[A, A, Z, Z, Z, A, A]次のとおりです。
クロスヒア:VV
インデックス:0 1 2 3 4 5 6
遺伝子1:AAAAAAA
遺伝子2:ZZZZZZZ
結果:AAZZZAA
^ ^
ここではわかりやすくするために文字を使用していますが、実際の課題では遺伝子に数字を使用しています。
結果は、クロスオーバーポイントに到達するまで最初のシーケンスであり、次に別のクロスオーバーポイントに到達するまで2番目のシーケンスから結果が取得され、次にクロスオーバーポイントに到達するまで最初のシーケンスから結果が取得されます...
入力:
入力は、任意の合理的な形式にすることができます。2つのシーケンスは、ポイントを2番目の引数とするペアにすることができます。3つすべては、個別の引数、単一のトリプレット、
(genes 1, genes 2, cross-points)名前付きキーを持つマップ...クロスポイントは常に整然としており、常にインバウンドになります。重複するポイントはありませんが、クロスオーバーポイントのリストは空の場合があります。
遺伝子配列は常に同じ長さで、空ではありません。
インデックスは、0または1ベースにすることができます。
遺伝子は常に0〜255の範囲の数値になります。
どの引数が「genes 1」または「genes 2」であるかは関係ありません。クロスオーバーポイントがない場合、結果は完全に「遺伝子1」または「遺伝子2」のいずれかになります。
出力
出力は、あいまいでない任意の合理的な形式にすることができます。数字の配列/リスト、文字列の数字の配列、数字の区切り文字列(数字以外の文字で数字を区切る必要があります)...
標準出力に戻すか、印刷することができます。
エントリーは、完全なプログラムまたは機能ごとにできます。
テストケース(genes 1, genes 2, cross points) => result:
[0], [1], [0] => [1]
[0, 1], [9, 8], [1] => [0, 8]
[0, 2, 4, 6, 8, 0], [1, 3, 5, 7, 9, 1], [1, 3, 5] => [0, 3, 5, 6, 8, 1]
[1, 2, 3, 4], [5, 6, 7, 8], [] => [1, 2, 3, 4]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [0, 2, 3, 6, 8] => [1, 1, 0, 1, 1, 1, 0, 0, 1, 1]
これはコードゴルフです。