login
A346223
Square array T(m,n), read by ascending antidiagonals, based on the algorithm used in the Book of Soyga, a 16th-century Latin grimoire on magic. One of the earliest historic examples of a cellular automaton.
1
12, 8, 3, 17, 17, 8, 16, 2, 16, 22, 0, 13, 19, 10, 1, 11, 15, 4, 2, 21, 3, 11, 14, 1, 16, 1, 18, 8, 0, 13, 14, 18, 12, 20, 16, 22, 16, 15, 22, 8, 20, 11, 8, 10, 1, 17, 3, 19, 10, 11, 3, 7, 1, 21, 3, 8, 11, 1, 2, 8, 2, 12, 6, 0, 18, 8, 12, 2, 0, 4, 11, 16, 15, 20, 6, 20, 16, 22
OFFSET
0,1
COMMENTS
The Book of Soyga (or "Aldaraia sive Soyga vocor") contains 36 tablets of 36 X 36 Latin letters; all 36 tablets use the same algorithm but different seeds. This sequence is based on the tablet "TABULA prima ARIES" which uses as seed the letter sequence "NISRAM" (Bodley908 page 180 or Sloane8 102/103 or Sloane3189 page 58). For representation in the OEIS, numbers are substituted for Latin letters as follows: A = 0, B = 1, C = 2, D = 3, E = 4, F = 5, G = 6, H = 7, I = 8, K = 9, L = 10, M = 11, N = 12, O = 13, P = 14, Q = 15, R = 16, S = 17, T = 18, U = 19, X = 20, Y = 21, Z = 22.
The algorithm was not documented in the book itself, but was rediscovered by Jim Reeds in 1998.
The first column T(0,n) is defined by the seed or "key" of the table. In our example here this is "NISRAM". This seed is written from top to down repeatedly forward and backward in sequence NISRAMMARSINNISR... .
The algorithm uses a non-invertible mapping f(k) which is defined thus for k = 0..22: f(0) = 2, f(1) = 2, f(2) = 3, f(3) = 5, f(4) = 14, f(5) = 2, f(6) = 6, f(7) = 5, f(8) = 14, f(9) = 15, f(10) = 20, f(11) = 22, f(12) = 14, f(13) = 8, f(14) = 13, f(15) = 20, f(16) = 11, f(17) = 8, f(18) = 8, f(19) = 15, f(20) = 15, f(21) = 15, f(22) = 2.
T(m,0) = ( T(m-1,0) + f(T(m-1,0)) ) mod 23, for m > 0. T(m,n) = ( T(m,n-1) + f(T(m-1,n)) ) mod 23, for m > 0 and n > 0.
Even in ancient times people noticed conservation laws in the universe, yet not with scientific rigor but more intuitively. But it was also observed that there appears to be no conservation of information inside the known observable universe. In occult philosophy this eventually led to the idea that information may be transfered into the spirit world by using destructive processes on it. The function f(k) in the algorithm of this tables is such a process and is therefore intentionally non-invertible. The magus magically entangled a letter sequence with his will or intention in his mind. Probably the letters NISRAM are starting letters of a Latin sentence which defines the will of the magus regarding this tablet. This letter sequence would then be transfered into the spirit world, by the non-invertible process implemented in the algorithm.
It may be possible that something more than what is apparent is hidden in these tablets, because in the section "Octavus Liber super tria nomina" of the Book Soyga is a reference to the book "Steganographia" of Johannes Trithemius.
REFERENCES
(Unknown author), British Library Sloane MS 8.
(Unknown author), Bodleian Library Bodley MS. 908.
EXAMPLE
Square array T(n,M) begins:
12, 3, 8, 22, 1, ...
8, 17, 16, 10, 21, ...
17, 2, 19, 2, 1, ...
16, 13, 4, 16, 12, ...
0, 15, 1, 18, 20, ...
11, 14, 14, 8, 11, ...
PROG
(MATLAB)
function a = A346223(max_n)
text = 'nisrammarsin';
% translate key word into numbers
for l = 1:length(text)
c(l) = find('abcdefghiklmnopqrstuxyz'==text(l))-1;
end
a = zeros(max_n, max_n);
% fill first column with keyword
for m = 1:max_n
a(m, 1) = double(c(1+mod(m-1, length(c))));
end
% calculate first row
for n = 2:max_n
a(1, n) = mod(a(1, n-1) + f(a(1, n-1)), 23);
end
% calculate further rows
for m = 2:max_n
for n = 2:max_n
a(m, n) = mod(a(m-1, n) + f(a(m, n-1)), 23);
end
end
end
% noninvertible map
function y = f(x)
map = [2 2 3 5 14 2 6 5 14 15 20 22 14 8 13 20 11 8 8 15 15 15 2];
y = map(1+mod(x, length(map)));
end
(Python)
def key(x): # N I S R A M M A R S I M
return [12, 8, 17, 16, 0, 11, 11, 0, 16, 17, 8, 12][x%12]
def f(x):
return [2, 2, 3, 5, 14, 2, 6, 5, 14, 15, 20, 22, 14, 8, 13, 20, 11, 8, 8, 15, 15, 15, 2][x%23]
def T(m, n):
if m == 0: return key(n)
if n == 0: return (T(m-1, 0) + f(T(m-1, 0)))%23
return (T(m, n-1) + f(T(m-1, n)))%23
def auptodiag(maxd):
return [T(j, d-j) for d in range(maxd) for j in range(d+1)]
print(auptodiag(12)) # Michael S. Branicky, Dec 08 2021
CROSSREFS
Sequence in context: A038333 A185259 A090438 * A128108 A071279 A118656
KEYWORD
nonn,tabl
AUTHOR
Thomas Scheuerle, Jul 12 2021
STATUS
approved