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