Re: Простая с виду задачка с подвохом
От: kov_serg Россия  
Дата: 21.09.20 18:15
Оценка: 9 (1)
Здравствуйте, 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
Отредактировано 22.09.2020 13:01 kov_serg . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.