Xét bài toán: cho một tập các đoạn gen và một cửa sổ truy vấn, mỗi truy vấn cung cấp thông tin một đoạn gen g bao gồm: tên nhiễm sắc thể, vị trí đầu đoạn gen, vị trí cuối đoạn gen trên nhiễm sắc thể này. Hãy cho biết các đoạn gen trong tập ban đầu cùng nhiễm sắc thể và có giao với đoạn gen g, chỉ rõ vị trí giao nhau của chúng, số lượng đoạn gen giao với g.
Cụ thể về dữ liệu vào và kết quả ra của bài toán là:
Dữ liệu vào:
Tệp gen1.inp gồm một số dòng, mỗi dòng là thông tin về một đoạn gen gồm: [Tên nhiễm sắc thể] [vị trí đầu đoạn gen] [vị trí cuối đoạn gen].
Thông tin về một đoạn gen cần tìm kiếm gồm: [Tên nhiễm sắc thể] [vị trí đầu đoạn gen] [vị trí cuối đoạn gen].
Trong đó:
[Tên nhiễm sắc thể] là một chuỗi kí tự xác định tên của nhiễm sắc thể, ví dụ: chr3, chrY, chr2_random, scaffold10671,...
[Vị trí đầu đoạn gen], [vị trí cuối đoạn gen]: là hai số nguyên dương xác định vị trí đầu và vị trí cuối của đoạn gen trên nhiễm sắc thể đang xét. Giá trị này có thể là một số nguyên lớn, có thể có tới 11-12 chữ số.
Thông tin về đoạn gen cần tìm kiếm sẽ được cấp cho chương trình theo hai dạng thức:
Cửa sổ truy vấn: người dùng nhập thông tin truy vấn là thông tin một đoạn gen, gồm 3 thuộc tính kể trên.
Tệp dữ liệu: người dùng nhập thông tin về tập gen cần tìm giao với các đoạn gen trong tệp thứ nhất thông qua tệp dữ liệu có cấu trúc giống tệp gen1.inp.
Kết quả ra: Thông tin về các đoạn gen giao nhau, mỗi đoạn giao được liệt kê theo cấu trúc: [tên nhiễm sắc thể] [vị trí đầu đoạn giao] [vị trí cuối đoạn giao] và số lượng đoạn gen giao nhau với g.
Hình 2.3 mô phỏng hai tập gen A, B; tìm giao của các đoạn gen của tập A với các đoạn gen của tập B, chỉ rõ phạm vi phần đoạn giao và những đoạn gen của A có giao với B.
Hình 2.1. Hình vẽ thể hiện giao của hai tập các đoạn gen