Задача Иосифа Флавия (динамический вариант)
|
|
Seqular | Дата: Суббота, 20.10.2007, 11:13 | Сообщение # 1 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Паха считает, что переменные после каждого счета (т.е. выбывшие) нужно уничтожать. Я с этим не согласен. Зачем? Можно метить их, как выбывшие и все!
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Pavel | Дата: Воскресенье, 21.10.2007, 14:25 | Сообщение # 2 |
Приближенный
Группа: Модераторы
Сообщений: 210
Статус: Offline
| Quote (Seqular) Паха считает, что переменные после каждого счета (т.е. выбывшие) нужно уничтожать. Я с этим не согласен. Зачем? Можно метить их, как выбывшие и все! Хм. Тогда вообще зачем держать лишнюю информацию? Аля типа масло с маслом. Освободил ссылку и проходов становиться заметно меньше. Конечно, для Pentium 4 и далее это ерунда пару лишних тысяч раз (образно говоря) проходов сделать. Мы же должны делать правильные задачи. Вот из-за нежелания разобраться и получаются такие системы как Windows. Я не понимаю несогласие Дмитрия. Лишняя информация - залог нездравого программирования! Ты же когда прогу пишешь, удаляешь, допустим неиспользуемые счетчики. Так и тут. И в Дэлфи уничтожаешь отработавшие объекты.
|
|
| |
Pavel | Дата: Воскресенье, 21.10.2007, 14:28 | Сообщение # 3 |
Приближенный
Группа: Модераторы
Сообщений: 210
Статус: Offline
| Quote (Seqular) переменные после каждого счета Хочется добавить: именно в решении с ссылочными типами данных. В линейном статическом массиве этого делать не надо. Да и собственно, это никак не получиться. Будет игра только со счетчиками.
|
|
| |
Seqular | Дата: Воскресенье, 21.10.2007, 15:10 | Сообщение # 4 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Quote (Pahan) Лишняя информация - залог нездравого программирования Вот это уже конкретная заява. Кто-то говорил, что иформация лишняя? В задаче требовалось найти, каким по счету будет последний элемент. Нигде не сказано, что другие элементы не нужны. Когда в считалочку играешь, ты же не выгоняешь из круга всех.. типа кто остался тот и выйграл. Нет! Считалочка - это лишь способ найти последнего... А потом уже начинается игра. Не с проста же раньше в задачах писали, что элементы нужно уничтожать. Суть-то не в том, чтобы уничтожить элемент! Это мы проходили давно! Суть в том, что нужно найти и перескакивать через выбывшие. СМ условие.
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Seqular | Дата: Воскресенье, 21.10.2007, 15:11 | Сообщение # 5 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Quote (Seqular) Ты же когда прогу пишешь, удаляешь, допустим неиспользуемые счетчики Это так, если продукт конечный. Что создал, то и удалю. А это - не программа. Это демонстрация алгоритма перескакивания через выбывшие элементы!
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Pavel | Дата: Воскресенье, 21.10.2007, 21:11 | Сообщение # 6 |
Приближенный
Группа: Модераторы
Сообщений: 210
Статус: Offline
| Quote (Seqular) Это демонстрация алгоритма перескакивания через выбывшие элементы! Вот вот Дим, так оно и есть: демонстрация алгоритма к задаче, где сказано, что надо найти последнего чела по считалочке. А вот как это делается - это дело другое. Мы обсуждаем уже техническую сторону решения задачи. И одно из правил это не использовать того, что не нужно. Т.е. оптимизация программного кода.
|
|
| |
Seqular | Дата: Воскресенье, 21.10.2007, 21:20 | Сообщение # 7 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Вот как раз не используем то, что не нужно - удаление выбывших... Условием задачи не оговаривается их удаление!
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Pavel | Дата: Воскресенье, 21.10.2007, 21:29 | Сообщение # 8 |
Приближенный
Группа: Модераторы
Сообщений: 210
Статус: Offline
| Кажеца этот спор зайдет в тупик. Надо найти чела, который сам решит задачу при помощи ссылок и тоже поспорит с нами. А вообще, если используешь третье поле, то соотв. добавляется еще одна не нужная (в моем решении не нужная) переменная i. Procedure Schet(s: Byte); Begin t := top; For o := 1 to n - 1 do Begin i := 1; <------ ВОТ ОНА! Repeat If (t^.off = False) then inc(i); t := t^.lnk; Until (i = k) and (t^.off = False); Writeln('Вычеркнули ',t^.inf); t^.off := True; End; End; Следоват. код удлиняется, программа усложняется, память засоряется!
|
|
| |
Seqular | Дата: Воскресенье, 21.10.2007, 21:47 | Сообщение # 9 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Иначе задачу не решить, если не удалять! А об удалении речи не шло! Это самопроизвол! И вопрос тут не в оптимальности а в применении алгоритма! Что мы проходили - удаление.. А перескакивания еще не было. Учитывая, что задачи решаем в образовательном варианте, нужно учиться делать и такое. По крайней мере решать четко поставленную задачу. Номер найден? Задача решена... А удалять ненужные данные.... А с чего ты решил, что данные ненужные? То, что они в условии не пригодились - еще не дает права ими так распоряжаться
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Pavel | Дата: Воскресенье, 21.10.2007, 21:49 | Сообщение # 10 |
Приближенный
Группа: Модераторы
Сообщений: 210
Статус: Offline
| Ну да ладно. Мне уже как-то не по себе стало. Мы уже переходим к придиркам. Мне тоже в своем решении не нравитсься кое-что. А именно нахождения адреса первого элемента списка. Криво сделано, но не получилось сделать по другому. И так остался вопрос: надо ли удалять выбывших из списка в решении с использованием ссылок? ЗЫ: имхо Dispose или FreeMem
|
|
| |
Seqular | Дата: Воскресенье, 21.10.2007, 21:55 | Сообщение # 11 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| Решение такое: Если удалять ТРЕБУЕТСЯ - то обязательно удалять.. Если НЕ ТРЕБУЕТСЯ - то на усмотрение кодера. Я вот решил оставить, на всякий случай. Или ты думал, что я не умею удалять динамические переменные?
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Pavel | Дата: Воскресенье, 21.10.2007, 21:56 | Сообщение # 12 |
Приближенный
Группа: Модераторы
Сообщений: 210
Статус: Offline
| Quote (Pahan) Иначе задачу не решить, если не удалять! А об удалении речи не шло! Это самопроизвол! И вопрос тут не в оптимальности а в применении алгоритма! Что мы проходили - удаление.. А перескакивания еще не было. Удаляем, чтобы на них тупо в следующий раз и не заходить!
|
|
| |
Pavel | Дата: Воскресенье, 21.10.2007, 22:00 | Сообщение # 13 |
Приближенный
Группа: Модераторы
Сообщений: 210
Статус: Offline
| Quote (Seqular) Решение такое: Если удалять ТРЕБУЕТСЯ - то обязательно удалять.. Если НЕ ТРЕБУЕТСЯ - то на усмотрение кодера. Я вот решил оставить, на всякий случай. Или ты думал, что я не умею удалять динамические переменные? Дим, что за вопросы? Я вот в тебе не сомневаюсь, я даже признаю, что ты больше соображаешь в программировании. Но самое первое, что было сказано: Quote (Seqular) Паха считает, что переменные после каждого счета (т.е. выбывшие) нужно уничтожать. Я с этим не согласен. Зачем? Можно метить их, как выбывшие и все! Вот и пришли к тому, что это уже техничекие аспекты решения с использованием динамического списка.
|
|
| |
Seqular | Дата: Воскресенье, 21.10.2007, 22:43 | Сообщение # 14 |
Хранитель
Группа: Администраторы
Сообщений: 859
Статус: Offline
| А ты думал, что я хочу с тобой поспорить или сказать, что ты не прав? Я вообще-то хотел лишь вытянуть тебя на взаимодействие, чтобы на форуме материал пообновлялся ;))) Раскрутка, то бишь... Ты не волнуйся, последнее сообщение я удалю, чтоб не палица... Хе.. а неплохо нервишки помотали, да?
Поддерживаю также проект сообщество молодых сисадминов
|
|
| |
Alexander | Дата: Суббота, 20.12.2008, 03:12 | Сообщение # 15 |
Всевышний
Группа: Модераторы
Сообщений: 475
Статус: Offline
| Сейчас подумал над этой задачей. Можно улучшить алгоритм, если использовать рекуррентное соотношение. Если каждого второго исключать, то вообще явную формулу можно вывести . Кто-нибудь сможет придумать явную формулу для трёх? А если про этот спор говорить, то я на стороне Павла, по-моему не логично хавать лишнюю память только потому, что в условии не сказано этого не делать.
Скажем дружно- нафиг нужно!
|
|
| |