|
|
-
- 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
|