Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
MasterZivКстати, о производительности. auto other = y; y = x; x = other; -- тут три операции. Точнее, три чтения и три записи. в твоём 3 * 3 + 1 = 10 операций. При этом одна из этих трёх операций ( одно чтение, XOR и одна запись ) ещё и задействует АЛУ. А при обычном swap оно может быть и без АЛУ. Как вы умудрились насчитать десять операций??? Код: sql 1. эквивалентно Код: sql 1. 2. 3. "Вычисление с присваиванием" - одна (логическая) операция. "Физически" будет, скорее, всего, два чтения, две записи и три логические операции (в регистрах). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 13:38 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
maytonСашок хочешь задачку подкину? Конечно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 14:02 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
On 27.06.2014 14:38, Basil A. Sidorov wrote: > Автор: Basil A. Sidorov. MasterZiv > Кстати, о производительности. > > auto other = y; > y = x; > x = other; > > -- тут три операции. Точнее, три чтения и три записи. > > в твоём 3 * 3 + 1 = 10 операций. > При этом одна из этих трёх операций ( одно чтение, XOR и одна запись ) > ещё и задействует АЛУ. А при обычном swap оно может быть и без АЛУ. > > Как вы умудрились насчитать десять операций??? > > x^= y^= x^= y; > > эквивалентно x^= y -- читать x, читать y и выполнить XOR, результат записать в x. И так три раза. Результат предыдущего вычисления (x в данном случае) можно , конечно, не читатЬ, тогда следующие операции -- по 3 , а не по 4. А первая -- +1 даёт. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 14:38 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Это всё замечательно, но применительно к реальной жизни ваш пример - ничем не лучше цепочки xor-ов. Если компилятор предоставляет swap(x, y) - именно эта функция и должна использоваться. А превратит ли её компилятор в две пары push/pop или в загрузку/сохранение пары регистров - забота разработчиков этого компилятора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 14:50 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
SashaMercurymaytonСашок хочешь задачку подкину? Конечно :) Вот тебе задача. Есть игровой мир. В трёхмерных координатах. X,Y,Z. Состоит из кирпичиков. Каждый кирпичик имеет координаты соотв от (0,0,0) до (1024,1024,1024). Состояние кирпичика определяется 16-битным целым (shot). Кирпичик может быть: - установлен/убран - иметь повреждение от 0 до 15. - иметь тип материала (256 типов в том числе стекло, дерево, бетон) Изначально кирпич не обязательно должен стоять на земле. Его можно поставить в воздухе. Группы кирпичей могут образовывать здания, сооружения. Необходима имплементация следующего интерфейса. Код: plaintext 1. 2. 3. 4. 5. 6. Спецификация кирпичика Код: plaintext 1. 2. 3. 4. 5. При этом надо помнить что память ограничена и по возможности не делать 3-d матриц. Этот код должен работать на сервере где память - ограничена. Второй частью этой разработки будут активные игроки или действия игрового мира. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 15:11 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
mayton, А почему "isSet: 3" когда всего 2 состояния "установлен/убран"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 15:42 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, да верно. Поправил. Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 15:52 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Вы хотите решить эту задачу не тратив 2^31 байт ? Я правильно понял ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 15:54 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
SashaMercury, да. Не создавая 3-д матрицу. Исходим из предположения что игровой мир будет заполнен не полностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 16:22 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Я могу хранить в одномерном, размерностью 2^31. Но это не то, как я понял. То есть мы хотим хранить элементов столько, сколько есть непустых. Где isSet true. Уже гонят спать..подумаю, мне кажется это вполне реализуемо. Спасибо за задачу :) Ps Я могу применить malloc дважды к одному указателю ? " Довыделить память " ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 16:34 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Размерностью 2^30 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 16:34 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЯ могу применить malloc дважды к одному указателю ? " Довыделить память " realloc() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 16:36 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
MasterZivOn 26.06.2014 03:14, egorych wrote: > красивая, но бессмысленная, инты обменивать редко когда требуется, да и > читается плохо, по этой же причине. Редко - читай никогда )) Ну ладно, не так уж и редко. Любая сортировка. А сортировка -- основа многих алгоритмов, да и сама часто используется. и часто ты сам сортировку пишешь? std::sort - и вуаля ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 18:10 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
maytonВот тебе задача... Не издевайся, неподъемная задача. Он алгоритмы не изучил. Тут сортировки как минимум надо освоить. Да и задача неполноценная, надо какую-то статистику по однотипным элементам ввести в условие, например сколько неиспользуемых элементов и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 18:43 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Dima T, А по мне - слишком простая (для Саши) :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2014, 20:36 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Как работать с value понятно, тут проблем нет. Нужно решить проблему с однозначно адресуемым расширяемым массивов, либо с тем как хранить эти кирпичи чтобы однозначно адресовать по xyz. Спецификацию кирпича расширять нельзя ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2014, 07:19 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Можно еще подумать, и возможно как то использовать коды Грея или кривую Гильберта. Но вы не подсказывайте. Я только начал думать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2014, 07:21 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Думай. Спецификацию кирпича я расширять не планирую. Ну даже если расширять то в крайнем случае заменить short на int. Это не влияет принципально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2014, 13:33 |
|
||
|
Анализ программного кода. 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. Очевидный минус(после исправления ошибки с выделением памяти), время доступа к элементу ~O(n). И второй минус, трачу в два раза больше памяти чем элементов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2014, 16:53 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Но это конечно не то. Нужно(и скорее всего можно) по-другому решить эту задачу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2014, 17:15 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Ваши sizeof(buf) возвращают размер указателя. Это, как максимум, восемь байт. Хотите выделить память для массива элементов - определяетесь с размером и выделяете "размер * sizeof(тип)" байт. Дополнительно определяетесь со способом определения размера массива. Чтобы использовать одно и ту же логику во всех частях программы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2014, 20:22 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
SashaMercuryНо это конечно не то. Нужно(и скорее всего можно) по-другому решить эту задачу Эту задачу можно решить тысячами способов. Код твой я еще не смотрел. Но сходу предложу использовать Stdint.h для фиксации типов данных. А такой фокус как sizeof(int) лучше вообще не использовать. Никогда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2014, 17:36 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Тут как раз таки в первую очередь "никогда" - это к sizeof(buf), который типа int*. Это даже если вдруг забыть, что значение buf изначально используется не инициализированным. Да и O(n) на доступ к записям по координатам как-то слишком много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.06.2014, 19:16 |
|
||
|
Анализ программного кода. International Obfucated C Code Contest. 1984. By Mike Laman
|
|||
|---|---|---|---|
|
#18+
Я только код исправлю. Пока что не проверяйте. wstДа и O(n) на доступ к записям по координатам как-то слишком много. Ну это предел сверху. Вот если бы я мог записывать в те адреса памяти что я хочу (в пределах той памяти что выделена), это было бы хорошо. Хотя что хорошего, вся программа была бы разбросана кусками. Пока что я не вижу другого варианта. Мне приходится хранить пару, значение и код координаты. И когда я хочу получить значение, очевидно что у меня происходит запрос select value from table t where ID=' '. И потом max это количество строк ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.06.2014, 02:13 |
|
||
|
|

start [/forum/topic.php?fid=57&startmsg=38681840&tid=2019161]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
60ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 188ms |

| 0 / 0 |
