hardcase навел меня на некий
конкурс
По идее nemerle неплохой язык для таких задач. Но у меня решение получается в 240 символов. Хотя даже пхп там догоняют до 220. А кто-то и 140 выдал.
Вобщем если кто-то сможет улучшить — велкам, я уже устал
Производительность побоку, входные данные там обещают несколько десятков городов, это решение выдерживает несколько сотен.
def inp = [
"Калининград", "Вологда", "Далматово", "Дмитров", "Архангельск", "Владивосток", "Краков", "Волгоград",
];
def test(r, x)
{
r.Filter(inp.Map(s => ToLower(s[0])).Contains(_)).Last() == ToLower(x[0])
}
def reorder(valid, head, tail)
{
| (_, [], []) => valid.Rev()
| ([], _, x :: tail) =>
match (reorder([x], head, tail))
{
| [] => reorder([], x :: head, tail)
| x => x
}
| (r :: _, head, x :: tail) when test(r, x) =>
reorder(x :: valid, [], head + tail)
| (_, _, x :: tail) => reorder(valid, x :: head, tail)
| _ =>
[]
}
def right = reorder([], [], inp);
match (right)
{
| [] => WriteLine("err");
| _ => WriteLine($"$right");
}
Естественно чтобы получить 240 байт надо убрать все пробелы и перейти на односимвольные переменные.