Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Решение одной задачи. Вопросы по программному коду и способам реализации.
|
|||
|---|---|---|---|
|
#18+
Дмитрий, вы совершенно правы(кроме легкоиспользуемости, её легко использовать, реверс это не проблема). Но передо мной сейчас стоит большая задача, и я уже очень близок к её решению, очень близок(правда на это может уйти два дня). Допишу это сообщение, и буду оптимизировать совсем другой алгоритм, где rCloud всего лишь вспомогательная часть. Когда я напишу программу, и она будет работать везде где должна работать, я займусь оптимизацией того, что уже протестировано (и эта функция тоже). Резюмируя: уже протестировал функцию (так как мог), и не хочу сейчас что-то менять, потому что новые изменения потребуют новое тестирование, а именно сейчас, мне это не нужно. maytonЧто это? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Зачем j<num_v проверяется дважды? Для надёжности? Или учитываешь шум электронов в кристаллической решётке? Или просто лажанулся? Рад что кто-то спросил этот вопрос :) Я его ждал. Могу ответить что для надёжности, но это не так(с большой долей вероятности не так). Позже напишу обоснование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.08.2014, 01:59 |
|
||
|
Решение одной задачи. Вопросы по программному коду и способам реализации.
|
|||
|---|---|---|---|
|
#18+
Я сдал её ребята !!!!! Всего её сдали 9 человек из 30.000 участников :) После обеда все расскажу ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 04:57 |
|
||
|
Решение одной задачи. Вопросы по программному коду и способам реализации.
|
|||
|---|---|---|---|
|
#18+
Мне хотелось попасть в топ 10 при решении задачи, но при решении задачи уже решенной тысячами других людей, и использующих cout вместо printf(уже экономия в символах), и использовании кучи define (мне это не очень нравится), это затруднительно. Потому, я подумал, что мне нужно решить задачу, решенную менее чем 10ю пользователями. Собственно вот она . По простому она звучит так: где sh(x,k) это циклический сдвиг влево на k позиций. Думаю, что могу рассказать без спойлеров как я её решал, ибо с большой долей вероятности существует более простое решение(собственно буду рад узнать его). Намеренно не гуглил (по классическому совету Анатолия), не искал методы дешифрации, или smth else. Для меня эта задача выглядит как система линейных диофантовых уравнений, с ограничениями на значение вектора решения. Если бы это была система ДУ, было бы понятнее, но с система Диоф. ур. я дел никогда не имел. Знал только что это. Гуглить про них тоже не стал, хотелось решить самому.(впрочем сейчас полчаса поискал, уже после решения, ни одной нормальной русской статьи не нашел). Вот основные типы данных с которыми я работал в программе: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. //закомментировал =NULL потому что система не компилировала эти моменты. Таким образом я заполнял облакоУравнеий. Решил назвать облаком, потому что в этой структуре хранятся не только уравнения. На мой взгляд удачное название (хотя есть какой-то iCloud вроде, значит это было до меня, жаль) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. И вот функция просмотра Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Далее, пусть например на входе будет 7251376 Мы получим следующее множество систем диофантовых уравнений и ещё одно множество должно быть в общем случае, тут его нет. Случай такой:в x разрядов меньше чем в y. Такой пример приводил Дмитрий (эта программа и такое решает) Как я предлагаю её решать. Мы все знаем что вектор решения должен состоять из целых числе в диапазоне от 0 до 9. Мне показалось разумным делать уколы этому облаку, и проверять, подходят ли эти уколы ему, или нет. Рекурсивная функция вводит значения от 0 до 9, и смотрит что получится. Думаю всем уже понятно как она работает. Вот код. Кстати, код мне не нравится,из-за goto, и вообще, его нужно оптимизировать. Это очевидно. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. Функцию получающую правые вектора я представлял ранее. Файл также прикрепляю к этому сообщению. Буду рад услышать комментарии по предложенному методу, и более простое решение :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 07:39 |
|
||
|
Решение одной задачи. Вопросы по программному коду и способам реализации.
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЯ сдал её ребята !!!!! Всего её сдали 9 человек из 30.000 участников :) Позорище Самое плохое время. Самый большой размер. Самая большая занимаемая память. Лучше-б вообще не публиковал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 10:27 |
|
||
|
Решение одной задачи. Вопросы по программному коду и способам реализации.
|
|||
|---|---|---|---|
|
#18+
ахах ;) Размер могу уменьшить до 2 тысяч знаков. И размер памяти. Сначала нужно оптимизировать рекурсивный код ввода инъекций, это более важно :) И мне понятно на каких тестах он жрёт память, думаю что знаю как это обойти. Да и я не мог не показать, я ведь всем пообещал что до пятницы сделаю и покажу, вчера 8 часов писал и отлаживал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 10:37 |
|
||
|
Решение одной задачи. Вопросы по программному коду и способам реализации.
|
|||
|---|---|---|---|
|
#18+
И вообще три товарища выше меня сдали практически в одно и тоже время, это подозрительно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 10:39 |
|
||
|
Решение одной задачи. Вопросы по программному коду и способам реализации.
|
|||
|---|---|---|---|
|
#18+
Когда пишешь взаимоиключающие условия - не повторяйся. Вместо Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. лучше писать так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Это пустяк когда у тебя стоит булева переменная но совершенно не пустяк когда будет стоять предикат который имеет накладные по времени да и к тому-же неконсистетность во времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.08.2014, 10:43 |
|
||
|
Решение одной задачи. Вопросы по программному коду и способам реализации.
|
|||
|---|---|---|---|
|
#18+
Да, пожалуй вы правы. Да и алгоритм сырой, его надо переделывать. Сейчас занимаюсь общей оптимизацией. Хочу вынести функции просмотра в отдельный файл. Они не несут основной функционал, и отвлекают от общей картины. Создал файл view.cpp. В нем попытался подключить основной файл, и вставить функции просмотра, но действие корректно не происходит Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. Пробовал в одинарные кавычки, не помогло. Стоит ли выносить функции просмотра в отдельный файл ? Тут, думаю, нужно почитать про препроцессор чтобы понять как это сделать ? PS Думал повторно описать структуру в этом файле, но так делать не стоит. Хотя в больших проектах, наверное структуры выносят в отдельный файл ? (это предположение) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2014, 02:20 |
|
||
|
Решение одной задачи. Вопросы по программному коду и способам реализации.
|
|||
|---|---|---|---|
|
#18+
SashaMercuryСоздал файл view.cpp. В нем попытался подключить основной файл Код: plaintext 1. Хорошо что не #include <666.cpp> .cpp файлы, и вообще файлы содержащие тела функций не включают через include а компилируют отдельно и потом полученные объектные модули каждого указывают при сборке (линковке) программы. Подробнее - в любом учебнике по С. SashaMercuryПробовал в одинарные кавычки, не помогло. Стоит ли выносить функции просмотра в отдельный файл ? Тут, думаю, нужно почитать про препроцессор чтобы понять как это сделать ? Сначала почитайте про препроцессор. Давно пора было это сделать. Вообще вопросы поднятые в этом посте должны были быть вами разобраны в первую неделю изучения С. SashaMercuryДумал повторно описать структуру в этом файле, но так делать не стоит. Хотя в больших проектах, наверное структуры выносят в отдельный файл ? (это предположение) Структуры и прототипы функций и прочие объявления обычно описывают в файлах с расширением .h и включают в те .cpp где они используются. При этом есть ряд нюансов таких как защита от повторного включения и пр. - опять же это все есть в любом учебнике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2014, 02:33 |
|
||
|
Решение одной задачи. Вопросы по программному коду и способам реализации.
|
|||
|---|---|---|---|
|
#18+
Хорошо, спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2014, 02:38 |
|
||
|
Решение одной задачи. Вопросы по программному коду и способам реализации.
|
|||
|---|---|---|---|
|
#18+
Тут получится странная ситуация. В файле а.cpp у меня содержится описание структуры основные методы, и допустим вызов функции просмотра. А в фале b.cpp у меня содержатся методы для просмотра состояния структур. То есть для компиляции файла b.cpp мне нужно чтобы уже был собран файл а.cpp(чтобы была видна структура из файла а.cpp в файле b.cpp), а для сборки файла а.cpp (в котором содержится вызов функции просмотра из файла b.cpp) мне нужны действия противоположные первым. Из этого я делаю вывод, для того чтобы всё работало корректно, мне нужно создать отдельный хидер с описанием структуры . Верно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2014, 02:45 |
|
||
|
Решение одной задачи. Вопросы по программному коду и способам реализации.
|
|||
|---|---|---|---|
|
#18+
SashaMercuryИз этого я делаю вывод, для того чтобы всё работало корректно, мне нужно создать отдельный хидер с описанием структуры . Верно ? Да. И в нем же прототипы всех функций, которые используются не в тех файлах где они объявлены. ЗЫ. В С не принято расширение .cpp. Более того при таком расширении компилятор будет считать что программа на С++. Для С используйте .c ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2014, 02:53 |
|
||
|
Решение одной задачи. Вопросы по программному коду и способам реализации.
|
|||
|---|---|---|---|
|
#18+
Немного оптимизировал алгоритм собирающий все возможные варианты правых частей. Как вы считаете, его можно оптимизировать(или улучшить данный код) ? Будет ли работать алгоритм с использованием деревьев быстрее ? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. mode показывает есть ли перенос в старшем разряде. Простыми словами, если mode=1, то количество разрядов суммы равно количество разрядов полученного числа, в противном случае, количество разрядов операндов суммы на 1 меньше. Как работает этот алгоритм? возьмём число 64383. Рассмотрю вариант без увеличения разрядности суммы. Прикрепил картинку. По ней можно легко понять алгоритм ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2014, 08:46 |
|
||
|
Решение одной задачи. Вопросы по программному коду и способам реализации.
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky , запомнил. Спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.09.2014, 08:47 |
|
||
|
Решение одной задачи. Вопросы по программному коду и способам реализации.
|
|||
|---|---|---|---|
|
#18+
Проблема с памятью решена. Эти 5.4 Мб появлялись из-за больших трат все возможны варианты правой части системы уравнений. Мне не нужно хранить все элементы правой части, легко можно получить следующий правый вектор-столбец исходя из текущего (исходя из индексов вариантов текущих значений). Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. А вот так можно проверить этот код, правда тут без реверса, но это детали. Решаемые. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Рисунок ниже отлично поясняет как этот код работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2014, 02:37 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38732413&tid=2019318]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
58ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 332ms |
| total: | 471ms |

| 0 / 0 |
