momente şi schiţe de informatică şi matematică
To attain knowledge, write. To attain wisdom, rewrite.

Sintetizarea etapelor de înregistrare a datelor dintr-o colecţie PGN

AWK | Bash | Crafty | Django | MySQL | Python | grep | sed
2014 aug

Grupăm în numai două scripturi Bash toate operaţiile necesare (implicând diverse "instrumente" şi limbaje, sau alte scripturi executabile) pentru extragerea, filtrarea şi gruparea datelor existente într-un fişier PGN şi înregistrarea corespunzătoare a acestora (prin modulul Python MySQLdb) în baza de date constituită în scopul reflectării unor colecţii de partide de şah adnotate (de Crafty), ale utilizatorilor.

Modelarea şi înregistrarea datelor dintr-o colecţie de partide de şah

AWK | Bash | Django | JSON | MySQL | Python | grep
2014 jul

Extragerea şi gruparea datelor specifice dintr-un fişier PGN care conţine o colecţie de partide de şah necesită o gamă variată de "instrumente", încât modelarea (în Python Django) şi înregistrarea acestor date (prin modulul Python MySQLdb) devine o etapă de sine stătătoare în realizarea unei aplicaţii Web de prezentare a acestor partide (aproape independentă de realizarea propriu-zisă a aplicaţiei).

Prelucrări de text PGN şi adnotarea partidelor de şah

AWK | Bash | Crafty | PGN | Python | perl | pyparsing
2014 jul

Identifică, extrage şi grupează informaţii dintr-un fişier text (partide de şah în format PGN), folosind modulul Python pyparsing (şi alte instrumente). Pune la punct o procedură practică (implicând AWK şi Bash) pentru derularea analizei automate a partidelor de şah folosind Crafty.

Notaţia prefix canonică şi reprezentarea DOT a expresiei

C++ | C++11
2014 jun

Urmărim (folosind şi C++11) scopuri practice - cum obţinem reprezentarea prefixată (complet parantezată), împreună cu descrierea DOT a arborelui sintactic pentru expresii algebrice date în formatul obişnuit, infixat; nu vizăm "analiza sintactică" în sine, ca tehnică sau metodologie - ci doar la nivel de algoritm, modelând direct (la nivel de caracter, cu neajunsurile specifice) metoda "precedence climbing".

Algoritm pentru descrierea DOT a arborelui sintactic al unei expresii

C++ | DOT
2014 jun

Ne bazăm pe formatul prefixat canonic (impus de predicatul write_canonical din Prolog); de exemplu, expresia 2+3*4+5 are formatul +(+(2,*(3,4)),5) (separând cu ',' subarborele stâng de cel drept şi parantezând subarborii).

Numerotăm operatorii şi operanzii, imitând metoda clasică de reprezentare pe un tablou a unui arbore binar (fiii nodului N sunt 2N şi 2N+1, N≥1). Pentru nodul curent N creem înregistrarea DOT N[label="op"] unde op este operatorul/operandul respectiv. Când citim '(' - dublăm N-ul curent (urmează fiul stâng), iar când citim ',' - incrementăm N-ul curent (urmează fiul drept); în ambele cazuri, creem înregistrarea DOT a muchiei: N/2 -- N. Când întâlnim ')' - înjumătăţim N-ul curent (regăsind N-ul părintelui, de la care va urma eventual o nouă ramură).


Prev
Next
ALL (372 titluri)

vezi Cărţile mele (de programare)

despre acesta ~ Home
(sau https://vlad.bazon.net/

Factoriale | Graficul funcţiilor

PGN browser | chess JS engine

Load

in /slightchess

/slightchess

626 partide analizate cu Crafty

(R) Computer Art | Decoraţiuni

Aplicaţii şcolare (javaScript)

Sinteze: