Здравствуйте, Lazytech, Вы писали:
L>Insane Coloured Triangles | Codewars
L>Смутно подозреваю, что вместо работы со всей строкой можно как-то анализировать по несколько символов из начала и конца строки, но вот как...
#!/usr/bin/lua
function fn(x)
local s,c,r,c1,r1,c2,r2,r3
function r3(t,r)
r=0 while t%3==0 do t=t//3 r=r+1 end
return t%3,r
end
if #x<2 then return x[1] end
s=x[1]+x[#x] c=1 r=0
for i=2,#x-1 do
c1,r1=r3(#x-i+1)
c2,r2=r3(i-1)
c=(c*c1*c2)%3
r=r+r1-r2
if r==0 then s=s+x[i]*c end
end
if #x%2==0 then s=2*s end
return s%3
end
function F(s)
local x,t,RGB,r={},{R=0,G=1,B=2},"RGB"
s:gsub("[RGB]",function(c) table.insert(x,t[c]) end)
r=fn(x)+1 return RGB:sub(r,r)
end
print(F"RRGBRGBB")
https://rextester.com/HTKP68415
G