(49g/50g) Tables from the Book of Soyga
07-25-2021, 05:54 PM (This post was last modified: 07-25-2021 05:57 PM by John Keith.)
Post: #1
 John Keith Senior Member Posts: 1,039 Joined: Dec 2013
(49g/50g) Tables from the Book of Soyga
The Book of Soyga (also known as Aldaraia) is a 16th century treatise on magic, astrology and mysticism by author(s) unknown. The last section of the book consists of 36 tables each of which is a 36 by 36 grid of letters. The tables can be produced by a deterministic algorithm which is described in this paper by Jim Reeds. Further information at A346223. Both sources also link to a PDF of the book edited and translated by Jane Kupin.

The following directory of programs implements the algorithm used to produce the tables, in the form of a numerical array as in the OEIS link, or as a printable grid of letters. A brief description of the programs follows.

SOYMAT is the main program. Input is a string of 2 to 10 letters in the Classical Latin alphabet, which does not include the letters j, v or w; the letter j will be converted into i; the letters v and w will be converted into u. The input string is not case sensitive but cannot contain spaces or other non-letter characters.
Output is an n^2 X n^2 array of integers representing letters in the Classical Latin alphabet from 0(a) to 22(z). The array is returned as a list of lists. If desired it can be converted into a matrix with AXL.

The program SOYTAB turns the array returned by SOYMAT into a grid of letters suitable for printing. If the input string has 6 letters or less, the letters in the grid are interspersed with spaces for legibility.

The programs NL\->LA and LA\->NL convert between lower-case letters of the Classical Latin alphabet and integers in the range 0..22.

NIMAP is a list of 23 integers which implements the non-invertible mapping of characters. It can be replaced by any list of 23 integers in the range of 0..22 to create a custom mapping.

KEYS is a list of the 36 keywords used to create the original tables.

The programs require ListExt 1.3, and are best run under an emulator on a computer so that the tables can be easily visualized and printed.

Example: With the string "NISRAM" on the stack, pressing SOYMAT followed by SOYTAB will return the first table from the book:

Code:
  n d i z b d i z b d i z b d i z b d i z b d i z b d i z b d i z b d i z   i s r l y t r l y t r l y t r l y t r l y t r l y t r l y t r l y t r l   s c u c b x i b a x i b a x i b a x i b a x i b a x i b a x i b a x i b   r o e r n m h g g d o k q s r n p l f d f z l y q s r n p l f d f z l y   a q b t x d n x y t y b s c u e f n u t o h q t a u i d u c i s o h q t   m p p i m c q s g b a d z e l b h s e k f k h a c z l a y s r f q e g b   m o z l i r d z i q x t h k c e y k u b h p x q z b n p m r e u h k y r   a q u c m q a b l n m s q g i t g q r n y g d x p p c s u i t e y b a t   r d b e c t i q h s u k h m h a i g z p m f f z r c f u m h a g e q x l   s m a g i k a s q p k b k d n p y y p e c i u p g i u m l e p u u h c o   i c d m h p o c t z m a m c q m x o z g i z y g n z y d q b r h b k s y   n r p b k g u s d e c d r o a o f q u y a b a i d e n s a d y z d p h d   n h u r x y m r p s l a t y q l c t e n p p o r p s x k q a a b f r t m   i y m q s g s b r f n p i n g r o d k e f r b t z u n a s i p p t b x d   s g s a u y k r e u e f l k y i e s s n u i q q u m m z u a r c y r i s   r s c d b a m q b y u x c n n z g a u e l f s a y d r l r m q z a t r f   a u s m a c p f d d b z e d s h m z y u c i i p m c u c u d x p o d y x   m t c p o l m e s m a b g k k z o h d b e z l m l z y s e s f r b f a z   m s l m n b o n i c d g n a m y f k t k u p a o t h d z g a h y r r m y   a u c p c e e d o l a i d f o g m i k b y g g u l e s h m z k o b t u o   r h h u s n t m n b c m c i e x d o s k o p u m k u k z o h p d g b y f   s q e l p c y d s k s u s r q s m n i a q m t u b y b b q e f f i q t o   i g l h u s g k k b u m r e g a o x a c t u l r n n q y h k x x a s d t   n x c l r f i a m a y d y u y q l s i r g c o b p c t g o s f z c x t d   n m b n h l f c p o g k o e n g r f l o p q l y g i k y f u x p q s d i   i c e d n b h h u f i a q b p u i u c r c t t g n z m x x m u g y k t r   s l b f p p x z y x a c t k g c m t l o l q q d s h r i m l r s g q q o   r y r r c s f b a z c f x b i r z x c r y h x t c l o r z n h z i g y f   a a t b e i u r m y s o f d o b b z e h d n m s l h t b b p x p y y o o   m z x r q f y i c b u f h i e q y p s q a p b u c l q y r c a r k o y f   m y n h x x o r o k m e y a g y o z u h f r n l z n g e h h f t s y o o   a a p x n m n h t s u u o i x o y p k z h y e b b p u u z k x l p m n e   r m o f p b p x l p k m n z z q t z m y z a g h g x m t h p l h u d s n   s u f h u r c a n f m l k p n g b b o g f c k z i m l q e f n y m c x e   i l c l r e r m m e c o s z p u r n e x x s s h o u c t n u e n c f z g   n b e b t n h r z g i e i o z y i d k n m r f k f y s d s e t x s o h m

Code:
 DIR   SOYMAT   \<< DUP SIZE DUP SQ 0. \-> n n2 col1     \<< LA\->NL DUP REV + n 2. / LMRPT 1. n2 SUB DUP 'col1' STO 1. GET 2. n2       START DUPDUP NIMAP SWAP 1. + GET + 23. MOD       NEXT n2 \->LIST 2. n2       FOR k DUP TAIL col1 k GET { SWAP NIMAP SWAP 1. + GET + 23. MOD } LSCAN       NEXT n2 \->LIST     \>>   \>>   SOYTAB   \<< DUP SIZE \v/ 6. \<= \-> f   \<< { f { { 32. SWAP } LMAP } IFT NL\->LA 13. CHR + 10. CHR + } LMAP \GSLIST   \>> \>>   NL\->LA   \<< NL\->S { 0. 8. 97. } CHR+ { 9. 19. 98. } CHR+ { 20. 22. 100. } CHR+   \>>   LA\->NL   \<< LCASE "j" "i" SREPL DROP "v" "u" SREPL DROP "w" "u" SREPL DROP { 97. 105. -97. } CHR+ { 107. 117. -98. } CHR+ { 120. 122. -100. } CHR+ S\->NL   \>>   NIMAP { 2. 2. 3. 5. 14. 2. 6. 5. 14. 15. 20. 22. 14. 8. 13. 20. 11. 8. 8. 15. 15. 15. 2. }   KEYS { "NISRAM" "ROELER" "IOMIOT" "ISIAPO" "ORRASE" "OSACUE" "XUAUIR" "RAOSAC" "RSADUA" "ATROGA" "SDUOLO" "ARICAA" "MARSIN" "RELEOR" "TOIMOI" "OPAISI" "ESARRO" "EUCASO" "RIUAUX" "CASOAR" "AUDASR" "AGORTA" "OLOUDS" "AACIRA" "OSRESO" "NIEBOA" "OIAIAE" "ITIABA" "ADAMIS" "REUELA" "UISEUA" "MERONF" "ILIOSU" "OYNIND" "IASULA" "MOYSES" } END
 « Next Oldest | Next Newest »

User(s) browsing this thread: 1 Guest(s)