Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.16;
Скачать: CL | DM;

Вниз

Курс молодого бойца (читать - программиста)   Найти похожие ветки 

 
Игорь Шевченко ©   (2004-12-26 00:55) [40]

Kerk ©   (25.12.04 12:07) [19]


> Нет, Игорь. Он должен это уметь.. И иконку в трей запуздырить
> и лоток выдвинуть.. задачи разные бывают.


Роман, а смысл долга уметь это делать ? Задач, которые требуют таких вот умений, очень ограниченное количество и они уже давным-давно решены, судя по обилию иконок в трее и "выдвигателей лотков CD-ROM" на разного рода download-сайтах. Я, к стыду своему, не знаю, кому может в здравом уме и твердой памяти придти в голову пользоваться программой, выдвигающей этот злополучный лоток, когда его можно выдвинуть кнопкой на самом устройстве. CD-ROM"ов без кнопок я за свою не очень короткую жизнь еще не видел, вряд ли чего-то пропустил.

С уважением,


 
default ©   (2004-12-26 00:56) [41]

OneFragLeft ©   (26.12.04 00:49) [37]
туда же
может правда формулировка чуть другая в оригинале
"чем больше знаешь тем больше понимаешь что ничего не знаешь"


 
Хакер ©   (2004-12-26 00:57) [42]

Игорь Шевченко ©   (26.12.04 0:55) [40]
ага, я ещё НЕ разу никогда не юзал спец-прогу для видвигания лотка :)))


 
OneFragLeft ©   (2004-12-26 01:03) [43]

Вот тут возник ещё один вопрос:
А каких программ ещё нет? Кому что нужно?
Хочу начать делать то, что никто ещё не делал.
Чтобы возникали передо мной задачи, готовые
ответы на которые, нельзя найти.
Подкиньте идей. А то вроде есть программы для всего,
но программисты что-то ещё делают:)


 
default ©   (2004-12-26 01:06) [44]

OneFragLeft ©   (26.12.04 01:03) [43]
попробуй для начала сделать [1]
несомненно неплохая алгоритмическая задача


 
OneFragLeft ©   (2004-12-26 01:08) [45]

если честно, то я не понял что значит:
Основная проблема - сделать это за время O(N) с затратами памяти меньшими, чем O(N).

Поясните, пожалуйста.


 
default ©   (2004-12-26 01:13) [46]

OneFragLeft ©   (26.12.04 01:08) [45]
линейный рост времени работы алгоритма как функции её числа
то есть к примеру на два элемента тратиться 4 секунды, на три элемента будет тратиться 6 секунд, на четыре 8 и тд
а используемая дополнительная память должна не зависеть от числа элементов либо расти по порядку медленне чем N
например, LogN*N


 
OneFragLeft ©   (2004-12-26 01:16) [47]

Т.е. я могу создать ещё один такой-же массив?


 
default ©   (2004-12-26 01:18) [48]

OneFragLeft ©   (26.12.04 01:16) [47]
тогда рост памяти будет линейно зависеть от числа элементов что не допускает условие
"с затратами памяти меньшими, чем
O(N)."


 
OneFragLeft ©   (2004-12-26 01:20) [49]

ага, ясно.
Т.е. могу использовать только одну-две переменные?


 
default ©   (2004-12-26 01:24) [50]

OneFragLeft ©   (26.12.04 01:20) [49]
да, какое-то ограниченное количество памяти либо память в зависимости от числа элементов массива должна расти медленне чем растёт линейная функция


 
OneFragLeft ©   (2004-12-26 02:43) [51]

Вот так должно быть?


procedure ReOrder;
var B,i,j,n:integer;
   S:Array[0..9] of Integer;
begin
i:=1;//счётчик
n:=10;//кол-во элементов в массиве (просто не знаю как это программно посчитать)
//ну а дальше ясно
While i<round(n/2) do
begin
B:=S[i];
For j:=i to n-i do
begin
 S[j]:=S[j+1];
end;
S[n-i]:=B;
i:=i+1;
end;


Знаний маловато, поэтому не смог сделать чтобы в процедуру посылался массив.
Проверил на работоспособность с чётным и нечётным количеством элементов.
Вроде работает...


 
default ©   (2004-12-26 02:58) [52]

OneFragLeft ©   (26.12.04 02:43) [51]
тут заведомо нелинейное время
лучше тогда не трогай её
на счёт решения - я сам его не знаю пока)


 
OneFragLeft ©   (2004-12-26 03:14) [53]

