val l
= List
("A",
"A",
"C",
"C",
"B",
"C")
def appendCount
(li
: List
[String
]): List
[String
] = { val counts
= l.
foldLeft(Map
[String, Int
]())((acc, e
) => acc +
(e -
> (acc.
getOrElse(e, -
1) +
1))) val (appendedList,
_) = l.
foldRight(List
[String
](), counts
){ case (e,
(li, m
)) => (s"$e${m(e)}" :: li, m + (e -> (m(e) - 1)))
}
appendedList
}
println(appendCount(l))
}
b2JqZWN0IE1haW4gZXh0ZW5kcyBBcHAgewoKICB2YWwgbCA9IExpc3QoIkEiLCAiQSIsICJDIiwgIkMiLCAiQiIsICJDIikKCiAgZGVmIGFwcGVuZENvdW50KGxpOiBMaXN0W1N0cmluZ10pOiBMaXN0W1N0cmluZ10gPSB7CiAgICB2YWwgY291bnRzID0gbC5mb2xkTGVmdChNYXBbU3RyaW5nLCBJbnRdKCkpKChhY2MsIGUpID0+IGFjYyArIChlIC0+IChhY2MuZ2V0T3JFbHNlKGUsIC0xKSArIDEpKSkKICAgIHZhbCAoYXBwZW5kZWRMaXN0LCBfKSA9IGwuZm9sZFJpZ2h0KExpc3RbU3RyaW5nXSgpLCBjb3VudHMpeyBjYXNlIChlLCAobGksIG0pKSA9PgogICAgICAocyIkZSR7bShlKX0iIDo6IGxpLCBtICsgKGUgLT4gKG0oZSkgLSAxKSkpCiAgICB9CiAgICBhcHBlbmRlZExpc3QKICB9CgogIHByaW50bG4oYXBwZW5kQ291bnQobCkpCn0=