Информация об изменениях

Сообщение Re: Простая с виду задачка с подвохом от 21.09.2020 18:15

Изменено 22.09.2020 13:01 kov_serg

Re: Простая с виду задачка с подвохом
Здравствуйте, Lazytech, Вы писали:

L>Insane Coloured Triangles | Codewars


L>Смутно подозреваю, что вместо работы со всей строкой можно как-то анализировать по несколько символов из начала и конца строки, но вот как...

#!/usr/bin/lua

function fn(x,n,s)
    n=#x%2+1 s=2*(x[1]+x[#x])
    for i=2,#x-1 do s=s+x[i] end
    return (n*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")

G
Re: Простая с виду задачка с подвохом
Здравствуйте, 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