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