Skip to content

drew-hoffman/QuPOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QuPOS Code Assignment

Assumptions and notes

  • Capitalization doesn't matter. I search using StringComparison.OrdinalIgnoreCase, and hope for the best (see "Input edge cases" below).
  • Rather than searching by row and then by column, I rotate the entire grid. This lets me a) reuse the search function, and b) I can keep rotating the grid to search right to left or bottom to top.
  • I could probably make an awesome nested for-loop that doesn't create any strings or transform objects, but it would be a bear to read or make any changes to.
  • Only the WordFinder class is unit tested.
  • I've written this using the .net MAUI framework, because it seemed more relevant to the job. I wouldn't normally include a framework.
  • The UI is an afterthought. It provides a UI for using the WordFinder class, but nothing more.
  • Per the documentation, but still worth calling out, I don't search for words right to left, down to up, or on a diagonal.
  • Input is more or less assumed to be happy-path, with minimal input filtering for empty strings.
  • Output is ordered by frequency descending.

To make this production ready

  • I would add logging.
  • Errors are not handled. They should be.
  • Depending on the hardware and load, I'd consider adding metrics around the Find() runtime, and if necessary, the private helper functions as well.
  • Input edge cases aren't handled very well:
      • "Hello" is different from "HELLO" in the wordstream list.
      • Capitalization isn't handled. Can I just .toUpper() everything or do we need to support i11n too?
      • I haven't tried making words out of emojis (😃).
      • I assume that valid characters for the wordstream and matrix are in the english alphabet (A-Z) and not whitespaces, zero width spaces, and the like.

About

QuPOS technical exercise

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages