Your goal is to write code that makes a "string" from a string in the least amount of bytes possible, as per the rules of . Standard loophole rules apply.

To make a string, you have to assume the string contains only alphabetical characters and basic punctuation such as the period, comma, colons and semicolons, exclamation marks, and question marks. If not, your program can return your language's false value (0, false, False, etc.) instead of making the string.

Spaces and the aforementioned basic punctuation are ignored in the output, so you can strip them before you make the string.

The string will move up or down based on if it has a higher value than the previous letter's position; if it's the same, it stays.

Test Cases

In this example, the string goes down because the characters are of a higher value than the previous one.



This example is like the previous but also shows that case doesn't matter when deciding to go down or up.



The next example goes up as well.


A         A
 B       B
  C     C
   D   D
    E E

This test case includes same-letter conditions.

Roof fluff

 oo  l ff
R     u

The final test case is very complex.

The quick, brown fox jumped over the lazy dog.

             f       d           d g
  e   c b o n o j m e o e   e a y o
 h q i k r w   x u p   v r h l z
T   u                     t
  • \$\begingroup\$ @ETHproductions Specifics are quite different \$\endgroup\$
    – Peanut
    Apr 16 '17 at 2:11
  • \$\begingroup\$ Only difference is the lack of connecting lines and the input restriction/freedoms, which I don't even understand. It's a trivial modification in many cases. \$\endgroup\$
    – hyper-neutrino
    Apr 16 '17 at 3:07