Текущий архив: 2006.04.30;
Скачать: CL | DM;
Вниз
Головоломки в редакторе кода Найти похожие ветки
← →
Наиль © (2006-03-27 01:13) [0]Далее по тексту C+,S+,A+ читать как Ctrl+,Shift+,Alt+, соответственно
Если исключить время на обдумывание задачи, то скорость написания программы пропорциональна числу нажатий на клавиши. Delphi позволяет набирать текст очень быстро, если знать такие сочетания как С+X, C+C, C+V, C+Space, C+J, C+S+R, С+S+P, C+R. Иногда приходится решать настоящие головоломки, как за минимальное число нажатий изменить максимум кода. Простой пример:
Было:
Pole1:=’a’;
Pole2:=1;
Pole3:=nil;
Курсор стоит перед Pole1
Должно стать:
Obj.Pole1:=’a’;
Obj.Pole2:=1;
Obj.Pole3:=nil;
Мои действия:
O, b, j, ., Влево, C+S+A+Влево, C+C, Вниз, C+V, С+V
Если сочетание считать за одно нажатие, то вышло 10 нажатий.
А сколько нажатий ушло бы у Вас на такую задачу.
Уверен, что и вас найдётся пара интересных задач.
← →
Наиль © (2006-03-27 01:14) [1]Задача из реальной жизни.
Имеется код:Procedure TObj.First(a,b,c:Integer);
Var
…
Begin
…
Procedure TObj.Second(b,c:String);
Var
…
Begin
…
Procedure TObj.Third(a,b:Pointer);
Var
…
Begin
…
Должно стать:Procedure TObj.First(a,b,c:Integer);
Var
…
Begin
Log(‘Procedure TObj.First(a,b,c:Integer);’);
…
Procedure TObj.Second(b,c:String);
Begin
Log(‘Procedure TObj.Second(b,c:String);’);
…
Procedure TObj.Third(a,b:Pointer);
Var
…
Begin
Log(‘Procedure TObj.Third(a,b:Pointer);’);
…
Курсор находится в начале файла. Пусть в модуле 10 процедур. Сколько нажатий вам потребуется для преобразования кода. Нажатие на клавиши символов (буквы, знаки препинания и т.д.) не считать.
← →
Andy BitOff © (2006-03-27 01:26) [2]Не серьёзно. Я активно пользуюсь мышкой и для решения первой задачи надо набрать только obj. и с помощью CTRL перетащить на две другие строки.
← →
Zeqfreed © (2006-03-27 01:46) [3]Наиль © (27.03.06 01:13)
Могу предложить альтернативный вариант :)
*, Стрелка вниз, Стрелка Влево, *, Стрелка Вниз, Стрелка Влево, *, Shift + Стрелка Вверх два раза и Стрелка Влево, Ctrl + R, *, Tab, Obj., Alt + A два раза.
← →
Юрий Зотов © (2006-03-27 03:12) [4]> Наиль © (27.03.06 01:13)
После приведенных Вами 10 нажатий у меня получилось:
Obj.Pole1:=’a’;
ObjObjPole2:=1;
Pole3:=nil;
То есть:
а). первое Влево явно ошибочно;
б). перед последним C+V нужно еще Вниз и Home.
Итого Вашим способом получается не 10, а 12 нажатий. А вот решение той же задачки за 10 нажатий:
C+S+R, O, b, j, ., Вниз, Home, C+S+R, C+S+P, C+S+P
По сравнению с Вашим этот способ проигрывает 2 нажатия на первой строке, но затем выигрывает по 2 нажатия на каждой из остальных, сколько бы их ни было.
← →
Ketmar © (2006-03-27 03:15) [5]макроязык в редакторе фрицы украли?
← →
Юрий Зотов © (2006-03-27 03:17) [6]> Ketmar © (27.03.06 03:15) [5]
Он и использован.
← →
Ketmar © (2006-03-27 03:22) [7]>Юрий Зотов © (27.03.06 03:17) [6]
да я не вам. %-) а "влево-впврао" -- это далеко не макроязык...
← →
Prohodil Mimo © (2006-04-09 16:55) [8]Юрий Зотов © (27.03.06 3:12) [4]
После приведенных Вами 10 нажатий у меня получилось:
Obj.Pole1:=’a’;
ObjObjPole2:=1;
Pole3:=nil;
То есть:
а). первое Влево явно ошибочно;
б). перед последним C+V нужно еще Вниз и Home.
нет, там всё правильно. У Вас скорее всего Alt не нажался.
Страницы: 1 вся ветка
Текущий архив: 2006.04.30;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.008 c