Tämä ohjelma on elokuvaprojektia varten (elokuva: Juppihippijuntta). Sille annetaan ajankohta (oletus: tämä hetki) ja se palauttaa ajankohdan nimen suomen äännerakenteeseen sopivana sanana.
#!/usr/bin/env python
# coding: latin-1
import time, sys
tavunalku = list("hjklmnprstv")
tavunydin = sorted(frozenset(['ie', 'uo'] + [yd for vok in "aeiou"
for yd in (vok, vok+vok, vok+'i', vok+'u')]))
lyhytydin = list('aeiou')
tavunloppu = [''] + list("hklmnprst")
tuplaloppu = [lik+klus for lik in "lmnr"
for klus in "kpst" if lik+klus not in ['mk', 'mt', 'np']]
cvc_maara = len(tavunalku) * len(tavunydin) * len(tavunloppu)
cvcc_maara = len(tavunalku) * len(lyhytydin) * len(tuplaloppu)
tavu_maara = cvc_maara + cvcc_maara
epoch = time.mktime((2006,6,26,0,0,0,0,0,0))
timeformat = '%d.%m.%Y %H:%M:%S'
def stats():
print len(tavunalku), tavunalku
print len(tavunydin), tavunydin
print len(tavunloppu), tavunloppu
print len(lyhytydin), lyhytydin
print len(tuplaloppu), tuplaloppu
print cvc_maara, cvcc_maara, tavu_maara
def etuvokaaliksi(kirjain):
if kirjain == 'a': return 'ä'
if kirjain == 'o': return 'ö'
if kirjain == 'u': return 'y'
return kirjain
def etuvokaaliseksi(sana):
return ''.join([etuvokaaliksi(kirjain) for kirjain in sana])
def generaattori(lista):
return lambda n: (lista[n % len(lista)], n // len(lista))
alkugen = generaattori(tavunalku)
ydingen = generaattori(tavunydin)
loppugen = generaattori(tavunloppu)
lyhytgen = generaattori(lyhytydin)
tuplagen = generaattori(tuplaloppu)
def bitti(n): return n % 2, n // 2
def tavugen(numero):
n1 = numero % tavu_maara
if n1 < cvc_maara:
loppu, n2 = loppugen(n1)
ydin, n3 = ydingen(n2)
alku, n4 = alkugen(n3)
else:
loppu, n2 = tuplagen(n1 - cvc_maara)
ydin, n3 = lyhytgen(n2)
alku, n4 = alkugen(n3)
return alku+ydin+loppu, numero // tavu_maara
def sanagen(numero):
tavu, n2 = tavugen(numero)
if n2 <= 0: return tavu
return sanagen(n2) + tavu
def sana_ajankohdasta(hetki):
numero = int(hetki - epoch) // 60
if numero < 0: return etuvokaaliseksi(sanagen(0-numero))
return sanagen(numero)
if __name__ == '__main__':
if len(sys.argv) > 1:
hetki = time.mktime(time.strptime(sys.argv[1], timeformat))
else: hetki = time.time()
print sana_ajankohdasta(hetki)
kategoria: kieli kategoria: projektit