# -*- coding: UTF-8 -*-
import time
script_start = time.time()
import cgi
import cgitb
cgitb.enable()
import lib
print 'Content-Type: text/html; charset=utf-8'
print
print
print '''
Zizzo
Zizzo ε
Ei enää kovin uutta! Zizzon lähdekoodi on
julkaistu:
Unix-rivinvaihdoilla
Windows-rivinvaihdoilla
Zizzon älykkyys voi vaikuttaa ihmeeltä, mutta loppujen lopuksi logiikka tämän taustalla on hyvin yksinkertainen.
Zizzo on fiksu otus ja ratkoo sarjoja. Sarjoissa saa olla merkkejä A-Z ja 0-9.
Syötä termit välilyönnillä erotettuina ja klikkaa Hähhää!
'''
def footer():
print ''''''
raise SystemExit
form = cgi.FieldStorage()
if not form.has_key('sarja'):
footer()
try:
maara = int(form['maara'].value)
except KeyError:
maara = 10
sarja = lib.alphabet.split(form['sarja'].value.upper())
if len(sarja) < 3:
print '''Zizzoa ei kiinnosta lukea ajatuksiasi! Syötä vähintään kolme termiä.
'''
footer()
try:
mysolver = lib.Solver(sarja)
except lib.UnsolvableException:
print '''
Tapahtui harvinainen poikkeus! Fiksu-Zizzo ei osannutkaan ratkaista sarjaasi.
Taisit huijata ja syöttää jotain puppua!
'''
footer()
print '''Annetut termit: %s
''' % ', '.join(map(str,sarja))
print '''Seuraavat %d termiä:''' % maara
lst = mysolver.generatelist(maara)
if max([len(s) for s in lst]) > 6:
print '
'
for s in lst:
print '''- %s
''' % s
print '
'
else:
print ', '.join(lst)
print ''
print '''Näin Zizzo ratkaisi naurettavan helpon tehtäväsi:
'''
def htmllines(solver):
print "" + solver.name() + " (helppous %2.0f%%)" % (solver.score() * 100) + ""
print ""
items = solver.params().items() + [('_sequence', solver.series)]
items.sort(lambda a,b: cmp(a[0], b[0])) # Sort by key
for key, value in items:
print "- %s: " % key,
if isinstance(value, lib.base.Solver):
htmllines(value)
else:
print str(value),
print "
"
print "
"
htmllines(mysolver)
time_used = time.time() - script_start
print '''Zizzon älyä kuormitettiin %0.1f sekunnin ajan.
''' % time_used
footer()