Надумалось тут. Дано: OS >= Win2000. Notepad. В нём N символов знака $. У вас есть память. Ограничения: Вы знаете операции сложения, умножения и скобки, которые в уме вычисляются за 0 секунда, но на считывание 1 символа с экрана у Вас уходит 1 секунда. Пользоваться можно только блокнотом. Использование функций блокнота занимает 0 секунд. Надо: Посчитать колличество символов за минимальное время.
Очевидно заменить все символы не равные $ на пустые строки. Останутся только $
Потом включить WordWarp
Потом подсчитать длину полной строки и количество столбцов, перемножить и добавить длину последней не полной строки если таковая имеется.
Здравствуйте, adontz, Вы писали:
A>Очевидно заменить все символы не равные $ на пустые строки. Останутся только $
Ну всё подметят, если не оговоришь заранее. Я имел в виду, что в тексте блокнота только $.
A>Потом включить WordWarp A>Потом подсчитать длину полной строки и количество столбцов, перемножить и добавить длину последней не полной строки если таковая имеется.
Т.е. выходит, что на подсчет тебе надо ((Строка * Столбец) + символов в послед. строке) секунд.
Можно быстрее. Попробовал на примере.
Здравствуйте, Real 3L0, Вы писали:
R3>Т.е. выходит, что на подсчет тебе надо ((Строка * Столбец) + символов в послед. строке) секунд. R3>Можно быстрее. Попробовал на примере.
Здравствуйте, adontz, Вы писали:
R3>>Т.е. выходит, что на подсчет тебе надо ((Строка * Столбец) + символов в послед. строке) секунд. R3>>Можно быстрее. Попробовал на примере.
A>Почему умножить? Сложить!
+1. Только всё равно можно быстрее. Может я что-то упускаю из виду, но на примере:
Здравствуйте, Real 3L0, Вы писали:
R3>Надумалось тут. R3>Надо: Посчитать колличество символов за минимальное время.
Я чего-то не понял в условии, но можно считать как-то так:
1) заменить $$ на 1
2) заменить 11 на 2
3) заменить 22 на 3
4) заменить 33 на 4
и т. п.
Порлучим сроку вида: 42$, которая соответствует 16 + 4 + 1 = 21 знаку $
Если хочется скорости, то можно увеличить основание системы счисления
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Давайте уточним.
1. Операцией считывания считается проверка того, что в знакоместе (x,y) находится $.
2. Все доллары идут подряд.
Тогда самый тупой метод — идем от знакоместа (1,1) вниз, пока не кончатся долары. Потом по нижнией строчке вправо, пока не кончатся. Потом по предпоследней строчке вправо. Получается, действительно, 9 для указанного примера.
Можно ускорить процесс для больших размеров, используя деление пополам. Получим скорость порядка (2*ln(h) + 4*ln(w))/ln(2).
Здравствуйте, Real 3L0, Вы писали:
R3>Надумалось тут. R3>Дано: OS >= Win2000. Notepad. В нём N символов знака $. У вас есть память. R3>Ограничения: Вы знаете операции сложения, умножения и скобки, которые в уме вычисляются за 0 секунда, но на считывание 1 символа с экрана у Вас уходит 1 секунда. Пользоваться можно только блокнотом. Использование функций блокнота занимает 0 секунд. R3>Надо: Посчитать колличество символов за минимальное время.
ну если арифметические операции и операции с блокнотом занимают 0 времени, то за 0 секунд и считается — вызываем у блокнота "find" $ и на каждом "find next" делаем +1
.
M>1. Операцией считывания считается проверка того, что в знакоместе (x,y) находится $.
Операция считывание = чтение одного символа с экрана, не важно какого. А так, как это блокнот, то чтобы прочитать, какой символ находится в (x,y) надо отсчитать/прочитать x+y символов.
M>2. Все доллары идут подряд.
Здравствуйте, _JoKe_, Вы писали:
_JK> ну если арифметические операции и операции с блокнотом занимают 0 времени, то за 0 секунд и считается — вызываем у блокнота "find" $ и на каждом "find next" делаем +1
Здравствуйте, Real 3L0, Вы писали:
R3>Здравствуйте, Erop, Вы писали:
E>>1) заменить $$ на 1 E>>2) заменить 11 на 2 E>>3) заменить 22 на 3 E>>4) заменить 33 на 4
R3>Хм... Ты пошел ещё дальше, чем я.
Так. А чтобы заменить $$ на 1 не потребуется 2 секунды? Какое тогда преимущество имеет метод перед прямым пересчетом?
Здравствуйте, Cadet, Вы писали:
C>Так. А чтобы заменить $$ на 1 не потребуется 2 секунды? Какое тогда преимущество имеет метод перед прямым пересчетом?
Здравствуйте, Real 3L0, Вы писали:
R3>Надумалось тут. R3>Дано: OS >= Win2000. Notepad. В нём N символов знака $. У вас есть память. R3>Ограничения: Вы знаете операции сложения, умножения и скобки, которые в уме вычисляются за 0 секунда, но на считывание 1 символа с экрана у Вас уходит 1 секунда. Пользоваться можно только блокнотом. Использование функций блокнота занимает 0 секунд. R3>Надо: Посчитать колличество символов за минимальное время.
Можно так.
1) Увеличиваем размер шрифта до максимального
2) Включаем Word Wrap
3) Сужаем окно блокнота до тех пор пока в клиенсткой области по ширине будет умешатся только один символ $
т.е мы получим столбик шириной 1 символ
4) Нажимаем Edit->Goto... и сюда вводим любую букву, не число
Блокнот ругается, и внимание!!! подставляет число == количеству строк, т.е колиство символов в нашем случае
Все.
Здравствуйте, DmitryDV, Вы писали:
DDV>4) Нажимаем Edit->Goto... и сюда вводим любую букву, не число DDV>Блокнот ругается, и внимание!!! подставляет число == количеству строк, т.е колиство символов в нашем случае
У меня не работает. Ругается "Line number out of range." Windows 2000. Что я делаю неправильно?
Здравствуйте, wildwind, Вы писали:
W>Здравствуйте, DmitryDV, Вы писали:
DDV>>4) Нажимаем Edit->Goto... и сюда вводим любую букву, не число DDV>>Блокнот ругается, и внимание!!! подставляет число == количеству строк, т.е колиство символов в нашем случае
W>У меня не работает. Ругается "Line number out of range." Windows 2000. Что я делаю неправильно?
После ругани он подставит в удитбокс диалога число строк. и даже на числе поставит селекшн
Проверял на Windows Advanced Server 2000,
В WindowsXp букву ввести не дает, зато можно ввести заведомо большее число, например int.MaxValue
эффект буддет тотже самый