Skip to content

Instantly share code, notes, and snippets.

@rtoal
Created April 27, 2018 16:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rtoal/58427b2edd54ec1f6425977ca02f8083 to your computer and use it in GitHub Desktop.
Save rtoal/58427b2edd54ec1f6425977ca02f8083 to your computer and use it in GitHub Desktop.
Swift Coding Challenge

Given a grid layout of Basic Latin letters as follows:

   A B C D E
   F G H I J
   K L M N O
   P Q R S T
   U V W X Y
   Z

where A is at location (0,0), B is at location (0, 1), C is at (0, 2), N is at (2,3), and Z is at (5,0), write a function in Swift that outputs the "instructions" for typing out a given word. By "instructions" we mean that a cursor starts at location (0,0) and can only be moved like so:

  • R - moves the cursor right
  • L - moves the cursor left
  • U - moves the cursor up
  • D - moves the cursor down

There is 5th instruction:

  • E - to accept the character under the cursor.

So one way to give instructions for the word "BAT" is:

   RELEDDDRRRRE

Starting at A, we go Right to get B then emit an E to accept the B. Then Left then Enter to get the A. Then three D's and four R's and finally an E to accept the T. You do not have to move back to the beginning.

You may not put the cursor over any row and column that does not have a letter. So if the cursor is on Z, you cannot move Right.

The Swift function should accept a string (like "BAT") and return the instruction string ("RELEDDDRRRRE"). Make sure to indicate if the input string is illegal in the proper idiomatic way.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment