On 4/18/2023 10:57 AM, Henning Hraban Ramm via ntg-context wrote:
I just came across this thread about the base-20 system of the Inuit people and the numerals invented for it in the 1990s:
https://mathstodon.xyz/@johncarlosbaez/110215432175491555

This makes simple calculations just beautiful.
interesting ... quick hack attached

Hans

-----------------------------------------------------------------
                                          Hans Hagen | PRAGMA ADE
              Ridderstraat 27 | 8061 GH Hasselt | The Netherlands
       tel: 038 477 53 69 | www.pragma-ade.nl | www.pragma-pod.nl
-----------------------------------------------------------------

Attachment: meta-imp-kaktovik.pdf
Description: Adobe PDF document

%D \module
%D   [       file=meta-imp-kaktovik,
%D        version=2023.04.18,
%D          title=\METAPOST\ Graphics,
%D       subtitle=Kaktovik Numbers,
%D         author=Hans Hagen,
%D           date=\currentdate,
%D      copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
%C
%C This module is part of the \CONTEXT\ macro||package and is
%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
%C details.

%D Just a quick hack for Hraban (after a post on the mailing list).

\startMPcalculation{simplefun}

    path kaktovik_glyphs[] ;

    def InitializeKaktovik =

        save p, d, u ;

        pair p[] ; numeric d ; d := .1 ; numeric u ; u := .15 ;

      % d := getparameterdefault "mpsfont" "d" .10 ;
      % u := getparameterdefault "mpsfont" "u" .15 ;

        p[0] := (0,1) ;
        p[1] := (1,0) ;
        p[2] := (2,1 -  d) ;
        p[3] := (3,0) ;
        p[4] := (4,1 - 2d) ;

        p[5] := (4,1 +  u) ;
        p[6] := (0,1 + 2u) ;
        p[7] := (4,1 + 4u) ;

        kaktovik_glyphs[0] := (1,1)  { right } .. { left } (2,1/2) { left } .. 
{ right } (3,1);

        for i= 1 upto 4 :
            kaktovik_glyphs[i] := p[0] for j=1 upto i : -- p[j] endfor ;
        endfor ;

        kaktovik_glyphs[ 5] := p[5] -- p[0] ;                for i= 6 upto  9 : 
kaktovik_glyphs[i] := p[5] -- kaktovik_glyphs[i-5] ; endfor ;
        kaktovik_glyphs[10] := p[6] -- kaktovik_glyphs[ 5] ; for i=11 upto 14 : 
kaktovik_glyphs[i] := p[6] -- kaktovik_glyphs[i-5] ; endfor ;
        kaktovik_glyphs[15] := p[7] -- kaktovik_glyphs[10] ; for i=16 upto 19 : 
kaktovik_glyphs[i] := p[7] -- kaktovik_glyphs[i-5] ; endfor ;

    enddef ;

    vardef Kaktovik(expr i) =
        draw image (
            draw kaktovik_glyphs[i]
                xscaled (10/20 -1/20)
                yscaled (25/20 -2/20)
                withpen (pencircle xscaled 1/20 yscaled 5/20) rotated -(2*20)
              % withpen (pencircle xscaled 1/40 yscaled 5/40) rotated -(2*20)
              % withpen (pencircle xscaled 2.5/40 yscaled 5/40) rotated -(2*20)
            ;
        ) shifted (2/20,2/20)
    enddef ;

    lmt_registerglyphs [
        name     = "kaktovik",
        units    = 2,
        usecolor = true,
        width    = 2,
        height   = 2,
        depth    = 0,
        preamble = "InitializeKaktovik"
    ] ;

    for i=0 upto 19 :
        lmt_registerglyph [
            category = "kaktovik",
            unicode  = 119488 + i, % "0x1D2C0"
            code     = "Kaktovik(" & decimal i & ")"
        ] ;
    endfor ;

\stopMPcalculation

\startluacode
    interfaces.implement {
        name      = "kaktoviknumerals",
        arguments = "integer",
        actions   = function(n)
            local digits = { }
            local count  = 1
            while true do
                digits[count] = utf.char(0x1D2C0 + (n % 20))
                n = n // 20
                if n == 0 then
                    break;
                end
                count = count + 1
            end
            context("%t",digits)
        end
    }
\stopluacode

\unprotect

\permanent\def\kaktoviknumerals#1{\clf_kaktoviknumerals\numexpr#1\relax}

\defineconversion [kaktoviknumerals] [\kaktoviknumerals]
\defineconversion [K]                [\kaktoviknumerals]

\definefontfeature
  [kaktovik]
  [metapost=kaktovik]

\protect

\continueifinputfile{meta-imp-kaktovik.mkxl}

\definefontfeature
  [default]
  [default]
  [metapost=kaktovik]
% [metapost={category=kaktovik,u=.25,d=.20,x=}]

\setupbodyfont[dejavu]

% \nopdfcompression

\startTEXpage[offset=1ts,width=3es]

    \start
    \showglyphs
        KAKTOVIK
        \dostepwiserecurse{0}{19}{1}{\kaktoviknumerals{#1}\space }
    \stop

    kaktovik \start
        \red\glyphxscale 700
        \dostepwiserecurse{0}{19}{1}{\kaktoviknumerals{#1}\space }
    \stop

    \startitemize[packed,K][color=orange,stopper=]
        \startitem first  \stopitem
        \startitem second \stopitem
        \startitem third  \stopitem
    \stopitemize

    KAKTOVIK \start
        \red  \kaktoviknumerals{2023} --
        \green\kaktoviknumerals{4}    --
        \blue \kaktoviknumerals{18}
    \stop

    KAKTOVIK
\stopTEXpage


___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / https://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : https://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : https://contextgarden.net
___________________________________________________________________________________

Reply via email to