Repository where I mostly put random python scripts.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

98 lines
2.1 KiB

def extraSpace(S, M, i, j):
"""
Computes the number of extra characters at the end of
the line.
Between each word there is only once space.
:param S: List of words
:param M: Max length of line
:param i: start word index
:param j: end word index
"""
extraSpaces = M - j + i
for x in range(i, j + 1):
extraSpaces -= len(S[x])
return extraSpaces
def badnessLine(S, M, i, j):
"""
Computes Line badness. This is the number of
extra spaces or infinity if the length exceeds M
:param S: List of words
:param M: Max length of line
:param i: start word index
:param j: end word index
"""
es = extraSpace(S, M, i, j)
if es < 0:
return float("infinity")
return es
def minBad(S, M, i):
"""
Computes the badness of a paragraph as the
badness of the worst line in the paragraph not
including the last line.
*this is recursive
:param S: List of words
:param M: Max length of line
:param i: start word index
"""
if len(S) == 0:
return 0
# Calculate the current line's badness
curBad = 0
k = i
while curBad > badnessLine(S, M, i, k):
curBad = badnessLine(S, M, i, k)
k = k + 1
return max(curBad, badnessLine(S, M, k))
def minBadDynamic(S, M):
"""
Write a procedure minBadDynamic that implements
the function mb' using dynamic program-
ming. It should take only two parameters: S and M
:param S: List of words
:param M: Max length of line
"""
pass
def minBadDynamicChoice(S, M):
"""
Write a procedure minBadDynamicChoice that implements
the function mb 0 using dynamic
programming. In addition to returning mb(S, M ), it
should also return the choices made
:param S: List of words
:param M: Max length of line
"""
pass
def printParagraph(S, M):
"""
which takes two parameters: S and M that displays the words in S on
the screen using the choices of minBadDynamicChoice.
What is the asymptotic running time of your
algorithm?
:param S: List of words
:param M: Max length of line
"""
pass