Решение задачи Reversort (Google Code Jam 2021)


Условия задачи (англ.)

program reversort;
  {mode objfpc}{$H+}
uses
  SysUtils, Types;
var
  T, N, k: byte; nums: TStringDynArray; line: string; L: array of Byte;
  i, j: Byte; cost: integer;

function MinPos(start, stop: Byte): Byte;
const
  StartMin = 255;
var
  i, min: Byte;
begin
  min:=StartMin;
  for i:=start to stop do
    if L[i] < min then
    begin
      min:=L[i];
      MinPos:=i;
    end;
end;

function Reverse(first, last: Byte): Byte;
var
  i, n: Byte;
begin
  Reverse:=last - first + 1;
  i:=0;
  while (last-i) > (first+i) do
  begin
    n:=L[last - i];
    L[last - i]:=L[first + i];
    L[first + i]:=n;
    Inc(i);
  end;
end;

begin
  Readln(T);
  for k:=1 to T do
  begin
    Readln(N);
    Readln(line);
    nums:=line.Split([' ']);
    SetLength(L, N);
    for i:=Low(L) to High(L) do
      L[i]:=StrToInt(nums[i]);
    cost:=0;
    for i:=Low(L) to High(L) - 1 do
    begin
      j:=MinPos(i, High(L));
      Inc(cost, Reverse(i, j));
    end;
    Writeln('Case #', k, ': ', cost);
  end;
end.
Рубрика: программирование | Метки: , | Оставить комментарий

Удаление всех правил условного форматирования листа


Sub УдалитьУсловноеФорматирование(Лист As Worksheet)
  Лист.Cells.FormatConditions.Delete
End Sub
Рубрика: программирование | Метки: , | Оставить комментарий

Имитация нажатия клавиш PgUp, PgDn


Если на клавиатуре ноутбука (например, ASUS ROG Zephyrus G14) нет  клавиш PgUp, PgDn, можно имитировать их нажатие при помощи сочетаний клавиш Ctrl+↑, Ctrl+↓ и сценария AutoHotkey.

^Down::Send {PgDn}
^Up::Send {PgUp}
Рубрика: scripting | Метки: | Оставить комментарий

Принудительное завершение работы Excel


Эту команду можно ввести в окне «Пуск-Выполнить…» или сохранить в пакетном файле KillExcel.cmd, который будет запускаться при необходимости. При этом будет завершена работа всех экземпляров Excel.

taskkill /f /im excel.exe
Рубрика: scripting | Метки: , | Оставить комментарий

Начало работы с MSBuild


Автор: Чак Ингленд.
Оригинал статьи: Getting Started with MSBuild.

Некоторые клиенты спрашивали меня о системе MSBuild и о том, как изучить и применять её. Я присоединился к команде MSBuild полтора года назад. В то время я даже не знал, что такое MSBuild, и много лет пользовался Visual Studio. Эта статья поможет вам понять, что такое система MSBuild, как она связана с Visual  Studio, и почему каждый разработчик должен знать, как её использовать. Читать далее

Рубрика: перевод | Метки: , | Оставить комментарий

Замена русских/латинских букв-близнецов


Некоторые русские и латинские буквы (А, Е, К, М, О, С, Т) для человека выглядят одинаково, но с точки зрения компьютера им соответствуют разные коды. Иногда их требуется привести к одному языку/виду, например, перед сравнением или поиском. Читать далее

Рубрика: программирование | Метки: , | Оставить комментарий

Проверка регулярных выражений VBScript


Для проверки регулярных выражений, обрабатываемых объектом RegExp из библиотеки vbscript.dll (Microsoft VBScript Regular Expressions) предлагаю воспользоваться файлом RegexTester.doc. Читать далее

Рубрика: программирование | Метки: , , | Оставить комментарий

Выделение даты из строки


'требуется ссылка на vbscript.dll (Microsoft VBScript Regular Expressions)
Private Function DocDate(Text As String) As String
  DocDate = ""
  Dim datex As New RegExp
  datex.Pattern = "(\d{2}\.\d{2}\.\d{4})" 'ДД.ММ.ГГГГ
  Dim mc As MatchCollection, m As Match
  Set mc = datex.Execute(Text)
  For Each m In mc
    DocDate = m.Value
  Next m
End Function
Рубрика: программирование | Метки: , | Оставить комментарий

Модули документа


Автор: Mathieu Guindon
Источник: Document Modules

Когда вы открыли для себя редактор Visual Basic, увидели проект VBA в окне Project Explorer, и впервые встретили ThisWorkbook and Sheet1, модули документа стали вселенной: первые шаги в мире VBA наверняка были кодом для ThisWorkbook или Sheet1 – модули документа открывают ворота в страну VBA. Читать далее

Рубрика: перевод | Метки: , | Оставить комментарий

Удаление пробельных символов в начале и в конце строки


'Удаляет пробельные символы (пробел, перевод строки, табуляция)
' в начале и конце строки
'ссылки: vbscript.dll (Microsoft VBScript Regular Expressions)
Function Обрезать(Текст) As String
  Обрезать = Текст
  If Len(Обрезать) = 0 Then Exit Function
  Dim leadex As New RegExp
  leadex.Pattern = "^\s+" 'пробельные символы в начале строки
  Обрезать = leadex.Replace(Обрезать, "")
  Dim trailex As New RegExp
  trailex.Pattern = "\s+$" 'пробельные символы в конце строки
  Обрезать = trailex.Replace(Обрезать, "")
End Function
Рубрика: программирование | Метки: , | Оставить комментарий