Вторник, 07.01.2025
Pascal 4 All
[ · Новые сообщения · Участники · Правила форума · Поиск · RSS ]

 

  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Seqular, Pavel  

Задача Иосифа Флавия (динамический вариант)
SeqularДата: Суббота, 20.10.2007, 11:13 | Сообщение # 1
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Паха считает, что переменные после каждого счета (т.е. выбывшие) нужно уничтожать. Я с этим не согласен. Зачем? Можно метить их, как выбывшие и все!

Поддерживаю также проект сообщество молодых сисадминов
 
PavelДата: Воскресенье, 21.10.2007, 14:25 | Сообщение # 2
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
Quote (Seqular)
Паха считает, что переменные после каждого счета (т.е. выбывшие) нужно уничтожать. Я с этим не согласен. Зачем? Можно метить их, как выбывшие и все!

Хм. Тогда вообще зачем держать лишнюю информацию? Аля типа масло с маслом. Освободил ссылку и проходов становиться заметно меньше. Конечно, для Pentium 4 и далее это ерунда пару лишних тысяч раз (образно говоря) проходов сделать. Мы же должны делать правильные задачи. Вот из-за нежелания разобраться и получаются такие системы как Windows. Я не понимаю несогласие Дмитрия. Лишняя информация - залог нездравого программирования! Ты же когда прогу пишешь, удаляешь, допустим неиспользуемые счетчики. Так и тут. И в Дэлфи уничтожаешь отработавшие объекты. surprised surprised
 
PavelДата: Воскресенье, 21.10.2007, 14:28 | Сообщение # 3
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
Quote (Seqular)
переменные после каждого счета

Хочется добавить: именно в решении с ссылочными типами данных. В линейном статическом массиве этого делать не надо. Да и собственно, это никак не получиться. Будет игра только со счетчиками.
 
SeqularДата: Воскресенье, 21.10.2007, 15:10 | Сообщение # 4
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Quote (Pahan)
Лишняя информация - залог нездравого программирования

Вот это уже конкретная заява. Кто-то говорил, что иформация лишняя? В задаче требовалось найти, каким по счету будет последний элемент. Нигде не сказано, что другие элементы не нужны. Когда в считалочку играешь, ты же не выгоняешь из круга всех.. типа кто остался тот и выйграл. Нет! Считалочка - это лишь способ найти последнего... А потом уже начинается игра.
Не с проста же раньше в задачах писали, что элементы нужно уничтожать. Суть-то не в том, чтобы уничтожить элемент! Это мы проходили давно! Суть в том, что нужно найти и перескакивать через выбывшие. СМ условие.


Поддерживаю также проект сообщество молодых сисадминов
 
SeqularДата: Воскресенье, 21.10.2007, 15:11 | Сообщение # 5
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Quote (Seqular)
Ты же когда прогу пишешь, удаляешь, допустим неиспользуемые счетчики

Это так, если продукт конечный. Что создал, то и удалю. А это - не программа. Это демонстрация алгоритма перескакивания через выбывшие элементы!


Поддерживаю также проект сообщество молодых сисадминов
 
PavelДата: Воскресенье, 21.10.2007, 21:11 | Сообщение # 6
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
Quote (Seqular)
Это демонстрация алгоритма перескакивания через выбывшие элементы!

Вот вот Дим, так оно и есть: демонстрация алгоритма к задаче, где сказано, что надо найти последнего чела по считалочке. А вот как это делается - это дело другое. Мы обсуждаем уже техническую сторону решения задачи. И одно из правил это не использовать того, что не нужно. Т.е. оптимизация программного кода.
 
SeqularДата: Воскресенье, 21.10.2007, 21:20 | Сообщение # 7
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Вот как раз не используем то, что не нужно - удаление выбывших... Условием задачи не оговаривается их удаление!

Поддерживаю также проект сообщество молодых сисадминов
 
