-
Notifications
You must be signed in to change notification settings - Fork 0
/
gquiz.py
51 lines (39 loc) · 1.82 KB
/
gquiz.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# -*- coding: utf-8 -*-
# exercise material copied from quiz site.
text_a, text_b = map(file.read, map(open, ['text_a.txt', 'text_b.txt']))
# the infamous 'foo letters'.
foo = ('h', 'b', 'w', 'l', 's')
# our arbitrary alphabet.
alpha = 'cmztgxqjfwkslbpvhndr'
def calculate_prepositions(text):
prepositions = [qualified for qualified in text.split() \
if len(qualified) == 4 and qualified[-1] in foo and 'p' not in qualified]
return len(prepositions)
def calculate_verbs(text):
verbs = [qualified for qualified in text.split() \
if len(qualified) >= 7 and qualified[-1] in foo]
first_person = [verb for verb in verbs if not verb.startswith(foo)]
return len(verbs), len(first_person)
def create_vocabulary(text):
return " ".join(sorted(set(text.split()), key=lambda w: [alpha.index(c) for c in w]))
def calculate_distinct_and_interesting(pseudonumbers):
def is_interesting(pseudonumber):
return (pseudonumber >= 665180) and (pseudonumber % 4 == 0)
def calculate_value(pseudonumber):
mdigits = [alpha.index(digit) for digit in pseudonumber]
total, base = 0, 1
for digit in mdigits:
total += digit * base
base *= 20
return total
magic_bag = []
for pseudonumber in pseudonumbers.split():
value = calculate_value(pseudonumber)
if is_interesting(value):
magic_bag.append(pseudonumber)
return len(set(magic_bag))
if __name__ == '__main__':
print u"El texto B tiene %d preposiciones." % calculate_prepositions(text_b)
print u"El texto B tiene %d verbos y %d son en primera persona." % calculate_verbs(text_b)
print u"El vocabulario del texto B es: %s\n\n" % create_vocabulary(text_b)
print u"El texto B tiene %d números interesantes _distintos_." % calculate_distinct_and_interesting(text_b)