Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 29.03.2017, 15:45   #21 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от Viewer Посмотреть сообщение
Да и ладно, я не в претензии. Пусть Ваш вариант будет уникальным
Сударь, Вы невнимательны: у меня представлены решения для ОБЕИХ трактовок задачи.
Vladimir_S вне форума   Ответить с цитированием
Старый 29.03.2017, 15:49   #22 (permalink)
Viewer
Banned
 
Регистрация: 06.03.2017
Сообщений: 788
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Репутация: 5680
По умолчанию

Цитата:
Сообщение от Vladimir_S Посмотреть сообщение
Сударь, Вы невнимательны: у меня представлены решения для ОБЕИХ трактовок задачи.
Я внимателен. Я отвечал по варианту, который мной не реализован.
Viewer вне форума   Ответить с цитированием
Старый 29.03.2017, 16:07   #23 (permalink)
Viewer
Banned
 
Регистрация: 06.03.2017
Сообщений: 788
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Репутация: 5680
По умолчанию

Самое компактное решение на Питоне (аналогично можно и на PHP, Perl, PascalABC.Net и др. ЯСВУ):

rnd.sort(key=lambda x: -1*x if x & 0x1 else x, reverse=True);
Viewer вне форума   Ответить с цитированием
Старый 29.03.2017, 20:36   #24 (permalink)
Viewer
Banned
 
Регистрация: 06.03.2017
Сообщений: 788
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Репутация: 5680
По умолчанию

Еще немного про ЯВУ и ЯСВУ:

Есть такие понятия, как "синтаксический сахар" и "синтаксическая соль".
Применение первого, обеспечивает, по выражению Джек Криншоу:
"В конце концов, люди тоже должны читать программы… Сахарные токены служат в качестве полезных ориентиров, помогающих вам не сбиться с пути…"
Сам термин "syntactic sugar" был введен Peter J. Landin в 1964 г. для описания синтаксиса алголо-подобного языка с использованием лямбда-исчисления.
Пример во многих ЯВУ - дополнение базового безусловного цикла, сначала тремя циклами (пред-, пост-условие, цикл с шагом), а затем и foreach.
Или, к примеру (x := x + y) == (x+=y); Это стандартно для C, но для Pascal - нет. Тем не менее, отечественные разработчики PascalABC.Net, сознательно пошли на значительную переделку Object Pascal, для сближения его с современными технологиями.

Синтаксическая "соль" - дополнительные, технически бесполезные, конструкции в языке программирования, которые правила языка требуют употреблять при выполнении потенциально небезопасных действий.
Пример в Delphi - override.
Или, например - завершение операции точкой с запятой.
Для синтаксического парсера, это не принципиально, но большинство разработчиков к этому привыкли.
Viewer вне форума   Ответить с цитированием
Старый 04.04.2017, 22:44   #25 (permalink)
Viewer
Banned
 
Регистрация: 06.03.2017
Сообщений: 788
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Репутация: 5680
По умолчанию

Еще одно красивое решение:
(предполагает, что все исходные числа - положительные + 0)

PascalABC.Net:

Код:
var
  ar: array of integer;
const
  maxValue = 60; // Max value of rnd
  maxLen = 19; // ar.Length

procedure Inv(ar: array of integer);
begin
  for var i := Low(ar) to High(ar) do
    if not Odd(ar[i]) then ar[i] := -ar[i];
end;

begin
 // Init  
  SetLength(ar, maxLen);
  for var i := Low(ar) to High(ar) do
    ar[i] := random(MaxValue + 1);

  write('rnd= ', ar.Length,' ', ar);
  writeln();
  
  Inv(ar); ar.Sort(ar); Inv(ar);
  
  write('rnd= ', ar.Length,' ', ar);
  writeln();
end.
Viewer вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 11:34.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.