zoukankan      html  css  js  c++  java
  • GenomicRangeQuery Find the minimal nucleotide from a range of sequence DNA.

    Task description

     

    A DNA sequence can be represented as a string consisting of the letters ACG and T, which correspond to the types of successive nucleotides in the sequence. Each nucleotide has an impact factor, which is an integer. Nucleotides of types ACG and T have impact factors of 1, 2, 3 and 4, respectively. You are going to answer several queries of the form: What is the minimal impact factor of nucleotides contained in a particular part of the given DNA sequence?

    The DNA sequence is given as a non-empty string S = S[0]S[1]...S[N-1] consisting of N characters. There are M queries, which are given in non-empty arrays P and Q, each consisting of M integers. The K-th query (0 ≤ K < M) requires you to find the minimal impact factor of nucleotides contained in the DNA sequence between positions P[K] and Q[K] (inclusive).

    For example, consider string S = CAGCCTA and arrays P, Q such that:

    P[0] = 2 Q[0] = 4 P[1] = 5 Q[1] = 5 P[2] = 0 Q[2] = 6

    The answers to these M = 3 queries are as follows:

    • The part of the DNA between positions 2 and 4 contains nucleotides G and C (twice), whose impact factors are 3 and 2 respectively, so the answer is 2.
    • The part between positions 5 and 5 contains a single nucleotide T, whose impact factor is 4, so the answer is 4.
    • The part between positions 0 and 6 (the whole string) contains all nucleotides, in particular nucleotide A whose impact factor is 1, so the answer is 1.

    Write a function:

    def solution(S, P, Q)

    that, given a non-empty string S consisting of N characters and two non-empty arrays P and Q consisting of M integers, returns an array consisting of M integers specifying the consecutive answers to all queries.

    Result array should be returned as an array of integers.

    For example, given the string S = CAGCCTA and arrays P, Q such that:

    P[0] = 2 Q[0] = 4 P[1] = 5 Q[1] = 5 P[2] = 0 Q[2] = 6

    the function should return the values [2, 4, 1], as explained above.

    def solution(S,P,Q):
    data = []
    result = []
    for item in S:
    if item == 'A':
    data.append(1)
    elif item == 'C':
    data.append(2)
    elif item == 'G':
    data.append(3)
    else:
    data.append(4)
    #print(data)
    for K in range(len(P)):
    count = min(data[P[K]:Q[K]+1])
    result.append(count)
    return result
    pass
  • 相关阅读:
    bzoj 3992: [SDOI2015]序列统计【原根+生成函数+NTT+快速幂】
    bzoj 3771: Triple【生成函数+FFT+容斥原理】
    poj 2891 Strange Way to Express Integers【扩展中国剩余定理】
    hdu 1573 X问题【扩展中国剩余定理】
    bzoj 2023: [Usaco2005 Nov]Ant Counting 数蚂蚁【生成函数||dp】
    hdu 1521 排列组合【指数型生成函数】
    JavaScript数据类型的检测
    JavaScript数据类型
    原生JS模拟jQuery $
    String基础
  • 原文地址:https://www.cnblogs.com/iter-li/p/13493135.html
Copyright © 2011-2022 走看看