Sashité for Developers
  1. Sashité for Developers
  2. Documentation
  3. CELL
  4. 1.0.0

Coordinate Encoding for Layered Locations (CELL) Specification


Overview

Coordinate Encoding for Layered Locations (CELL) defines a standardized format for representing coordinates on multi-dimensional game boards using a cyclical ASCII character system. CELL supports unlimited dimensional coordinate systems through the systematic repetition of three distinct character sets.


Design Philosophy

CELL utilizes a cyclical three-character-set system to create coordinate encodings that are functional and universally accessible. This approach provides a unified framework that scales from simple 1D coordinates to unlimited multi-dimensional spatial relationships.

Core Properties:


Character System

CELL employs a three-character-set cycle that repeats indefinitely based on dimensional position:

Cycle Pattern

Dimension (n % 3 = 1): Latin Lowercase Letters

Dimension (n % 3 = 2): Arabic Numerals

Dimension (n % 3 = 0): Latin Uppercase Letters

Dimensional Mapping

Dimension Character Set Examples
1, 4, 7, 10… Latin lowercase a, b, c
2, 5, 8, 11… Arabic numerals 1, 2, 3
3, 6, 9, 12… Latin uppercase A, B, C

Format Specification

A CELL coordinate is encoded as a concatenated string of characters from each dimension in sequential order, without separators or delimiters.

Backus-Naur Form (BNF)

<cell> ::= <dimension>+

<dimension> ::= <latin-lower> | <arabic-numeral> | <latin-upper>

<latin-lower> ::= <latin-lower-char>+
<arabic-numeral> ::= <positive-integer>
<latin-upper> ::= <latin-upper-char>+

<latin-lower-char> ::= "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"

<latin-upper-char> ::= "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"

<positive-integer> ::= <non-zero-digit> <digit>* | <non-zero-digit>
<non-zero-digit> ::= "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
<digit> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"

Coordinate Formation Examples

1D: a, b, c, d, e, f, g, h...
2D: a1, b2, c3, d4, e5, f6, g7, h8...
3D: a1A, b2B, c3C, d4D, e5E, f6F, g7G, h8H...
4D: a1Aa, b2Bb, c3Cc, d4Dd, e5Ee, f6Ff, g7Gg, h8Hh...
5D: a1Aa1, b2Bb2, c3Cc3, d4Dd4, e5Ee5, f6Ff6, g7Gg7, h8Hh8...

Regular Expression

The following regular expression validates a CELL coordinate:

\A(?:[a-z]+|[1-9]\d*|[A-Z]+)+\z

Technical Specification

Character Encoding

All CELL coordinates use pure ASCII characters (codes 48-57, 65-90, 97-122), ensuring universal compatibility.

Validation Rules

  1. Character Validity: Each dimensional component must use only characters from its respective character set
  2. Cyclical Consistency: Dimension type must match expected position in the three-character cycle
  3. Order Preservation: Characters within each dimension must follow specified ordering
  4. Extension Validity: Extended characters must follow systematic repetition patterns
  5. Numeric Format: Numeric dimensions must represent positive integers only

Dimensional Type Determination

Character set for dimension n is determined by: n % 3


Examples

Practical demonstrations of CELL coordinate systems across different dimensionalities are available in dedicated example pages:


Relationship to Other Notations

Notation Purpose Relationship to CELL
DROP Reserve location format Complements CELL by providing "*" notation for off-board locations
MIN Concise move identification Uses CELL coordinates for source and destination positions
PMN Mechanical move decomposition Uses CELL coordinates for board positions in action sequences
GGN Movement possibility rules Uses CELL coordinates for board positions in movement constraints

Reference Implementations

This section lists available libraries and tools that implement the CELL specification.

Ruby