Algorytmy na napisach – funkcje do kartkówki

Uwaga: Kod każdej funkcji można zaznaczyć i skopiować.


1. ile(s) – zliczanie A, C, G, T

def ile(s):
    ileA = ileC = ileG = ileT = 0
    for znak in s:
        if znak == 'A':
            ileA += 1
        elif znak == 'C':
            ileC += 1
        elif znak == 'G':
            ileG += 1
        else:
            ileT += 1
    return [ileA, ileC, ileG, ileT]

# Przykład: ile("CAATAAAAA")  -> [7, 1, 0, 1]

2. pary(s) – liczba par jednakowych sąsiadów

def pary(s):
    licznik = 0
    for i in range(len(s)-1):
        if s[i] == s[i+1]:
            licznik += 1
    return licznik

# Przykład: pary("TGATTCTGACAAGTGTT")  -> 4

3. oduz(s) – odwrotne uzupełnienie DNA

def oduz(s):
    wynik = ""
    s = s[::-1]
    for znak in s:
        if znak == 'A':
            wynik += 'T'
        elif znak == 'T':
            wynik += 'A'
        elif znak == 'C':
            wynik += 'G'
        else:   # 'G'
            wynik += 'C'
    return wynik

# Przykład: oduz("TGACCCA")  -> "TGGGTCA"

4. ta(s) – zamiana C, G, T na '*'

def ta(s):
    wynik = ""
    for znak in s:
        if znak == 'A':
            wynik += 'A'
        else:
            wynik += '*'
    return wynik

# Przykład: ta("TGACCCA")  -> "**A***A"

5. codruga(napis) – pomijanie co drugiego znaku

def codruga(napis):
    wynik = ""
    for i in range(0, len(napis), 2):
        wynik += napis[i]
    return wynik

# Przykład: codruga("aksamitka")  -> "asmta"

6. wspak(napis) – odwracanie napisu (pętla)

def wspak(napis):
    wynik = ""
    for i in range(len(napis)-1, -1, -1):
        wynik += napis[i]
    return wynik

# Przykład: wspak("aloes")  -> "seola"

7. lustro(napis) – napis + jego odwrotność

def lustro(napis):
    return napis + napis[::-1]

# Przykład: lustro("aster")  -> "asterretsa"

8. przeplot(napis) – przeplatanie liter z końcem

def przeplot(napis):
    wynik = ""
    for i in range(len(napis)):
        wynik += napis[i] + napis[-i-1]
    return wynik

# Przykład: przeplot("azalia")  -> "aaziallaizaa"

9. hamming(s, t) – odległość Hamminga

def hamming(s, t):
    roznice = 0
    for i in range(len(s)):
        if s[i] != t[i]:
            roznice += 1
    return roznice

# Przykład: hamming("CAGGTT", "CAGGTT")  -> 0
# hamming("CAGGCTACTACCGGTAT", "CATCGTAATGCAGGGCT")  -> 8

10. czy_palindrom(s) – palindrom (małe litery)

def czy_palindrom(s):
    return s == s[::-1]

# Przykład: czy_palindrom("aabbaa")  -> True

11. czy_palindrom2(s) – palindrom ignorujący spacje

def czy_palindrom2(s):
    s = s.replace(" ", "")
    return s == s[::-1]

# Przykład: czy_palindrom2("a to kanapa pana kota")  -> True

12. anagram(s1, s2) – czy wyrazy są anagramami

def anagram(s1, s2):
    if len(s1) != len(s2):
        return False
    return sorted(s1) == sorted(s2)

# Przykład: anagram("burza", "arbuz")  -> True

Wszystkie funkcje zgodne z zadaniami z plików. Na kartkówce zmienią się tylko dane wejściowe.