Your question is Parse Strings to Extract Payloads. Start with the requirements on the right.
Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.
Bayer systems may exchange multiple data frames in one string across surfaces such as crop-science, pharmaceuticals, and consumer-health. Parse the stream and return every payload belonging to a requested surface.
Each frame has this format:
BAYER/<surface>/<length>/<payload>
Frames are concatenated directly with no separator. The decimal length specifies the exact number of characters in payload, so the payload may contain /, spaces, or other frame-like text. A surface contains lowercase letters and hyphens. The prefix and separators are case-sensitive.
Implement extract_payloads(stream, surface) to return payloads in their original order. The input stream is guaranteed to contain only complete, well-formed frames, and surface is valid. Return an empty list when no frame matches.
def extract_payloads(stream, surface):