PavelДата: Воскресенье, 21.10.2007, 21:29 | Сообщение # 8
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: 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
Репутация: 35
Статус: Offline
Иначе задачу не решить, если не удалять! А об удалении речи не шло! Это самопроизвол! И вопрос тут не в оптимальности а в применении алгоритма! Что мы проходили - удаление.. А перескакивания еще не было. Учитывая, что задачи решаем в образовательном варианте, нужно учиться делать и такое.
По крайней мере решать четко поставленную задачу. Номер найден? Задача решена... А удалять ненужные данные.... А с чего ты решил, что данные ненужные? То, что они в условии не пригодились - еще не дает права ими так распоряжаться


Поддерживаю также проект сообщество молодых сисадминов
 
PavelДата: Воскресенье, 21.10.2007, 21:49 | Сообщение # 10
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
Ну да ладно. Мне уже как-то не по себе стало. Мы уже переходим к придиркам. Мне тоже в своем решении не нравитсься кое-что. А именно нахождения адреса первого элемента списка. Криво сделано, но не получилось сделать по другому.
И так остался вопрос: надо ли удалять выбывших из списка в решении с использованием ссылок?
ЗЫ: имхо Dispose или FreeMem
cool
 
SeqularДата: Воскресенье, 21.10.2007, 21:55 | Сообщение # 11
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
Решение такое: Если удалять ТРЕБУЕТСЯ - то обязательно удалять.. Если НЕ ТРЕБУЕТСЯ - то на усмотрение кодера. Я вот решил оставить, на всякий случай. Или ты думал, что я не умею удалять динамические переменные? wink happy

Поддерживаю также проект сообщество молодых сисадминов
 
PavelДата: Воскресенье, 21.10.2007, 21:56 | Сообщение # 12
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
Quote (Pahan)
Иначе задачу не решить, если не удалять! А об удалении речи не шло! Это самопроизвол! И вопрос тут не в оптимальности а в применении алгоритма! Что мы проходили - удаление.. А перескакивания еще не было.

Удаляем, чтобы на них тупо в следующий раз и не заходить!
 
PavelДата: Воскресенье, 21.10.2007, 22:00 | Сообщение # 13
Приближенный
Группа: Модераторы
Сообщений: 210
Репутация: 17
Замечания: 0%
Статус: Offline
Quote (Seqular)
Решение такое: Если удалять ТРЕБУЕТСЯ - то обязательно удалять.. Если НЕ ТРЕБУЕТСЯ - то на усмотрение кодера. Я вот решил оставить, на всякий случай. Или ты думал, что я не умею удалять динамические переменные?

Дим, что за вопросы? Я вот в тебе не сомневаюсь, я даже признаю, что ты больше соображаешь в программировании. Но самое первое, что было сказано:

Quote (Seqular)
Паха считает, что переменные после каждого счета (т.е. выбывшие) нужно уничтожать. Я с этим не согласен. Зачем? Можно метить их, как выбывшие и все!

Вот и пришли к тому, что это уже техничекие аспекты решения с использованием динамического списка. angry

 
SeqularДата: Воскресенье, 21.10.2007, 22:43 | Сообщение # 14
Хранитель
Группа: Администраторы
Сообщений: 859
Репутация: 35
Статус: Offline
А ты думал, что я хочу с тобой поспорить или сказать, что ты не прав? Я вообще-то хотел лишь вытянуть тебя на взаимодействие, чтобы на форуме материал пообновлялся ;))) Раскрутка, то бишь... Ты не волнуйся, последнее сообщение я удалю, чтоб не палица... wink Хе.. а неплохо нервишки помотали, да?

Поддерживаю также проект сообщество молодых сисадминов
 
AlexanderДата: Суббота, 20.12.2008, 03:12 | Сообщение # 15
Всевышний
Группа: Модераторы
Сообщений: 475
Репутация: 16
Замечания: 0%
Статус: Offline
Сейчас подумал над этой задачей. Можно улучшить алгоритм, если использовать рекуррентное соотношение. Если каждого второго исключать, то вообще явную формулу можно вывести biggrin . Кто-нибудь сможет придумать явную формулу для трёх?
А если про этот спор говорить, то я на стороне Павла, по-моему не логично хавать лишнюю память только потому, что в условии не сказано этого не делать.


Скажем дружно- нафиг нужно!
 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

Copyright MyCorp © 2025
Используются технологии uCoz
javascript:;" rel="nofollow" onclick="loginPopupForm(); return false;