do local function rot8r(n)
local a,b,c,d,e,f,g,h=1,2,3,4,5,6,7,8
for x=1,n do
a,b,c,d,e,f,g,h=h,a,b,c,d,e,f,g
end
return table.concat{a,b,c,d,e,f,g,h}
end
local function rot8l(n)
local a,b,c,d,e,f,g,h=1,2,3,4,5,6,7,8
for x=1,n do
a,b,c,d,e,f,g,h=b,c,d,e,f,g,h,a
end
return table.concat{a,b,c,d,e,f,g,h}
end
assert(rot8r(0) == "12345678")
assert(rot8r(10) == "78123456")
assert(rot8r(105) == "81234567")
assert(rot8r(0) == "12345678")
assert(rot8r(1) == "81234567")
assert(rot8r(2) == "78123456")
assert(rot8r(0) == "12345678")
assert(rot8r(1) == "81234567")
assert(rot8r(2) == "78123456")
assert(rot8r(105) == "81234567")
assert(rot8l(0) == "12345678")
assert(rot8l(10) == "34567812")
assert(rot8l(105) == "23456781")
assert(rot8l(0) == "12345678")
assert(rot8l(1) == "23456781")
assert(rot8l(2) == "34567812")
assert(rot8l(0) == "12345678")
assert(rot8l(1) == "23456781")
assert(rot8l(2) == "34567812")
assert(rot8r(100) == "56781234")
assert(rot8l(100) == "56781234")
end
do local function rot9r(n)
local a,b,c,d,e,f,g,h,i=1,2,3,4,5,6,7,8,9
for x=1,n do
a,b,c,d,e,f,g,h,i=i,a,b,c,d,e,f,g,h
end
return table.concat{a,b,c,d,e,f,g,h,i}
end
local function rot9l(n)
local a,b,c,d,e,f,g,h,i=1,2,3,4,5,6,7,8,9
for x=1,n do
a,b,c,d,e,f,g,h,i=b,c,d,e,f,g,h,i,a
end
return table.concat{a,b,c,d,e,f,g,h,i}
end
assert(rot9r(0) == "123456789")
assert(rot9r(10) == "912345678")
assert(rot9r(105) == "456789123")
assert(rot9r(0) == "123456789")
assert(rot9r(1) == "912345678")
assert(rot9r(2) == "891234567")
assert(rot9r(0) == "123456789")
assert(rot9r(1) == "912345678")
assert(rot9r(2) == "891234567")
assert(rot9r(105) == "456789123")
assert(rot9l(0) == "123456789")
assert(rot9l(10) == "234567891")
assert(rot9l(105) == "789123456")
assert(rot9l(0) == "123456789")
assert(rot9l(1) == "234567891")
assert(rot9l(2) == "345678912")
assert(rot9l(0) == "123456789")
assert(rot9l(1) == "234567891")
assert(rot9l(2) == "345678912")
assert(rot9r(100) == "912345678")
assert(rot9l(100) == "234567891")
end
do local function rot18r(N)
local a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
for x=1,N do
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r=r,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q
end
return table.concat{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r}
end
local function rot18l(N)
local a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18
for x=1,N do
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r=b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,a
end
return table.concat{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r}
end
assert(rot18r(0) == "123456789101112131415161718")
assert(rot18r(10) == "910111213141516171812345678")
assert(rot18r(105) == "456789101112131415161718123")
assert(rot18r(0) == "123456789101112131415161718")
assert(rot18r(1) == "181234567891011121314151617")
assert(rot18r(2) == "171812345678910111213141516")
assert(rot18r(0) == "123456789101112131415161718")
assert(rot18r(1) == "181234567891011121314151617")
assert(rot18r(2) == "171812345678910111213141516")
assert(rot18r(105) == "456789101112131415161718123")
assert(rot18l(0) == "123456789101112131415161718")
assert(rot18l(10) == "111213141516171812345678910")
assert(rot18l(105) == "161718123456789101112131415")
assert(rot18l(0) == "123456789101112131415161718")
assert(rot18l(1) == "234567891011121314151617181")
assert(rot18l(2) == "345678910111213141516171812")
assert(rot18l(0) == "123456789101112131415161718")
assert(rot18l(1) == "234567891011121314151617181")
assert(rot18l(2) == "345678910111213141516171812")
assert(rot18r(100) == "910111213141516171812345678")
assert(rot18l(100) == "111213141516171812345678910")
end
do local function rot9r(n, m)
local a,b,c,d,e,f,g,h,i=1,2,3,4,5,6,7,8,9
local s = ""
for x=1,n do
a,b,c,d,e,f,g,h,i=i,a,b,c,d,e,f,g,h
if x == m then s = table.concat{a,b,c,d,e,f,g,h,i} end
c,d = d,c
end
return table.concat{a,b,c,d,e,f,g,h,i, s}
end
assert(rot9r(0,0) == "123456789")
assert(rot9r(10,0) == "893124567")
assert(rot9r(105,0) == "913245678")
assert(rot9r(105,90) == "913245678891324567")
assert(rot9r(0,0) == "123456789")
assert(rot9r(1,0) == "913245678")
assert(rot9r(2,0) == "893124567")
assert(rot9r(1,1) == "913245678912345678")
assert(rot9r(2,1) == "893124567912345678")
assert(rot9r(2,2) == "893124567891324567")
end