(toiminnot)

hwechtla-tl: Ohjelmointikurssin 8. viikon tehtävien esimerkkivastauksia

Kierre.png

Mikä on WikiWiki?
nettipäiväkirja
koko wiki (etsi)
viime muutokset


(ohjelmoinnin perusteet -kurssilta)

import re

def tavut(sana):
    return re.findall("[bcdfghjklmnpqrstvwxz]*" +
                      "(?:[aeiouyäö]i|[aeiou]u|[äeiöy]y" +
                      "|aa|ää|[ie]e|[uo]o|[yö]ö|[aeiouyäö])" +
                      "(?:[bcdfghjklmnpqrstvwxz]+(?![aeiouyäö]))?",
                      sana, re.IGNORECASE)

def jollekin(lista): return True in lista
def kaikille(lista): return False not in lista

def sisaltaako_tavuduplikaation(sana):
    tavulista = tavut(sana)
    return jollekin([tavu == seuraava
                     for tavu, seuraava in zip(tavulista, tavulista[1:])])

def sotke_sanajarjestys(lause):
    return ' '.join(sotke_lista(lause.split()))

def even(n): return n % 2 == 0

def sotke_lista(ls):
    if not even(len(ls)): return sotke_lista(ls[:-1]) + [ls[-1]]
    return [ls[index + 1 - 2 * (index % 2)] for index in range(len(ls))]

def sotke_sanajarjestys(lause):
    return sotke_ja_yhdistele(lause.split())

def sotke_ja_yhdistele(lista):
    if len(lista) % 2 == 1:
        return sotke_ja_yhdistele(lista[:-1]) + ' ' + lista[-1]
    sanat1 = lista[0::2]
    sanat2 = lista[1::2]
    yhdistellyt = [sana2 + ' ' + sana1 for sana1, sana2 in zip(sanat1, sanat2)]
    return ' '.join(yhdistellyt)

def flatten(lsls):
    return [e for ls in lsls for e in ls]

def sotke_lista(ls):
    if not even(len(ls)): return sotke_lista(ls[:-1]) + [ls[-1]]
    return flatten([[sana2, sana1]
                    for sana1, sana2 in zip(ls[0::2], ls[1::2])])

def sotke_lista(ls):
    if not even(len(ls)): return sotke_lista(ls[:-1]) + [ls[-1]]
    return [sana for sana1, sana2 in zip(ls[0::2], ls[1::2])
                 for sana in [sana2, sana1]]


kommentoi (viimeksi muutettu 04.12.2008 15:23)