Massive renaming!
This commit is contained in:
15
08-infinite-mirror/README.md
Normal file
15
08-infinite-mirror/README.md
Normal file
@@ -0,0 +1,15 @@
|
||||
Style #7
|
||||
==============================
|
||||
|
||||
Constraints:
|
||||
|
||||
- All, or a significant part, of the problem is modelled by
|
||||
induction. That is, specify the base case (n_0) and then the n+1
|
||||
rule
|
||||
|
||||
Possible names:
|
||||
|
||||
- Infinite mirror
|
||||
- Inductive
|
||||
- Recursive
|
||||
|
||||
45
08-infinite-mirror/tf-08.py
Executable file
45
08-infinite-mirror/tf-08.py
Executable file
@@ -0,0 +1,45 @@
|
||||
#!/usr/bin/env python
|
||||
import re, sys, operator
|
||||
|
||||
# Mileage may vary. If this crashes, make it lower
|
||||
RECURSION_LIMIT = 5000
|
||||
# We add a few more, because, contrary to the name,
|
||||
# this doesn't just rule recursion: it rules the
|
||||
# depth of the call stack
|
||||
sys.setrecursionlimit(RECURSION_LIMIT+10)
|
||||
|
||||
def count(word_list, stopwords, wordfreqs):
|
||||
# What to do with an empty list
|
||||
if word_list == []:
|
||||
return
|
||||
# The inductive case, what to do with a list of words
|
||||
else:
|
||||
# Process the head word
|
||||
word = word_list[0]
|
||||
if word not in stopwords:
|
||||
if word in wordfreqs:
|
||||
wordfreqs[word] += 1
|
||||
else:
|
||||
wordfreqs[word] = 1
|
||||
# Process the tail
|
||||
count(word_list[1:], stopwords, wordfreqs)
|
||||
|
||||
def wf_print(wordfreq):
|
||||
if wordfreq == []:
|
||||
return
|
||||
else:
|
||||
(w, c) = wordfreq[0]
|
||||
print(w, '-', c)
|
||||
wf_print(wordfreq[1:])
|
||||
|
||||
stop_words = set(open('../stop_words.txt').read().split(','))
|
||||
words = re.findall('[a-z]{2,}', open(sys.argv[1]).read().lower())
|
||||
|
||||
word_freqs = {}
|
||||
# Theoretically, we would just call count(words, stop_words, word_freqs)
|
||||
# Try doing that and see what happens.
|
||||
for i in range(0, len(words), RECURSION_LIMIT):
|
||||
count(words[i:i+RECURSION_LIMIT], stop_words, word_freqs)
|
||||
|
||||
wf_print(sorted(word_freqs.items(), key=operator.itemgetter(1), reverse=True)[:25])
|
||||
|
||||
Reference in New Issue
Block a user