Combine some list element pairs based on a condition?

You could use Enum.reduce/3 roughly like this:

input
|> Enum.reduce([], fn
  s, [] -> [s]
  s, [h|t] -> case Integer.parse(s) do
    {_, ""} -> [h <> s|t]
    _ -> [s, h|t]
  end
end)
|> Enum.reverse