Check out Grant Acedrex, our featured variant for April, 2024.

Enter Your Reply

The Comment You're Replying To
H. G. Muller wrote on Thu, Jan 11 10:46 AM UTC:

It is a pity I did not think of this before:

I now wrote a function cbSymmetricGraph(geometry,specs,confine), which seems very generally useful. It  generates moves for a totally symmetric piece (on a grid board), according to an array 'specs'. In principle everything it does can be done with the aid of the existing functions cbShort/LongRangeGraph. Which even can do asymmetric pieces. (Which outside of Shogi virtually never occur...) But the price for that is that you often have to call it with long lists of 'deltas'. This is not only annoying and makes the source code look cluttered, but also a frequent source of bugs. And then you have to use cbMergeGraphs to combine moves that could not be generated at once, because they had different range or flags.

This cbSymmetricGraph takes an array of numbers, where each number represents either a new flags setting to be applied to the moves that follow, or code for direction and range of a move. (Because all flags are > 65000 it can easily spot the difference.) Each symmetric move set is indicated by a single integer: the units indicate the y-step, the decades the x-step, and any higher digits (optionally) the range (which by default is 1, for a leaper). So specs=[21] indicates all Knight moves. A preceding minus means unlimited range, so for a Queen we pass [-10,-11]. So sliders and leapers can be mixed; Archbishop results from [21,-11]. For a 'Short Rook' (Betza R4) we pass [410], but there we already enter the realm of things that are almost never needed.

Divergent pieces are also easy; mRcB would require [FLAG_MOVE,10,FLAG_CAPTURE,11]. This is potentially easier than having dedicated functions like cbCardinalGraph, where you would have to know that it is Cardinal, and not Archbishop or Palladin. And for the rarer pieces you would have to know whether a function exists for it in the first place. So I regret now that I have added so many named graph functions in fairy-move-model, which almost all could have been replaced by this cbSymmetricGraph. (For pieces like Pawn, Griffon and Unicorn dedicated functions still make sense.)


Edit Form

Comment on the page H. G. Muller

Conduct Guidelines
This is a Chess variants website, not a general forum.
Please limit your comments to Chess variants or the operation of this site.
Keep this website a safe space for Chess variant hobbyists of all stripes.
Because we want people to feel comfortable here no matter what their political or religious beliefs might be, we ask you to avoid discussing politics, religion, or other controversial subjects here. No matter how passionately you feel about any of these subjects, just take it someplace else.
Quick Markdown Guide

By default, new comments may be entered as Markdown, simple markup syntax designed to be readable and not look like markup. Comments stored as Markdown will be converted to HTML by Parsedown before displaying them. This follows the Github Flavored Markdown Spec with support for Markdown Extra. For a good overview of Markdown in general, check out the Markdown Guide. Here is a quick comparison of some commonly used Markdown with the rendered result:

Top level header: <H1>

Block quote

Second paragraph in block quote

First Paragraph of response. Italics, bold, and bold italics.

Second Paragraph after blank line. Here is some HTML code mixed in with the Markdown, and here is the same <U>HTML code</U> enclosed by backticks.

Secondary Header: <H2>

  • Unordered list item
  • Second unordered list item
  • New unordered list
    • Nested list item

Third Level header <H3>

  1. An ordered list item.
  2. A second ordered list item with the same number.
  3. A third ordered list item.
Here is some preformatted text.
  This line begins with some indentation.
    This begins with even more indentation.
And this line has no indentation.

Alt text for a graphic image

A definition list
A list of terms, each with one or more definitions following it.
An HTML construct using the tags <DL>, <DT> and <DD>.
A term
Its definition after a colon.
A second definition.
A third definition.
Another term following a blank line
The definition of that term.