Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
SashaMercuryНу это предел сверхуЭто не предел сверху. Это именно что оценка времени доступа при линейном поиске.Мне приходится хранить пару, значение и код координаты. И когда я хочу получить значение... то хранение в упорядоченном списке позволяет использовать двоичный поиск. Правда, возникает задача обеспечения и поддержания этой самой упорядоченности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2014, 02:18 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Re: Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman Basil A. Sidorov ... то хранение в упорядоченном списке позволяет использовать двоичный поиск. Правда, возникает задача обеспечения и поддержания этой самой упорядоченности. Вы думали что мне это не пришло в голову после комментария от Дмитрия про сортировку ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2014, 03:03 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Я не думал. Я как чукча - что вижу, то и пою ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2014, 03:10 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
SashaMercuryИ когда я хочу получить значение, очевидно что у меня происходит запрос select value from table t where ID=' '. И потом max это количество строк Ну раз вы привели аналогию с запросом к СУБД, то вам наверно не должно составить труда вспомнить, каким образом подобные запросы там оптимизируются до O(log n), а то и O(1) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2014, 03:15 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov Я не думал. Я как чукча - что вижу, то и пою я на вас не обзывался, извините если вы подумали что я критикую вас. Это был не ответ в стиле-отвалите, мне и так всё понятно, а ответ спокойным тоном- я это понимаю. Anatoly Moskovsky, да я тут с памятью ещё разбираюсь. Что-то не так делаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2014, 03:59 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Нужно выделять память в конец текущего массива ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2014, 04:01 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Она(среда выполнения) хотела чтобы я сразу выделил память на указатель Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2014, 06:03 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#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. Осталось разобраться с sizeof(), и оптимизировать поиск элемента ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2014, 07:03 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
SashaMercuryРазобрался с памятью. Код: plaintext 1. Единственная проблема - это не С, а С++, потому что С не позволяет инициализировать глобальные переменные неконстантами Если уж изучать С, так и компилировать наверно нужно компилятором С, а не С++. А то такого наизучаете ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2014, 13:28 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyЕдинственная проблема - это не С, а С++, потому что С не позволяет инициализировать глобальные переменные неконстантами Этого я не знал. Спасибо. Добавляю простую индексацию. Пришёл к выводу что функция SetBrick() должна возвращать что-то, вдруг мы добавляем два одинаковых кирпича. Да и вообще, теперь мне кажется что любая функция должна возвращать свой код, чтобы знать, успешно ли она выполнилась или нет. Может и ошибаюсь, но почему-то мне кажется что где-нибудь в канонах программирования написано-"каждая функция должна возвращать что-то"(-1 неудача, 1 всё ок) :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2014, 03:52 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Формирую блок таким образом: 1int - value 1int - код координаты 3int - номер по возрастранию Потратил час на функцию, не продумав поиск. Таким образом в этом же блоке хранить номер (по возрастанию) нет смысла. Нужно выделять для этого отдельную область памяти. Вот функция, но сейчас буду переделывать её Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2014, 05:57 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Нет, тут плохой код. Мне уже даже циклы не нравятся тут. Не смотрите. В общем выложу как будет готово и проверено. А то выкладываешь, и видишь потом что можно сделать лучше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2014, 06:55 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky Единственная проблема - это не С, а С++, потому что С не позволяет инициализировать глобальные переменные неконстантами Если уж изучать С, так и компилировать наверно нужно компилятором С, а не С++. А то такого наизучаете ... Всё таки это проблема. Я думал что можно решить её позже, но мне не нравится что мне приходится выделять память сразу. Из-за этого приходится поддерживать две переменные up_block, count_block. Они несут одинаковый смысл практически, различие между ними как между де-юре и де-факто. Там две переменных с одной смысловой нагрузкой, тут две переменных, получите распишитесь плохой код: Код: 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. Не могу нормально индексацией заняться, пока не решу проблему с памятью, либо не решу что это невозможно сделать. Подскажите пожалуйста, как поступить чтобы не выделять лишнюю память ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2014, 07:54 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
SashaMercuryНе могу нормально индексацией заняться, пока не решу проблему с памятью, либо не решу что это невозможно сделать. Подскажите пожалуйста, как поступить чтобы не выделять лишнюю память ? Я пока не ставлю задачи "уплотнения" памяти. Аллоцируй как удобно - потом попробуем оценить потери на аллокациях. Кстати нашёл статью. Самому интересно. http://www.gamedev.net/page/resources/_/technical/general-programming/c-custom-memory-allocation-r3010 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.07.2014, 20:18 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
mayton, спасибо, статью попозже посмотрю, вдруг там какая подсказка, хочу сам сделать так, как я пока могу, и только из своих размышлений, а потом почитаю как это делается правильно. SSНе могу нормально индексацией заняться, пока не решу проблему с памятью, либо не решу что это невозможно сделать. Подскажите пожалуйста, как поступить чтобы не выделять лишнюю память ? Вчера пока играл в футбол решил эту проблему частично. Мысль неожиданно пришла в голову. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2014, 02:59 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#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. В этом куске кода Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. , первоначально именовал переменные по которым бежит цикл как i и j. Но очень быстро догадался их назвать по нормальному. Чудесный кусок кода C: В кои века мне что-то понравилось у себя. PS хотя сейчас я понял что l похожа на 1 ( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2014, 04:43 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Да, и я подумал ещё. Мне кажется нужно по аналогии с СУБД реализовать все CRUD операции, и назвать их как : createBrick(),readBrick(),updateBrick(),deleteBrick(). Или ошибаюсь ? Но сначала нужно убедить что setBrick()(createBrick()), похожа на правду, и исходя из её работы дальше можно плясать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2014, 04:46 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВчера пока играл в футбол решил эту проблему частично. Мысль неожиданно пришла в голову.Вот когда эта мысль тебе приснится, тогда можешь считать себя настоящим программистом. А футбол .... ну почти не считается, хотя и близко. А пока подсказка: почитай о хеш функциях и хешированием с хвостами (не помню как это правильно называется). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2014, 05:29 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
White Owl А пока подсказка: почитай о хеш функциях и хешированием с хвостами (не помню как это правильно называется). спасибо. Только сначала сделаю как я могу сам, найду скорость на каждую операцию, а потом почитаю как это правильно делается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2014, 06:19 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
SashaMercuryДа, и я подумал ещё. Мне кажется нужно по аналогии с СУБД реализовать все CRUD операции, и назвать их как : createBrick(),readBrick(),updateBrick(),deleteBrick(). Или ошибаюсь ? Но сначала нужно убедить что setBrick()(createBrick()), похожа на правду, и исходя из её работы дальше можно плясать Для данной задачи - непринципиально будет ли setBrick или CRUD с кирпичами. И сама постановка с СУБД - избыточна. Но дам подсказку. Кирпичи обычно стоят блоками или группами. На этом можно соптимизировать хранение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2014, 08:40 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Такой кусок кода Код: plaintext 1. 2. 3. я обычно записываю так Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2014, 08:43 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
maytonКирпичи обычно стоят блоками или группами. думал про это, но даже если у меня будет некоторый аналог триангуляции (не знаю как это правильно называется в программировании, это термин из математики), и буду хранить например координаты диагонали параллелепипедов, то у меня будут приличные проблемы для формирования этих диагоналей. Нюансы будут и с соседними кубиками.И при удалении одного кирпича из кубика, куб пропадает, надо будет перестраивать весь буфер. Да и вообще, стреляет танк(не знаю откуда ассоциации с танками) в здание, верхний слой повреждён, а внутреннего значение value то-же. Нужно снова перестраивать массив. Нужно будет ввести норму для сортировки кубиков, но это в принципе не сложно, но всё-таки. Куча нюансов. Код: plaintext 1. 2. 3. Конечно можно и так,но мне показалось что не нужно вводить лишнюю переменную, в целом и так понятно что происходит. Хотя если бы в блоке было 30 элементов например, то я согласен с тем что ваш код был бы более приятен для чтения. Скорее всего. Допустим пока я храню каждый кирпич отдельно. Код для вставки кирпича в массив похож на правду ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2014, 15:33 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
SashaMercury, По управлению памятью. Отделите задачу по расширению массива (включая такую абстракцию как блоки) от собственно алгоритма использующего массив как контейнер. Алгоритму вовсе не зачем оперировать таким понятием как блок из нескольких элементов массива, если он работает с одним элементом. Поэтому рекомендую сделать такие функции: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. А уже в вашем алгоритме работать с массивом только через эти функции. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Обратите внимание, как резко упрощается код. ЗЫ. Кстати а с чего вы решили, что если кирпич уже существует то set должно вернуть ошибку? Надо просто заменить старое значение новым :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2014, 16:46 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, спасибо. Кое что сейчас использую. А зачем хранить каждую координату отдельно ? Ведь хватит 4 байт для хранения всех координат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 02:25 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Я тоже их хотел хранить в структуре, и спрашивал про это у mayton_a, но огн сказал что не предполагает менять структуру хранения данных. Потому не стал добавлять координаты в структуру. SSКак работать с value понятно, тут проблем нет. Нужно решить проблему с однозначно адресуемым расширяемым массивов, либо с тем как хранить эти кирпичи чтобы однозначно адресовать по xyz. Спецификацию кирпича расширять нельзя ? maytonСпецификацию кирпича я расширять не планирую. Ну даже если расширять то в крайнем случае заменить short на int. Это не влияет принципально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.07.2014, 02:29 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38685303&tid=2019161]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 281ms |
| total: | 441ms |

| 0 / 0 |
