newish musings
blog logic puzzles piward coding
github profile
𝟘𝟞· logic I now have a somewhat general "pigeonhole solver" which, given a set of equations of the form x_i¬=x_j and for each x_i, one equation of the form x_i∈{c_j
c_(j+1) c_(j+2) ... c_(j+k)}. This can directly be solved with a search, but I've been trying to avoid that in my pretense toward symbolic manipulation. In the end,
I'm not sure my approach is all that different than a search - if I can write my approach up in a sensible form, I'll post a doc someplace and hope to learn more.
𝟚𝟙· coding I updated my color text routines that I use in all my Python tools to proceess faster when read into Emacs. One day, I may create an IDE for my ‘neo-retro’
logic-puzzle computing environment, but Emacs is still the best tool for me.
𝟚𝟚· coding While I use Unicode extensively and appreciate its near universal adoption and support, I object to any description of it as a "character set". It is a partial
encoding for semantically based typesetting of all human-readable text that includes representations for historic character sets. Ideally, a "character set" provides
an abstract, finite set of symbols for computation and a visual representation that allows human beings to readily identify symbols in a sequence - a simple alphabet.
If we remove codepoints that are control values (modifiers and typesetting indicators) and, for groups of characters which are (subjectively) visually similar,
discard all but one, we are left with a workable character set. But it's a major bonus if human beings can naturally associate meaning with sequences to form a human
readable language. This character set requires knowledge of every alphabet included in Unicode and fluency in at least one language that uses each alphabet. I encode
formal languages and strings using my own (still evolving) ”Zy Logical Character Set" or "Zylch" (the "zy" is vestigial, but still makes for entertaining acronyms).
It's a single byte encoding starting with the digits 0⋯9, followed by the 26 uppercase then 26 lowercase letters of English. Then a bunch of symbols that change from
𝔻 week to week...
𝕖
𝕔 𝟚𝟚· coding I'm using ‘⊙‘ for dot product and ‘⊗’ for cross product. My preprocessor translates these from binary operators into calls to ‘dot’ and ‘cross’, which are
𝕖 native in GLSL and implemented in Python to work on number sequences of equal length (dot) or only 3-tuples of numbers (cross).
𝕞
𝕓 𝟚𝟛· logic I've added support for the Cartesian Product, represented by ‘×’ in Unicode (U+D7). What I call “tuple constrained quantification” (∀⟨x y⟩∈Z×Z) is accepted in
𝕖 ⟪Sapphire⟫ as well as set exponentiation by an integer (Z^4 ▷ Z×Z×Z×Z) ({1⋯3}^3 ▷ {1⋯3}×{1⋯3}×{1⋯3}). Finite expressions can be evaluated in calculator fashion (⟨1 2
𝕣 3⟩∈{1⋯3}^3 ▷ ✔) (∀⟨a b⟩∈{1⋯3}^2 a>3 ⇒ a+b>4 ▷ ✔) and can also be symbolically manipulated by ⟪Ag⟫, aka “The Silver Solver”. I've updated my Sudoku rules to use these
new features
𝟚𝟜· I finally got around to watching Jordan Peele's documentary "Get Out" the other night. I have to say, the re-enactments were grisly, but well done.
𝟚𝟝· piward I finished implementing SDL ‘framebuffer’ objects which display a screen sized OpenGL texture. Framebuffer support is primarily for debugging, but also can be
used with small ‘gadget’ displays, like Pimoroni's Display Hat Mini, ePaper displays, also available from Pimoroni or from Waveshare, which I used to prototype a
Raspberry Pi based e-Reader.
𝟚𝟞· coding I took a small step toward sensible language handling by generating a full parse tree for a small input file. Starting life as a no-op, my evolving ‘zypp’
preprocessor converts ⟪Midnight⟫ and ⟪Cobalt⟫ to Python and C, respectively, in an entirely ad-hoc fashion. At least I know I can create an inviting bug hotel.
Eventually, each language layer I use will share a unified parser, but different intermediate code generators which will perform first level semantic checks. The
intermiedate language will support high level primitives that can be lowered to target subsets which can be used to emit code. My ⟪Sapphire⟫ project has a good deal
of infrastructure to cope with.
𝟚𝟠· coding More language infrastructure progress - I've got code generating from the ⟪Violet⟫ language layer that bridges between ⟪Cobalt⟫ (aka C) and ⟪Midnight⟫ (aka
Python). I generate code that uses Python's ‘ctypes’ module to call C from Python, making it easy to mix and match implementations.