PracHub
QuestionsCoachesLearningGuidesInterview Prep

Quick Overview

This question evaluates file parsing, matrix indexing with a specified coordinate origin, handling multiple indexed blocks, and string assembly into an ordered password, testing competencies in file I/O, coordinate transformations, and robust input handling.

  • Medium
  • Instacart
  • Coding & Algorithms
  • Software Engineer

Parse password from indexed matrix file

Company: Instacart

Role: Software Engineer

Category: Coding & Algorithms

Difficulty: Medium

Interview Round: Onsite

##### Question Given a filepath to a text file containing one index line [x, y] followed by a matrix of characters (origin at lower-left (0, 0)), return the character at coordinate (x,y). Extend to multiple (index, matrix) blocks in the same file: for each block read the character and prepend it to a password string using its index order, then return the password. If the file contains several passwords, stop after constructing the first complete password and return it.

Quick Answer: This question evaluates file parsing, matrix indexing with a specified coordinate origin, handling multiple indexed blocks, and string assembly into an ordered password, testing competencies in file I/O, coordinate transformations, and robust input handling.

You are given a string content that encodes one or more passwords. Each password consists of one or more blocks. A block has an index line followed by a character matrix: the index line is of the form [x,y] (0-based, optional spaces allowed), and it is followed by one or more lines of equal-length characters forming the matrix. A blank line terminates the matrix. Coordinates use origin at the lower-left corner of the matrix: x increases to the right, y increases upward. For each block in the first password group, read the character at (x,y) and prepend it to an accumulating password string in the order blocks appear. Password groups are separated by a line containing exactly '---'. Parse only the first password group (up to '---' or EOF) and return the resulting password string.

Constraints

  • Input is well-formed per the format.
  • Index lines match: [x,y] with 0-based non-negative integers and optional spaces.
  • Each block's matrix has 1 to 1000 rows; all rows have the same length (1 to 1000).
  • 0 <= x < number_of_columns, 0 <= y < number_of_rows for each block.
  • Blocks within a password are separated by at least one empty line after each matrix.
  • Passwords are separated by a line that is exactly '---'. Only the first password group must be processed.
  • Total characters across the first password group <= 200,000.

Examples

Input: [1,2] abcd efgh ijkl [0,0] XYZ PQR --- [0,1] ab cd

Expected Output: Pb

Explanation: First group has two blocks. Block [1,2] over abcd/efgh/ijkl (origin lower-left, y up) -> top row column 1 -> 'b'; block [0,0] over XYZ/PQR -> bottom-left -> 'P'. Prepend in block-encounter order: start 'b', then prepend 'P' -> 'Pb'. The '---' group and everything after it is ignored.

Input: [0,0] A [2,1] 012 345

Expected Output: 2A

Explanation: Block [0,0] over single-cell 'A' -> 'A'; block [2,1] over 012/345 -> y=1 is the top row '012', x=2 -> '2'. Prepend -> '2A'. Group ends at EOF (no '---').

Input: [0,0] Z

Expected Output: Z

Explanation: Edge: single block, single-cell matrix. (0,0) on the lower-left origin is the only cell -> 'Z'. EOF terminates the matrix and the first group.

Input: [ 1 , 0 ] QRS TUV

Expected Output: U

Explanation: Edge: index line carries optional spaces. x=1,y=0 -> y=0 is the bottom row 'TUV', column 1 -> 'U'.

Input: [2,0] ..... ##X## ..... [0,2] LMN OPQ RST

Expected Output: L.

Explanation: Edge: two blocks, no '---' (group ends at EOF). Block [2,0]: y=0 is the bottom row '.....', column 2 -> '.'. Block [0,2]: y=2 is the top row 'LMN', column 0 -> 'L'. Prepend in order: start '.', then prepend 'L' -> 'L.'.

Input: [1,2]\nabcd\nefgh\nijkl\n\n[0,0]\nXYZ\nPQR\n\n---\n[0,1]\nab\ncd\n

Expected Output: Pb

Explanation: Robustness: identical first group to test 1 but delivered with double-escaped literal backslash-n line breaks. The solution decodes them back to real newlines and still yields 'Pb'.

Hints

  1. Parse the index line with a regex like ^\[\s*(\d+)\s*,\s*(\d+)\s*\]$.
  2. Remember the origin is at the lower-left: matrix row index = (height - 1 - y).
  3. Collect characters per block in encounter order and prepend; an efficient way is to append and reverse at the end.
Last updated: Mar 29, 2026

Loading coding console...

PracHub

Master your tech interviews with 8,000+ real questions from top companies.

Product

  • Questions
  • Learning Tracks
  • Interview Guides
  • Resources
  • Premium
  • For Universities
  • Student Access

Browse

  • By Company
  • By Role
  • By Category
  • Topic Hubs
  • SQL Questions
  • AI Coding Questions
  • Compare Platforms
  • Discord Community

Support

  • support@prachub.com
  • (916) 541-4762

Legal

  • Privacy Policy
  • Terms of Service
  • About Us

© 2026 PracHub. All rights reserved.

Related Coding Questions

  • Fix the Broken Search Filter in a Book Catalog API - Instacart (medium)
  • Find Largest Adjacent Stock Price Change - Instacart (medium)
  • Implement an In-Memory File Storage System - Instacart (medium)
  • Decode an encoded string - Instacart (medium)
  • Evaluate an arithmetic expression - Instacart (medium)