Разминка для мозгов
От: Ziaw Россия  
Дата: 20.05.10 17:56
Оценка:
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 байт надо убрать все пробелы и перейти на односимвольные переменные.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.