Добавить
Уведомления

17 - На М - кодируем/декодируем тексты с помощью кода Вижинера

Решаем задачку по кодированию/декодированию информации в таблице с использованием, так называемого, кода Вижинера (многоалфавитный код и придумал его НЕ Вижинер) пы.сы. уже после записи посетила мысль, что проверять нужно не только null, поэтому правильнее функцию f изложить так: if x is text then [a=Text.ToList(x),b=Text.Combine(List.Transform(List.Zip({a,List.Positions(a)}),g))][b] else x Код целиком (вместо нижнего подчёркивания ставим знак больше): (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 Пост на канале тут - https://t.me/pbi_pq_from_tank/252 Кому интересно: мой курс по Power Query - https://akademia-excel.ru/powerquery?gcpc=9ae40 телега тут- https://t.me/pbi_pq_from_tank

Иконка канала buchlotnik-channel
190 подписчиков
12+
22 просмотра
2 года назад
12+
22 просмотра
2 года назад

Решаем задачку по кодированию/декодированию информации в таблице с использованием, так называемого, кода Вижинера (многоалфавитный код и придумал его НЕ Вижинер) пы.сы. уже после записи посетила мысль, что проверять нужно не только null, поэтому правильнее функцию f изложить так: if x is text then [a=Text.ToList(x),b=Text.Combine(List.Transform(List.Zip({a,List.Positions(a)}),g))][b] else x Код целиком (вместо нижнего подчёркивания ставим знак больше): (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 Пост на канале тут - https://t.me/pbi_pq_from_tank/252 Кому интересно: мой курс по Power Query - https://akademia-excel.ru/powerquery?gcpc=9ae40 телега тут- https://t.me/pbi_pq_from_tank

, чтобы оставлять комментарии