Question
Arda is an artist that loves to draw random patterns with ASCII characters in Notepad. One day, he noticed that his drawings have too many
Arda is an artist that loves to draw random patterns with ASCII characters in Notepad. One day, he noticed that his drawings have too many repeated characters, such that his hard drive cannot fit his portfolio. He decided to write a serialization algorithm to compress the file size. He found that each line of his drawings happens to be repeating some sub-patterns in certain order. Thus, he serializes the drawings to a list of all sub-patterns that occurred and the counts of consecutive occurrences in each line.
Example:
Suppose the line is OOOOAAABBOBBBBB, and patterns list is [AAA, B, O], the serialization algorithm will first look for the first pattern in patterns list (AAA), count until it meets a different pattern, and start look for the second pattern (B), etc. When the patterns list is exhausted, the algorithm wraps back to the first pattern. Thus, the count list for this line is generated like follows:
OOOOAAABBOBBBBB -> [(AAA, 0), (B, 0), (O, 4), (AAA, 1), (B, 2), (O, 1), (AAA, 0), (B, 5)] -> [0, 0, 4, 1, 2, 1, 0, 5] |
def deserialize(outpath, patterns, *serialized_lines):
"""
>>> deserialize("outfiles/out1.txt", ["**", "Marina"],
... [1,1,1], [0,5], [3,3,0,3,3])
>>> with open("outfiles/out1.txt", "r") as outfile1:
... print(outfile1.read().strip())
**Marina**
MarinaMarinaMarinaMarinaMarina
******MarinaMarinaMarinaMarinaMarinaMarina******
"""
# YOUR CODE GOES HERE #
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started