Exemplo n.º 1
0
from common import small_example, big_example, read_dataset, write_result
from eulerian_cycle import eulerian_path

if __name__ == '__main__':
    dataset, _ = small_example()
    dataset = read_dataset()

    adjlist = {
        words[0]: set(words[1].split(','))
        for words in (l.split(' -> ') for l in dataset)
    }
    print(adjlist)
    path = eulerian_path(adjlist)

    output = ''.join(kmer[0] for kmer in path) + path[-1][1:]
    write_result(output)
Exemplo n.º 2
0
                j += len(w) - len(ww)
                print((i, j))  #, block, w[j:j + k])
                count += 1
                ww = w[j + 1:]
            else:
                break

        #block = cv[i:i + k]
        #if block in w:
        #    print((i, w.find(block)))


#    print(count)

if __name__ == '__main__':
    inp, out = small_example()
    #inp, out = big_example()
    inp = read_dataset()

    k = int(inp[0])
    v = Seq(inp[1])
    w = Seq(inp[2])

    #with open('example_result.txt') as f:
    #    print(len(f.readlines()))
    #with open('ex_res.txt', 'w') as f2:
    #    with open('example_result.txt') as f:
    #        vs = sorted(tuple(map(int, l.strip()[1:-1].split(', ')))
    #                    for l in f.readlines())
    #        for a, b in vs:
    #            f2.write(str((a, b)) + ' ' + str(v[a:a + k]) + ' ' + str(w[b:b + k]) + '\n')
Exemplo n.º 3
0
from common import small_example, big_example, read_dataset, write_result


def change(money, coins):
    min_change = [[] for _ in range(max(coins))]
    min_nums = [0] * max(coins)
    for sum in range(min(coins), money + 1):
        min_sum, min_c = min(
            (min_nums[(sum - c) % max(coins)], c) for c in coins if c <= sum)
        min_nums[sum % max(coins)] = min_sum + 1
        min_change[sum % max(coins)] = min_change[(sum - min_c) %
                                                  max(coins)] + [min_c]

    print(min_nums)
    print(min_change)
    return min_nums[money % sum], min_change[money % sum]


if __name__ == '__main__':
    input, output = small_example()
    input = read_dataset()
    print(change(int(input[0]), list(map(int, input[1].split(',')))))
    backtrack[0][0] = '*'

    for i, vi in zip(count(), v):
        for j, wj in zip(count(), w):
            s[i + 1][j + 1] = max(s[i][j + 1], s[i + 1][j])
            if vi == wj:
                s[i + 1][j + 1] = max(s[i + 1][j + 1], s[i][j] + 1)
            if s[i + 1][j + 1] == s[i][j + 1]:
                backtrack[i + 1][j + 1] = '|'
            elif s[i + 1][j + 1] == s[i + 1][j]:
                backtrack[i + 1][j + 1] = '-'
            elif s[i + 1][j + 1] == s[i][j] + 1:
                backtrack[i + 1][j + 1] = '\\'

    #for l in s:
    #    print(l)
    return s[len(v)][len(w)], backtrack


inp, out = small_example()
#inp = read_dataset()
#print(inp)
v, w = inp[0], inp[1]
score = inp[2:]
#v, w = 'AC', 'ACA'
l, backtrack = lcs(v, w)
print(l)
#for l in backtrack:
#    print(' '.join(l))
output_lcs(backtrack, v, len(v), len(w))
#print(out)
from common import small_example, big_example, read_dataset, write_result


def change(money, coins):
    min_change = [[] for _ in range(max(coins))]
    min_nums = [0] * max(coins)
    for sum in range(min(coins), money + 1):
        min_sum, min_c = min((min_nums[(sum - c) % max(coins)], c) for c in coins if c <= sum)
        min_nums[sum % max(coins)] = min_sum + 1
        min_change[sum % max(coins)] = min_change[(sum - min_c) % max(coins)] + [min_c]

    print(min_nums)
    print(min_change)
    return min_nums[money % sum], min_change[money % sum]


if __name__ == "__main__":
    input, output = small_example()
    input = read_dataset()
    print(change(int(input[0]), list(map(int, input[1].split(",")))))
from common import small_example, big_example, read_dataset, write_result
from eulerian_cycle import eulerian_path


if __name__ == '__main__':
    dataset, _ = small_example()
    dataset = read_dataset()

    adjlist = {words[0]: set(words[1].split(','))
               for words in (l.split(' -> ') for l in dataset)}
    print(adjlist)
    path = eulerian_path(adjlist)

    output = ''.join(kmer[0] for kmer in path) + path[-1][1:]
    write_result(output)