ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

20.03.2010, 22:48
|
|
Участник форума
Регистрация: 08.01.2010
Сообщений: 155
Провел на форуме: 1008872
Репутация:
22
|
|
Сообщение от emillord
Лови
http://muzorka.ru/index.php?showtopic=16060
спасибо,выручил
|
|
|

21.03.2010, 11:07
|
|
Познающий
Регистрация: 21.12.2009
Сообщений: 97
Провел на форуме: 638958
Репутация:
53
|
|
Парни  с этой задачей у меня конкретный ступор 
Вы можете вспомнить хоть одного своего знакомого до двадцатилетнего возраста, который в детстве не играл в компьютерные игры? Если да, то может быть вы и сами не знакомы с этим развлечением? Впрочем, трудностей при решении этой задачи это создать не должно.
Во многих старых играх с двумерной графикой можно столкнуться с подобной ситуацией. Какой-нибудь герой прыгает по платформам (или островкам), которые висят в воздухе. Он должен перебраться от одного края экрана до другого. При этом при прыжке с одной платформы на соседнюю, у героя уходит |y2-y1| единиц энергии, где y1 и y2 – высоты, на которых расположены эти платформы. Кроме того, у героя есть суперприем, который позволяет перескочить через платформу, но на это затрачивается 3*|y3-y1| единиц энергии. Конечно же, энергию следует расходовать максимально экономно.
Предположим, что вам известны координаты всех платформ в порядке от левого края до правого. Сможете ли вы найти, какое минимальное количество энергии потребуется герою, чтобы добраться с первой платформы до последней?
Входные данные
В первой строке входного файла INPUT.TXT записано количество платформ n (1 ≤ n ≤ 30000). Вторая строка содержит n натуральных чисел, не превосходящих 30000 – высоты, на которых располагаются платформы.
Выходные данные
В выходной файл OUTPUT.TXT запишите единственное число – минимальное количество энергии, которую должен потратить игрок на преодоление платформ (конечно же в предположении, что cheat-коды использовать нельзя).
|
|
|

21.03.2010, 21:24
|
|
Познающий
Регистрация: 28.09.2008
Сообщений: 65
Провел на форуме: 152084
Репутация:
8
|
|
Сообщение от e[X]theta[M]ine
Парни  с этой задачей у меня конкретный ступор 
Вы можете вспомнить хоть одного своего знакомого до двадцатилетнего возраста, который в детстве не играл в компьютерные игры? Если да, то может быть вы и сами не знакомы с этим развлечением? Впрочем, трудностей при решении этой задачи это создать не должно.
Во многих старых играх с двумерной графикой можно столкнуться с подобной ситуацией. Какой-нибудь герой прыгает по платформам (или островкам), которые висят в воздухе. Он должен перебраться от одного края экрана до другого. При этом при прыжке с одной платформы на соседнюю, у героя уходит |y2-y1| единиц энергии, где y1 и y2 – высоты, на которых расположены эти платформы. Кроме того, у героя есть суперприем, который позволяет перескочить через платформу, но на это затрачивается 3*|y3-y1| единиц энергии. Конечно же, энергию следует расходовать максимально экономно.
Предположим, что вам известны координаты всех платформ в порядке от левого края до правого. Сможете ли вы найти, какое минимальное количество энергии потребуется герою, чтобы добраться с первой платформы до последней?
Входные данные
В первой строке входного файла INPUT.TXT записано количество платформ n (1 ≤ n ≤ 30000). Вторая строка содержит n натуральных чисел, не превосходящих 30000 – высоты, на которых располагаются платформы.
Выходные данные
В выходной файл OUTPUT.TXT запишите единственное число – минимальное количество энергии, которую должен потратить игрок на преодоление платформ (конечно же в предположении, что cheat-коды использовать нельзя).
ну по алгоритму примерно скажу :
рассчитываем разность между y2-y1 и y3-y1 , если
y2-y1 > 3*(y3-y1) то выбираем этот путь в инном случае наоборот.
ну и собственно в переменную суммируются результаты всех минимальных выбранных путей.
Последний раз редактировалось n1ghtstalker; 21.03.2010 в 21:27..
|
|
|

21.03.2010, 22:59
|
|
Познающий
Регистрация: 17.02.2010
Сообщений: 45
Провел на форуме: 195184
Репутация:
47
|
|
но на это затрачивается 3*|y3-y1| единиц
Если высоты будут равны (y3 = y1), то затрачивается значит 0 энергии? Если да, то n1ghtstalker, Ваш алгоритм не работает, в этом случае надо динамикой решать
Последний раз редактировалось Soherox; 21.03.2010 в 23:02..
|
|
|

21.03.2010, 23:53
|
|
Познающий
Регистрация: 28.09.2008
Сообщений: 65
Провел на форуме: 152084
Репутация:
8
|
|
Сообщение от Soherox
Если высоты будут равны (y3 = y1), то затрачивается значит 0 энергии? Если да, то n1ghtstalker, Ваш алгоритм не работает, в этом случае надо динамикой решать
дело всё в том что в условии задачи оговорено только перемещение по y. но никак не по x.
если бы y- было осью абцисс , то в любом случае ++ , так что мой алгоритм относительно не верен.
я лишь следую условию задачи.
|
|
|

