Number.Mod, List.Positions или реализуем код Вижинера
#АнатомияФункций - Number.Mod, List.Positions
Всем привет!
Вчера решали задачу по построению таблицы со сдвигами, но выяснилось, что это требовалось для кодирования информации. Так вот – для кодирования таблица вообще не нужна, нужны только номера, остатки и всякое такое. Поэтому вот код:
А что тут к чему – смотрим на ютубе
Важно – поменял в коде проверку условия – проверяем не null, а именно наличие текста.
Лайк, коммент, подписка приветствуются )))
Надеюсь, было полезно.
Всех благ!
@buchlotnik
#АнатомияФункций - Number.Mod, List.Positions
Всем привет!
Вчера решали задачу по построению таблицы со сдвигами, но выяснилось, что это требовалось для кодирования информации. Так вот – для кодирования таблица вообще не нужна, нужны только номера, остатки и всякое такое. Поэтому вот код:
(tbl,key,cr)=>
let
lst=List.Buffer({"А".."Е","Ё","Ж".."Я","а".."е","ё","ж".."я","A".."Z","a".."z","0".."9"," ",",",".",":","-"}),
c=if cr=0 then 1 else -1,
d=Record.FromList(List.Positions(lst),lst),
e=List.Buffer(List.Transform(Text.ToList(key),(x)=>Record.Field(d,x))),
n=List.Count(lst),
f=(x)=>if x is text then [a=Text.ToList(x),b=Text.Combine(List.Transform(List.Zip({a,List.Positions(a)}),g))][b] else x,
g=(x)=>lst{Number.Mod(n+Record.Field(d,x{0})+c*(e{Number.Mod(x{1},List.Count(e))}+1),n)},
to=Table.TransformColumns(tbl,{},f)
in
to
А что тут к чему – смотрим на ютубе
Важно – поменял в коде проверку условия – проверяем не null, а именно наличие текста.
Лайк, коммент, подписка приветствуются )))
Надеюсь, было полезно.
Всех благ!
@buchlotnik