|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
|
LIFO == TimeShift18.04.2010, 13:30. Показов 4606. Ответов 31
Метки нет (Все метки)
Здравствуйте уважаемые форумчане...
Не большая предыстория возникновения идеи этого поста: Я много уже перерешал различных задач про матрицы, и все они казались тривиальными и неитересными, и мне в голову пришла такая мысль, а не придумать бы интересную и нелёгкую задачу про матрицу, за одно и форуму будет польза от наличия на нём интересных и нетривиальных задач. Эта задача не из учебников, я её сам придумал, если и есть где такая задача, то это случайное совпадение. LIFO == Time Shift by Genius Ignat(c). Копирайт по традиции, но в реальной жизни он не спасает, воров идей хватает везде. Вообщем эта задача уже решена, но я хотел бы, что бы вы попытались решить её тоже, эта задача интересна и полезна (в большей степени не желе тривиальные задачи: более полезна в практической деят), ответ я выложу, после того как ваши идеи и ответы закончатся, или пост перестанет быть актуальным. Решение задачи поощряется Mx повышением вашей репутации, я отправлю вам отзывы. Mx - если задача решена полностью. Mx - это значит, я вам отправлю два отзыва. Nx - если задача решена частично. Nx - это значит, я вам отправлю один отзыв. Mx это : в среднем + 160 - 180 к вашей репутации. Nx это : в среднем + 80 - 90 к вашей репутации. Совет: программу старайтесь делать качественнее, с комментами и тд. Надеюсь, я и на вашу щедрость, возможно, кому то пригодиться мое решение, 1 день угробил на всю эту задачу: Не весь день конечно с 13:00 до 21:00, всё ради того, что бы код был как можно качественнее и понятнее, если есть ошибки в комментариях моей программы, прощу прощения, среда разработки не поддерживает анализа текста на ошибки. Задача: //------------------------------------------------------------------------------------ Примечание: Интересная нетривиальная задача с матрицей фиксированного размера: от Genius Ignat(c). такая задача может пригодиться в практике, потому как матрицы в программах бывают фиксированного размера, + ещё фиксированного содержания. Задача, скорее всего, имеет только одно оптимальное решения, может и ошибаюсь, я не математик, что такое вычислять. //------------------------------------------------------------------------------------ Дана матрица: H - высота == 5 W - ширина == 5 В матрице находиться равнопроцентное содержание следующих значений: 1,2,3,4,5; Матрица имеет вид: {1,2,5,4,3} {2,1,1,5,4} {1,1,2,5,3} (т.1) {2,2,5,4,3} {5,4,4,3,3} Что надо сделать: Сделать надо следующее: в каждой строке должны быть собраны соответствующие значения: матрица должна принять более рациональный вид: ряды по возрастанию: {1,1,1,1,1} {2,2,2,2,2} (т.2) {3,3,3,3,3} {4,4,4,4,4} {5,5,5,5,5} Для получения Nx репутации, нужно придумать алгоритм, который сделает, то что сказано выше. Для получения Mx репутации, задача усложняется следующим: Алгоритм, который превращает матрицу, должен предусматривать ещё способ как можно восстановить прежнее положение элементов матрицы(т.1), для реализации нужно задействовать принцип LIFO: должен использоваться стек позволяющий вернуть матрицу в первоначальное состояние. Предназначение стека: надеюсь, вам не надо объяснять, для чего он нужен. ~ сами должны сообразить что в нём должно храниться. Подсказка: Вспомните игру шахматы, и принцип, пошагового возврата всех фигур на свои места. по принципу LIFO, и тогда будет понятно что должен хранить стек. //-------- //-------- Примечание: вам не требуется писать алгоритм проверяющий равнопроцентая ли матрица, или нет, решаем частный предложенный случай, а кто сможет(и хочет) пусть сделает наиболее обший случай решения данной задачи. //------------------------------------------------------------ Ограничения: Нельзя использовать STL и другие библиотечные примочки, всё надо делать ручками: Даже стек ручками надо сделать. Стек разрешается делать в виде класса с инкапсулированным узлом стека, либо по старинке как на добром C с функциями и описанным в глобальной области узлом стека. //------------------------------------------------------------ Это я не проверю: гугл не используйте, это на вашей совести. //------------------------------------------------------------ Подсказать exe-ком своей программы не могу, мне ни кто не подсказывал, по работе моей программы можно понять принцип работы алгоритма. Решение желательно что бы нормально компилировалось. в VS 2008 или VC++ 6.0. Кто имеет лишнее время и желание делать, что-то интересное, попытайтесь решить, пожалуйста. Желаю всем, кто будет пробовать решить, удачи. Просьба к модераторам, когда я выложу ответ, закроёте эту тему, пожалуйста, дабы ни кто, не оффтопил, и был какой то итог моей темы. Просьба к пользователям, не оффтопить в теме говорить по делу, не кидать понты типа: на кой это мне решать, не хотите не решайте, не можете не решайте, не спрашивать: “а сколько я получу репутации за решение”, надо будет, я вам и три раза нажну отзыв, если решение будет наиболее качественно и воспринимаемо для чтения.
4
|
|
| 18.04.2010, 13:30 | |
|
Ответы с готовыми решениями:
31
Не запускается TimeShift Flussonic timeshift Timeshift не запускается с лицензионным диском |
|
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
|
|
| 19.04.2010, 22:44 | |
|
Genius Ignat, кстати, было бы не плохо подсчитать время выполнения для каждого из алгоритмов для матрицы размером, скажем, 50 на 50 в качестве итогов написанному.
0
|
|
|
562 / 373 / 55
Регистрация: 05.04.2009
Сообщений: 767
|
|||||||
| 21.04.2010, 15:36 | |||||||
Сообщение было отмечено как решение
Решениея сделал следующее -> while ( b[t - 1][c] ) c++
0
|
|||||||
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
|||||||||||
| 21.04.2010, 19:05 [ТС] | |||||||||||
|
Ладно: всё короче выкладываю свое решение, даю более информативную и емкую программу:
Мой ответ: вариант решения
Ещё
Идея сортировки: это не моя идея, раз настаивали: вот.
Итог теме: Почему тема была названа так, и как была придумана задача:
Почему тема была названа так, и как была придумана задача:
1. Название: Звучит интересно, и заманчиво. 2. Стек - это управление временем и ходом выполнения: механизм позволяющий вернуться назад и сделать, что то полезное. 3. TimeShift buffer в моем тв тюнере дает функциональность известную как: time machine . 4. Лень делать ввод матрицы. 5. Матрицы фиксированного размера и содержания присутствуют в природе, я это не выдумывал, и видел много всякого, с уверенностью 99% скажу они есть, но они не так повсеместны. 6. Я выбрал осмысленную начинку матрицы, и просчитал пропорции матрицы, и соотношение начинки. 7. Вычислил что такую матрицу можно легко выстроить однократной заменой(неправильно стоящих) без всяких сортировок, наглых затираний записей и прочих неинтересностей. 8. Придумал алгоритм: 9. Вычислил, что такую матрицу можно вернуть в исходное состояние ненакладным образом, по протоптанным следам алгоритма пункта (8). Вот так я и придумал задачу. Сложность задачи:
Сложность задачи:
Мое мнение: сложность задачи оценивать бесполезно, так как, кому-то легко, а кому-то непросто. Если условия не понятно изложил, прошу прощения, как смог. Зачем нужна была эта тема:
Зачем нужна была эта тема:
1. Вам не надоели слишком простые и стандартные задачи, хотелось бы хоть какого нибудь разнообразия: не стандартных Вузовских фабричных задач? 3. Вы хотите развивать свои программистские навыки далее(всегда есть куда расти). 4. Вы хотите в конце концов не работать за одно несчастное спасибо, хотя бы иногда? 5. Этой темой я хотел сказать: ребята давайте хотя бы изредка придумывать, что то свое нестандартное и интересное(нужное в программах), естественно с умеренным энтузиазмом и сложностью. Может кто-нибудь последует моему примеру, и в недалеком будущем будет еще подобные и более интересные темы. Возможно я первопроходец в придумывании задач на этом форуме, возможно поэтому задача не слишком практична(нужная), наверно я еще плохой постановщик задач. У каждого своей уровень интеллекта, знаний и опыта. вы можете придумать, что то более интересное, и жизненно необходимое. Примечание: исходный код:
Примечание: исходный код:
//---------------------------------------------------------------------------------------- 1. Одновременно кодил и писал комментарии, что бы не пропустить важных моментов. 2. Если где есть логические ошибки, и не только логические, прошу прощения, отладку эта система не проходила. 3. Надеюсь вам будет понятно. //---------------------------------------------------------------------------------------- Прочее:
Прочее:
На кой мне эта задача? Если вы не видите смысла в этой задаче, или она вам ни чем не помогла... или вы не чего полезного не узнали, или вам что не понравилось, лучше не делайте оффтопа, не высказывайтесь, мне как создателю не приятно смотреть на это: потому как я много времени потратил на этот пост и программу, и выслушивать чье-то недовольство мне просто не хочется, и это будет не хорошо с вашей стороны, потому как я ни кому плохого не делал. И вообще по хорошему после завершающего слова автора темы, ее бы следовало закрыть. Для переговоров есть ЛС... Просто уже участвовать в этой теме не хочется... Тем более я уже дал ответ... Не по теме: Если кто-то скажет мне: что мол я знал решение, а ты меня не удивил ни чем: Выражаю всем участвующим в этой теме, искреннею благодарность. Спасибо всем. Желаю всем удачи и успехов.
1
|
|||||||||||
|
229 / 67 / 11
Регистрация: 02.06.2009
Сообщений: 280
|
|
| 21.04.2010, 19:41 | |
Сообщение было отмечено как решение
Решение
Твой алгоритм имеет сложность 0(n^4) это намного медленнее квиксорта. На практике алгоритм с такой сложностью никто не будет использовать. Идеально твоя задача решается видоизмененным квиксортом, который записывает свои перемещения(в стек). Непонятна твоя критика по поводу медленности сортировки по сравнению с твоим методом.
0
|
|
|
Унылый школьник
126 / 60 / 10
Регистрация: 06.11.2009
Сообщений: 353
|
|
| 21.04.2010, 20:39 | |
|
Так и не понял, зачем такие сложности и стек-велосипед...
0
|
|
|
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
|
|
| 24.04.2010, 00:09 | |
|
1
|
|
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
||||||||||||||
| 24.04.2010, 13:49 [ТС] | ||||||||||||||
|
О сортировке:
О сортировке:
Сортировка разрешалась в задаче: При следующей семантике: Type Сортировка = Мозг -> Думать(); //Вы сами придумали эту сортировку(см. ограничение к задаче.) Сортировка не разрешалась при следующей семантике: Type *Сортировка = Google -> Find (); //Вы использовали чужую сортировку (см. ограничения к задаче.) Пользоваться чужим не разрешалось.. И вообще, если присутствует сортировка, ее обычно оговаривают в условии задачи. В данной теме, чужую сортировку притянули за уши, простое нарушение ограничений в решении задачи, вот и все. Просто предлагающие сортировать: заставили меня написать то, что вы сейчас читаете. На что была задача:
На что была задача:
На внимательность, и сообразительность: свойства равно процентной матрицы. Я даже и не думал, что сортировку кто-то предложит, если бы знал: написал для особенно одаренных: сортировка запрещается(это пустая трата времени). Оценка сложности алгоритмов:
Оценка сложности алгоритмов:
Я сглупил:
имеющие частное и общее назначение, либо сравнивают общее с общим, либо частное с частным. 2. Алгоритмы, имеющие совсем разные понятия(виды) и принципы, не сравниваются: Мой алгоритм не относится к сортировкам: Мой алгоритм просто говоря: Набор в ряды по соответствующим ключам, и о какой сортировке речь. Сравнивать Алгоритмы с разных областей: это вообще то нехорошо. Я сказал про скорость не по делу, зачем сам не знаю(просто не подумав ляпнул), случайность, скорее всего, поэтому и тема развилась не правильно.
Почему я не выбрал Qsort при решении:
Почему я не выбрал Qsort при решении:
1 . Cм пункт: О сортировке: это прямое нарушение правил. 2 . накладный возврат матрицы в исходное состояние, после использования QSort. Простая действительность: //----------------------------------------------------------------------------------------- В Сортировке количество обменов может превышать размер коллекции, уже поэтому сортировка меня не устраивает. //----------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------- Количество обменов == количеству возвратов: то есть степень полной раскрутки стека == кол-ву обменов в алгоритме. При раскрутке стека, совершаются обмены, обратные обменам алгоритма.... //------------------------------------------------------------------------------------------ Важность количества обменов, повышается тогда: когда в обмене участвуют большие блоки данных. Исходные коды с подтверждением очевидного: Сортировку Qsort, использовать мне было не зачем. Работа с равнопроцентными матрицами….. трансформирование…… Алгоритм от Genius Ignat:
QSort сортировка:
5889 - обменов меня не устраивает, слишком накладная раскрутка стека будет, уже не хочется к Qsort прикручивать стек, потому как, не вижу преимуществ, вообще….. Не хочу терять огромное время на возврат..... Завершение: Мой алгоритм это просто: кратчайший путь решения задачи: за меньшее число обменов, алгоритм экономит чернила: если выводить каждый обмен. Алгоритм довольно быстр и красив это видно, когда запускаешь: мой ответ. После запуска программы: из пункта: ЕЩЕ, о сортировке вообще даже говорить не хочется, потому как она просто не красива.... Вывод из сказанного: читайте внимательнее задание, и обдумывайте каждый свой ответ………
1
|
||||||||||||||
|
Заблокирован
|
|
| 24.04.2010, 13:54 | |
|
Мне понравилось задача, правда я ее не решил, спасибо Genius Ignat за решенение,
мне оно пригодиться… Genius Ignat + 1. А сортировку, зачем было приплетать, я так и не понял, зачем было портить тему…..
0
|
|
|
Унылый школьник
126 / 60 / 10
Регистрация: 06.11.2009
Сообщений: 353
|
|
| 24.04.2010, 15:01 | |
|
J_Max, просто потому что сортировка - самый простой и очевидный вариант...
0
|
|
|
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
|
||
| 24.04.2010, 22:25 | ||
|
Сначала надо переписать матрицу в массив, затем массив отсортировать и перегнать обратно в матрицу. Если не рассматривать вариант с восстановлением исходной матрицы, то смысла в этих манипуляция никакого. Варианты с std::set или std::map справятся с задачей быстрее, кроме того использование std::map позволит еще и проверить условие равнопроцентного содержания элементов в матрице.
1
|
||
|
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
|
||||||
| 26.04.2010, 14:14 [ТС] | ||||||
|
Предыдущая версия m_transform, это еще не самый короткий способ,
вот решил его оптимизировать:
поиск нужного происходит сразу с следующей строки, по этому элементы которые стоят на своем(В своем ряду)... месте не обмениваются лишний раз.... Проверена на предыдущих примерах, которые я приводил..... при H == 10 (100 элементов) W == 10 swaps: 59. при H == 20 W == 20 (400 элементов) swaps: 282. при H == 40 W == 40 (1600 элеметов). swaps: 1195. Свойства алгоритма сильно не изменились, законы те же что и раньше, только обменов еще меньше....
0
|
||||||
|
Модератор
12844 / 7593 / 1766
Регистрация: 25.07.2009
Сообщений: 13,981
|
|
| 26.04.2010, 15:55 | |
|
По-моему проще свести задачу к получению и сортировке уникальных значений. А заполнять этими значениями ряды двухмерного массива в любом случае быстрее, чем переставлять значения в массиве с места на место... Алгоритм извлечения этих самых уникальных значений можно, конечно, и самому придумать, а можно (если мега-супер-турбо-скорости по условию не требуется) стандартный контейнер set использовать...
Добавлено через 38 минут Закрыто по просьбе топикстартера.
0
|
|
| 26.04.2010, 15:55 | |
|
Как запустить TimeShift на Windows 7? TimeShift не запускается из-за отсутствия d3dx9_27.dll
При запуске игры TimeShift дисплей тухнет Ошибка: Unhandled exception at 0x772115de in TimeShift.exe: 0xC0000005: Access violation reading location 0x00041000. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет!
За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
|
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык.
Возвращает он вот это:
https:/ / i. **********/ vqBWLe2. png
Нужную строчку в 3й колонке просто выдумал. .
Это. . .
|
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor.
Это. . .
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|