21.03.2010, 23:59
|
|
Участник форума
Регистрация: 18.07.2009
Сообщений: 278
Провел на форуме: 3055344
Репутация:
259
|
|
А если подумать... ведь действительно если высоты у3 и у1 равны... то ведь тогда энергии 0 получается?!?!?? но так n1ghtstalker относительно прав...вычисляем разницу и сравниваем
|
|
|

22.03.2010, 00:05
|
|
Познающий
Регистрация: 17.02.2010
Сообщений: 45
Провел на форуме: 195184
Репутация:
47
|
|
Соглашусь с Вами друзья, ждем подробностей от автора, но если что, вот код по алгоритму n1ghtstalker
Код:
{$APPTYPE CONSOLE}
const
ch = 30000;
var
i, j, n, rez: integer;
a: array [1..ch] of integer;
begin
reset(input, 'input.txt');
rewrite(output, 'output.txt');
readln(n);
rez:=0;
for i:=1 to n do read(a[i]);
i:=1;
while i<n do
begin
if n - i >= 3 then
begin
if abs(a[i]-a[i+1])+abs(a[i+1]-a[i+2]) < 3*abs(a[i+2] - a[i]) then
begin
rez:=rez + abs(a[i]-a[i+1]);
inc(i);
end
else
begin
rez:=rez + 3*abs(a[i+2] - a[i]);
inc(i, 2);
end;
end
else
begin
rez:=rez + abs(a[i]-a[i+1]);
inc(i);
end;
end;
writeln(rez);
close(input);
close(output);
end.
Если все же y3 = y1, и энергия в этом случае = 0, то код будет валится
P.S. Код писался на Delphi, если нужно на паскаль, то удаляем {$APPTYPE CONSOLE}, и вместо
Код:
reset(input, 'input.txt');
rewrite(output, 'output.txt');
это
Код:
assign(input, 'input.txt');
assign(output, 'output.txt');
reset(input);
rewrite(output);
Последний раз редактировалось Soherox; 22.03.2010 в 00:11..
|
|
|

22.03.2010, 16:33
|
|
Новичок
Регистрация: 03.05.2009
Сообщений: 22
Провел на форуме: 38103
Репутация:
0
|
|
подскажите плиз как нати рабочую прокси.
есть код для проверки переменная с переберает по списку если рабочая прокся то идем дальше а если нет как вернуть цикл чтоб начил дальше переберать...?
Код:
{Начало проверки прокси}
begin
// грузим фаил с проксями
ProxyList:=tstringlist.Create;
ProxyList.LoadFromFile('Proxy.txt');
params:=TStringList.Create;
Presponseres:=TStringList.Create;
// получаем проксю делим на ip и port ИКАК СЮДА ВЕРНУТЬСЯ
Proxy:=ProxyList.Strings[0];
ip:=getip(Proxy);
por:=getport(Proxy);
port:=StrToInt(por);
// тут и так понятно
IdHTTP1.ProxyParams.ProxyServer:=ip;
IdHTTP1.ProxyParams.ProxyPort:=port;
// начинаем проверку
try
IdHTTP1.Get('http://ya.ru');
except
// вот тут если прокся мертвая удаляем эту строку , и как вернуться выше
end;
end;
{конец проверки прокси}
|
|
|

22.03.2010, 17:44
|
|
Участник форума
Регистрация: 05.06.2009
Сообщений: 127
Провел на форуме: 1313455
Репутация:
249
|
|
Код:
var
intA:integer;
...
{Начало проверки прокси}
begin
// грузим фаил с проксями
ProxyList:=tstringlist.Create;
ProxyList.LoadFromFile('Proxy.txt');
params:=TStringList.Create;
Presponseres:=TStringList.Create;
// получаем проксю делим на ip и port ИКАК СЮДА ВЕРНУТЬСЯ
for intA:=0 to ProxyList.Count - 1 do begin
Proxy:=ProxyList.Strings[intA];
ip:=getip(Proxy);
por:=getport(Proxy);
port:=StrToInt(por);
// тут и так понятно
IdHTTP1.ProxyParams.ProxyServer:=ip;
IdHTTP1.ProxyParams.ProxyPort:=port;
// начинаем проверку
try
IdHTTP1.Get('http://ya.ru');
except
// вот тут если прокся мертвая удаляем эту строку , и как вернуться выше
end;
end;
end;
{конец проверки прокси}
|
|
|

23.03.2010, 12:40
|
|
Участник форума
Регистрация: 14.01.2009
Сообщений: 194
Провел на форуме: 798217
Репутация:
44
|
|
Здравствуйте.
В общем только учу Delphi.
Возникли несколько проблем.
1)Посоветуйте хороший понятный учебник с нуля по Делфи
2)Короче нужна программа которая при запуске проверяет в файле наличия строк и если ничего не находит то записывает дынные,которые заданны.
Последний раз редактировалось ZnikiR; 23.03.2010 в 13:01..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|