Massive renaming!

This commit is contained in:
Crista Lopes
2019-08-12 14:38:16 -07:00
parent e6c1238a56
commit 61d5f74ad9
90 changed files with 0 additions and 0 deletions

View 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
View 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])