Touch-typable Passwords

* Rules

** Security

  1. Length: 9 characters
  2. Characters randomly selected
  3. At least one character from each category:
     - Alphabetic lower (1,2,4,5)
     - Alphabetic upper (10,11,13,14)
     - Numeric (0,3)
     - Symbol (6,7,8,9,12,15,16,17)

** Typability

  1. Alternate right-hand and left-hand keys
  2. First key may be either right or left
  3. No more than one numeric
  4. No more than one symbol
  5. Alphabetic upper case will not occur before or after pinky
     reach (Zones I, IV, VII)

** Summary

|-------------------------------------+-------------------------------------|
| Current Zone                        | Next Zone[*]                        |
|-------------------------------------+-------------------------------------|
| (Before first character)            | 50%: (0) 1 2 (9) 10 11 (LH any)     |
|                                     | 50%: (3) 4 5 (6) (7) (8) (12) 13 14 |
|                                     | (15) (16) (17) (RH any)             |
|-------------------------------------+-------------------------------------|
| (0) 1 (LH unshift r1-2)             | (3) 4 5 (6) (7) (8) (RH unshift)    |
|-------------------------------------+-------------------------------------|
| 2 (LH unshift r3-4)                 | (3) 4 5 (6) (7) (8) (12) 13 14      |
|                                     | (15) (16) (17) (RH any)             |
|-------------------------------------+-------------------------------------|
| (9) 10 (LH shift r1-2)              | 5 8  (RH unshift r3-4)              |
|-------------------------------------+-------------------------------------|
| 11 (LH shift r3-4)                  | 5 8 14 (17) (RH r3-4)               |
|-------------------------------------+-------------------------------------|
| (3) 4 (6) (7) (RH unshift r1-2)     | (0) 1 2 (LH unshift)                |
|-------------------------------------+-------------------------------------|
| 5 (8) (RH unshift r3-4)             | (0) 1 2 (9) 10 11  (LH any)         |
|-------------------------------------+-------------------------------------|
| (12), 13, (15), (16) (RH shift r1-2 | 2 (LH unshift r3-4)                 |
|-------------------------------------+-------------------------------------|
| 14 (17) (RH shift r3-4)             | 2 11 (LH r3-4)                      |
|-------------------------------------+-------------------------------------|

 (N) Zone N characters (numerics, symbols) will be pre-positioned
     and therefore not candidates for sequential next character.
     ==> difficult to generate typable sequences with
     pre-positioning: instead generate typeable sequences and
     discard seq. that lack security features

 [*] Select randomly from combined keys in all candidate zones. The
     alternative of randomly selecting zone then selecting character
     from selected zone would result in high frequency of occurence
     for characters in small zones.