Skip to content

Instantly share code, notes, and snippets.

@bjulius
Created April 23, 2023 04:47
Show Gist options
  • Save bjulius/05ba7ca37a47a8236c6f9580324e9f87 to your computer and use it in GitHub Desktop.
Save bjulius/05ba7ca37a47a8236c6f9580324e9f87 to your computer and use it in GitHub Desktop.
ExcelBI Excel Challenge 178 - Brian Julius Solution (Route CIpher
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
AddToListNoNulls = Table.ExpandListColumn( Table.AddColumn(Source, "Letters", each List.RemoveMatchingItems( Text.ToList( [String]), {" "} )), "Letters"),
Group = Table.Group(AddToListNoNulls, {"String"}, {{"All", each _, type table [String=text, n=number, TexttoLIstNoNulls=text]}}),
AddIdx = Table.RemoveColumns( Table.AddColumn(Group, "Index", each Table.AddIndexColumn( [All], "Idx", 0, 1)), "All"),
Expand = Table.ExpandTableColumn(AddIdx, "Index", {"n", "Letters", "Idx"}, {"n", "Letters", "Idx"}),
AddMod = Table.AddColumn(Expand, "Mod", each Number.Mod( [Idx], [n] )),
AddIntDiv = Table.AddColumn(AddMod, "IntDiv", each Number.IntegerDivide( [Idx], [n] )),
#"Removed Columns" = Table.RemoveColumns(AddIntDiv,{"n", "Idx"}),
Regroup = Table.Group(#"Removed Columns", {"String"}, {{"All", each _, type table [String=text, Letters=text, Idx=number, Mod=number]}}),
AddPivot = Table.RemoveColumns( Table.AddColumn(Regroup, "Pivot", each Table.Pivot(Table.TransformColumnTypes([All], {{"Mod", type text}}, "en-US"), List.Distinct(Table.TransformColumnTypes([All], {{"Mod", type text}}, "en-US")[Mod]), "Mod", "Letters")), "All"),
AddRemNestCols = Table.RemoveColumns( Table.AddColumn(AddPivot, "RemNestCols", each Table.RemoveColumns( [Pivot], {"String", "IntDiv"})), "Pivot"),
AddToList = Table.AddColumn(AddRemNestCols, "ToList", each [
a = Table.ToColumns([RemNestCols]),
b = List.Transform( a, each Text.Combine( _, ""))
][b]),
Extract = Table.RemoveColumns( Table.TransformColumns(AddToList, {"ToList", each Text.Combine(List.Transform(_, Text.From)), type text}), "RemNestCols"),
Final = Table.RenameColumns( Table.Join( Source, "String", Extract, "String"), {"ToList", "Answer"})
in
Final
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment