1
- import random , timeit
1
+ import random , timeit , sys
2
2
3
3
def getLine (syllablesRemaining , s ):
4
4
while syllablesRemaining > 0 :
@@ -9,13 +9,14 @@ def getLine(syllablesRemaining, s):
9
9
return s
10
10
11
11
def getLineRecursive (syllablesRemaining , s ):
12
- s = ""
13
- while syllablesRemaining > 0 :
12
+ #base case
13
+ if syllablesRemaining == 0 :
14
+ return
15
+ else :
14
16
toGet = random .randint (1 ,syllablesRemaining )
15
- syllablesRemaining -= toGet
16
17
idx = random .randint (0 ,len (words [toGet ])- 1 )
17
18
s += words [toGet ][idx ]
18
- return s
19
+ return getLineRecursive ( syllablesRemaining - toGet , s )
19
20
20
21
fIn = open ('HaikuSource.txt' ,'r' )
21
22
lineNum = 186524
@@ -31,8 +32,12 @@ def getLineRecursive(syllablesRemaining, s):
31
32
words [syllables - 1 ].append (s )
32
33
33
34
#Timer for iterative solution
34
- iterative = timeit .Timer ('getLine(syllables, s)' , setup = 'syllables = 5; s = ""' )#Yikes, semicolons!
35
+ iterative = timeit .Timer ('getLine(syllables, s)' , setup = 'syllables = 5; s = ""; from __main__ import getLine ' )#Yikes, semicolons!
35
36
#Timer for recursive solution
36
- recursive = timeit .Timer ('getLineRecursive(syllables, s)' , setup = 'syllables = 5; s = ""' )
37
-
37
+ recursive = timeit .Timer ('getLineRecursive(syllables, s)' , setup = 'syllables = 5; s = ""; from __main__ import getLineRecursive' )
38
38
39
+ #Default times to run is one million, that should suffice.
40
+ sys .stdout .write ("Iterative: " )
41
+ print (iterative .timeit ())
42
+ sys .stdout .write ("Recursive: " )
43
+ print (recursive .timeit ())
0 commit comments