+/** @param {!string} fen
+ * @return {!string}
+ *
+ * Return whose side it is to play (w or b), given a FEN.
+ */
+function find_toplay(fen) {
+ return fen.split(' ')[1];
+}
+
+/** @param {!string} fen
+ * @return {!number}
+ *
+ * Return the move clock, starting from 1. See also find_toplay().
+ */
+function find_move_num(fen) {
+ return parseInt(fen.split(' ')[5]);
+}
+
+/** @param {!string} fen
+ * @return {!number}
+ *
+ * Return the half-move clock, starting from 0 (and never resetting).
+ */
+function find_halfmove_num(fen) {
+ let move_num = find_move_num(fen);
+ let toplay = find_toplay(fen);
+ return (move_num - 1) * 2 + (toplay === 'w' ? 0 : 1);
+}
+