<commit_before>#+TITLE: Knight Owl
#+AUTHOR: <NAME>

A chess engine in lisp

** Move Notation

  For general moves, the first character (or lack thereof) indicates
  the piece: R for Rook, N for kNight, B for Bishop, Q for Queen, K
  for King, and the empty string for pawn. Optionally a file or rank
  (or both) may be given after the piece letter to remove
  ambiguity. An x comes next if the a capture takes place. The next
  two characters always represent the destination file [a,z] and rank
  [1,8]. If a pawn promotion takes place, a equals sign and
  replacement piece letter are added. Lastly, a plus sign describes a
  check and the hash symbol checkmate. O-O and O-O-O label a kingside
  and queenside castling, respectively.

*** Context-Free Grammar

   #+BEGIN_SRC
   <move>             ::= <castle>
                          | <piece><file>?<rank>?<capture>?<file>
                            <rank><promotion>?<checking>?
   <piece>            ::= R | N | B | Q | K | <empty string>
   <empty string>     ::= ''
   <file>             ::= [a-h]
   <rank>             ::= [1-8]
   <capture>          ::= x
   <promotion>        ::= =<piece>
   <checking>         ::= [#+]
   <castle>           ::= <queenside castle> | <kingside castle>
   <kingside castle>  ::= O-O
   <queenside castle> ::= O-O-O
   #+END_SRC<commit_msg>Fix various grammatical errors in README.org<commit_after>#+TITLE: Knight Owl
#+AUTHOR: <NAME>

A chess engine in lisp

** Move Notation

  For general moves, the first character (or lack thereof) indicates
  the piece: R for Rook, N for kNight, B for Bishop, Q for Queen, K
  for King, and the empty string for pawn. Optionally a file or rank
  (or both) may be given after the piece letter to remove
  ambiguity. An x comes next if a capture takes place. The next two
  characters always represent the destination file [a,z] and rank
  [1,8]. If the move includes a pawn promotion, an equals sign and the
  letter of the replacement piece are added. Lastly, a plus sign
  describes check and the hash symbol checkmate. For castling, O-O and
  O-O-O label kingside and queenside castles, respectively.

*** Context-Free Grammar

   #+BEGIN_SRC
   <move>             ::= <castle>
                          | <piece><file>?<rank>?<capture>?<file>
                            <rank><promotion>?<checking>?
   <piece>            ::= R | N | B | Q | K | <empty string>
   <empty string>     ::= 
   <file>             ::= [a-h]
   <rank>             ::= [1-8]
   <capture>          ::= x
   <promotion>        ::= =<piece>
   <checking>         ::= [#+]
   <castle>           ::= <queenside castle> | <kingside castle>
   <kingside castle>  ::= O-O
   <queenside castle> ::= O-O-O
   #+END_SRC
{'fraction_non_alphanumeric': 0.11738811445341159, 'fraction_numerical': 0.00293470286133529, 'mean_word_length': 2.3583743842364533, 'pattern_counts': {'":': 0, '<': 53, '<?xml version=': 0, '>': 53, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 4, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1583376', 'n_tokens_mistral': 874, 'n_tokens_neox': 859, 'n_words': 327}