Løsningsforslag 6

Oppgave 1
def remove_ones(a):
    while 1 in a:
        a.remove(1)


def every_fourth(a):
    return a[::4]    


def double_values(a):
    for i in range(len(a)):
        a[i] *= 2
# eller
def double_values(a):
    a[:] = [ 2*x for x in a ]

def unique_values(a):
    unique_list = []
    for element in a:
        if element not in unique_list:
            unique_list.append(element)
    return unique_list

def add_list(a, b):
    for i in range(len(a)):
        a[i] += b[i]
#eller
def add_list(a, b):
    a[:] = [ x + y for x,y in zip(a,b) ]
Oppgave 2
def kmers(dna, k):
    kmers = []
    n = len(dna)
    for i in range(n-k+1):
        kmer = dna[i:i+k]
        kmers.append(kmer)
    return kmers
Oppgave 3
def dot_product(a, b):
    dot = 0
    for i in range(len(a)):
        dot += a[i] * b[i]
    return dot

# eller
def dot_product(a, b):
    return sum([ x * y for x,y in zip(a,b) ])
Oppgave 4
def render_histogram(lst):
    max_val = max(lst)
    histogram = ''
    for i in range(max_val, 0, -1):
        for num in lst:
            if num >= i:
                histogram += '*'
            else:
                histogram += ' '
        histogram += '\n'
    return histogram
Bonus 1
def sort_by_sign(a):
    neg = []
    zero = []
    pos = []
    for num in a:
        if num < 0:
            neg.append(num)
        elif num == 0:
            zero.append(num)
        else:
            pos.append(num)
    return neg + zero + pos
Bonus 2
def read_and_sort():
    d = []
    while True:
        n = int(input())
        if n == 0:
            break
        d.append(n)

    d.sort()
    for i in d:
        print(i)
Bonus 3
def non_contiguous_substrings(s):
    substrings = [""]
    for c in s:
        new_substrings = []
        for sub in substrings:
            new_substrings.append(sub + c)
        # eller
        # new_substrings = [ sub + c for sub in substrings ]

        # oppdater substrings med de nye vi fant
        for new in new_substrings:
            if new not in substrings:
                substrings.append(new)

    return substrings