А как узнать, существует ли оно вообще.
Может и нет решения.


 
MBo ©   (2004-12-26 07:07) [54]

>OneFragLeft ©   (26.12.04 03:14) [53]
Решение существует.
Ограничения на размер памяти и время связаны вот с чем -
1. несложно создать второй такой же массив и скопировать нужные элементы на нужные места - т.е. это путь с большими затратами памяти.
2. Возможно многократно сложным образом переставлять элементы в исходном массиве, пока не придем к нужному порядку - это требует существенно более, чем n^2 операций - т.е. путь с большими затратами памяти.

Так вот задача состоит в том, чтобы использовать только несколько дополнительных переменных, и минимизировать число операций (перестановок). Задача любопытна, в частности, тем, что, поразмыслив, находишь решение для конкретного N, но оно может не работать для других размеров массива.


 
Igorek ©   (2004-12-26 09:49) [55]

OneFragLeft ©   (25.12.04 2:07)

>все типичные задачи,
>которые должен уметь выполнять начинающий
> программист, осваивающий Delphi

- читать хорошие книги о Delphi
- пользоваться F1, MSDN, DelphiWorld, Google, VCL sources
- пробовать все на практике
- хорошенько поискать ответ на вопрос прежде чем постить на форумы

Все это должен уметь не только начинающий, но начинающему этого пока достаточно.

Игорь Шевченко ©   (25.12.04 2:16) [3]
Ну ты меня успокоил. :-)

MBo ©   (26.12.04 7:07) [54]
Я вот не понял как формируется новый массив:
- последнее, предпоследнее слева от него, предпредпоследнее справа ...
или
- первое слева, второе справа, третье слева за первым, четвертое - справа за вторым
?


 
MBo ©   (2004-12-26 10:04) [56]

>как формируется новый массив:
четные элементы (считая с нуля)  - в первой половине, нечетные - во второй в обратном порядке, т.е. второй твой способ.


 
default ©   (2004-12-26 13:12) [57]

MBo ©   (26.12.04 10:04) [56]
можно подсказочку:
затраты времени O(1) или всё-таки зависят от числа элементов?


 
Igorek ©   (2004-12-26 15:13) [58]


> сделать это за время O(N)


 
default ©   (2004-12-26 16:26) [59]

Igorek ©   (26.12.04 15:13) [58]
я имел ввиду память
но из "Так вот задача состоит в том, чтобы использовать только несколько дополнительных переменных, и минимизировать число операций (перестановок)."
ясо что затраты памяти O(1), а не например O(LogN)


 
GrayFace ©   (2004-12-28 11:59) [60]

default ©   (26.12.04 0:45) [36]
кстати довольно характерная черта людей - когда они что-то неплохо знают считать это за сомо собой разумеешееся и требовать того же от других
всё же лучше исходить из объективности

Вообще-то он прав, просто выразился вначале неверно. А вот это верно: Уметь писать программы - это часть компьютерной грамотности.

MBo ©   (26.12.04 7:07) [54]
Так вот задача состоит в том, чтобы использовать только несколько дополнительных переменных, и минимизировать число операций (перестановок).

В принципе, можно создавать очень большой массив, которого будет заведомо достаточно - условию это не противоречит.

Igorek ©   (26.12.04 9:49) [55]
- хорошенько поискать ответ на вопрос прежде чем постить на форумы

А я с этим не согласен. ИМХО, достаточно искать в F1 и MSDN, а уж Google и т.п. - это после форумов. Если уж искать, то искать на форумах. А если вопрос не стандартный, то и пытаться искать не стоит.

default ©   (26.12.04 16:26) [59]
я имел ввиду память
но из "Так вот задача состоит в том, чтобы использовать только несколько дополнительных переменных, и минимизировать число операций (перестановок)."
ясо что затраты памяти O(1), а не например O(LogN)

Видимо, решения с O(logN) и т.п. просто не получится выдумать.



Страницы: 1 2 вся ветка

Текущий архив: 2005.01.16;
Скачать: CL | DM;

Наверх




Память: 0.59 MB
Время: 0.062 c
9-1096010438
Warchief
2004-09-24 11:20
2005.01.16
Произвольные текстурные координаты кадра в PD3


8-1097268850
Вадим
2004-10-09 00:54
2005.01.16
Потерянные буфера


1-1103581432
GanibalLector
2004-12-21 01:23
2005.01.16
PCHAR


4-1101642831
Ralf
2004-11-28 14:53
2005.01.16
Командная строка


4-1101400188
Ego
2004-11-25 19:29
2005.01.16
Комментарий к файлу