Skip to content

Instantly share code, notes, and snippets.

@bjulius
Created June 14, 2025 06:48
Show Gist options
  • Save bjulius/12071982807d7add3e60ea186d76aee2 to your computer and use it in GitHub Desktop.
Save bjulius/12071982807d7add3e60ea186d76aee2 to your computer and use it in GitHub Desktop.
Gemini Pro 2.5 0506 Solution to OMID Challenge 210
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
ChangedType = Table.TransformColumnTypes(Source, {{"Text", type text}}),
AddedIndex = Table.AddIndexColumn(ChangedType, "OriginalIndex", 0, 1),
AddedRevisedText = Table.AddColumn(AddedIndex, "Revised Text", each [Text]),
SolutionIterations = List.Generate(
() => [CurrentTable = AddedRevisedText, Pass = 0],
each
let
AllChars = List.Combine(List.Transform([CurrentTable][Revised Text], each Text.ToList(_))),
Counts = Table.Group(Table.FromList(AllChars, null, {"Char"}), {"Char"}, {{"Count", Table.RowCount, type number}}),
MaxCount = if Table.IsEmpty(Counts) then 0 else List.Max(Counts[Count])
in
MaxCount > 1 and [Pass] < 20,
each
let
CurrentTable = [CurrentTable],
AllChars = List.Combine(List.Transform(CurrentTable[Revised Text], each Text.ToList(_))),
Counts = Table.Group(Table.FromList(AllChars, null, {"Char"}), {"Char"}, {{"Count", Table.RowCount, type number}}),
DuplicatesList = List.Sort(Table.SelectRows(Counts, each [Count] > 1)[Char]),
CharToFix = DuplicatesList{0},
RowsWithChar = Table.SelectRows(CurrentTable, each Text.Contains([Revised Text], CharToFix)),
LastRowIndex = List.Max(RowsWithChar[OriginalIndex]),
TextToChange = Table.SelectRows(CurrentTable, each [OriginalIndex] = LastRowIndex){0}[Revised Text],
Position = Text.PositionOf(TextToChange, CharToFix),
NewText = Text.ReplaceRange(TextToChange, Position, 1, ""),
UpdatedListOfRows = Table.TransformRows(
CurrentTable,
(row) =>
if row[OriginalIndex] = LastRowIndex then
Record.TransformFields(row, {{"Revised Text", each NewText}})
else
row
),
Result = Table.FromRecords(UpdatedListOfRows, Value.Type(CurrentTable))
in
[CurrentTable = Result, Pass = [Pass] + 1],
each [CurrentTable]
),
FinalTable = if List.IsEmpty(SolutionIterations) then AddedRevisedText else List.Last(SolutionIterations),
AddedRemovedChars = Table.AddColumn(
FinalTable,
"Removed Chars",
each
let
original = [Text],
revised = [Revised Text]
in
if original = revised then null else List.Difference(Text.ToList(original), Text.ToList(revised)){0}?,
type text
),
RemovedIndexColumn = Table.RemoveColumns(AddedRemovedChars, {"OriginalIndex"}),
ReorderedColumns = Table.ReorderColumns(RemovedIndexColumn, {"Text", "Revised Text", "Removed Chars"})
in
ReorderedColumns
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment