4165 / 1817 / 216
Регистрация: 06.10.2010
Сообщений: 4,074
|
||||||
1 | ||||||
Оптимизация по скорости и размеру15.07.2014, 19:43. Показов 7346. Ответов 95
Метки нет (Все метки)
На асmp.ru есть "задача про XOR"
Какие идеи?
2
|
15.07.2014, 19:43 | |
Ответы с готовыми решениями:
95
Оптимизация по размеру при использовании ProGuard Оптимизация скорости Оптимизация скорости загрузки Оптимизация цикла по скорости |
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|
11.07.2015, 11:24 | 62 |
volvo, 253
0
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|
11.07.2015, 12:19 | 64 |
Пробую...
Добавлено через 13 минут Сделал... 251
0
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|
11.07.2015, 19:01 | 66 |
Я тоже так считаю. Открываем карты?
0
|
Супер-модератор
|
||||||
11.07.2015, 19:22 | 67 | |||||
Да без проблем:
Кликните здесь для просмотра всего текста
0
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|||||||||||
11.07.2015, 23:46 | 68 | ||||||||||
Код
(форматирование не удалял) Добавлено через 2 минуты Я думал, что у нас нечто похожее должно было получиться... Добавлено через 7 минут Даже удивительно, что мы на одном и том же количестве символов остановились. Добавлено через 4 часа 10 минут Собрал код с учетом двух имеющихся вариантов:
0
|
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
|
||||||
12.07.2015, 08:40 | 69 | |||||
Если бы ты сам собственный вариант написал (но тогда у тебя с первой попытки никак бы не вышло 385 символов на Паскале) или даже взял наш, сократил и выложил не только туда, но и сюда, то претензий не было бы. Но ты взял наш вариант отсюда, сократил и выложил туда. А сюда не выложил. А это выглядит крайне некрасиво. Продуктом нашего-же труда нам же и утереть нос. На чужом горбу в рай въехать и щеки при этом надуть для важности. Вот как это выглядит.
Добавлено через 29 секунд Но это уже как-бы не актуально. Было в прошлом. Добавлено через 5 минут Ну это будет уже ошибка в программе. За счет ошибок не выигрываем. Если вносить непроявляющие себя ошибки, то можно сделать исходник еще короче. Я нашел пару способов, но не использовал. Программа должна быть корректной. Именно для этого ее и надо выкладывать. Потому-что ошибки в программе не будешь же выкладывать на всеобщее обозрение. Добавлено через 2 минуты Рулит битва за алгоритм. Например у этого чуток изменим алгоритм :
Добавлено через 54 минуты @volvo А чем ты компилируешь свой вариант, который выложил ? У меня он считает неверно, чем я ни компилирую. Просто неверно. Добавлено через 4 минуты Херня какая-то. Я повторил твой вариант на Пасквле. Он считает неверно. Но на том сайте прошел все тесты.
1
|
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
|
|
12.07.2015, 08:46 | 70 |
Я прицепил архив с файлом Input.txt
Твой вариант его обсчитывает 1442522208 = $55FB2460 а правильный ответ -1468316576 = $A87B4460
1
|
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
|
|
12.07.2015, 09:20 | 71 |
У меня есть две программы на Паскале. Одна с этим Input.txt выдает первый вариант ответа. Вторая - второй. На том сайте тесты прошли ОБЕ ! А правильная та, что отвечает -1468316576
Добавлено через 9 минут C++ исходник Фила тоже сыплется на этом Input.txt. Получается, что вы там рекорды набили неправильным решением.
1
|
Супер-модератор
|
|
12.07.2015, 12:01 | 72 |
Правильность решения, к счастью, определяет система, которая принимает задания, а не сторонний наблюдатель. Принято - значит для этого сайта решение можно считать правильным. Сферические кони в вакууме, которые должны бы быть правильными с точки зрения Стандарта С++, но не проходящие тест, никого не интересуют.
0
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|
12.07.2015, 12:39 | 73 |
Да, я тоже заметил, что мой вариант, вариант volvo и последний комбинированный выдают разные результаты.
Долго пытался найти ошибку в алгоритмах, но все вычисления адресов выглядят правильными. При малых N результаты совпадают, а при больших уже тяжело анализироват. А когда загрузил на сайт, то он их все принял. Надо попробовать log-файл записать с инфой о том, что ксорится и при каких условиях, может что-то прояснится. Кстати, мой С++ вариант выдает одинаковый результат с Паскалевским, я на это ориентировался при написании. Добавлено через 5 минут Попробовал просто лишний ксор дописать в алгоритм - сайт валит его уже на первом тесте. Добавлено через 9 минут Мой финальный код С++ выдает: -1468316576
0
|
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
|
||||||
12.07.2015, 21:00 | 74 | |||||
С точки зрения условия задания, а не стандарта C++. Речь идет о правильном или не правильном решении задачи. У вас реализован алгоритм, который будет считать правильно не при всяких входных данных. Т.е. типичный говнокод, начинающего программиста, который, когда ему на ошибку укажешь, возражает "но ведь работает-же". Так и ты
Добавлено через 59 секунд Очередное "но ведь работает-же". И плевать, что в алгоритме ошибка. Главное, что сейчас сосчитало правильно, а то, что однажды сосчитает неправильно - не волнует. Добавлено через 1 минуту А кто-то пальсы гнул Добавлено через 58 секунд Как тут насчет грамотности. Добавлено через 5 минут З.Ы. Они на своем сайте просто плохо составили тесты. Вот поэтому ваши алгоритмы и прошли. А я просто стал генерить данные по Rnd и при первой-же генерации ваши программы выдали что-то не то. Ее я и выложил выше как Input.txt Добавлено через 17 минут Вот ваш алгоритм, очищенный от трюков. С глобальным массивом, и насрать, что текущий вызов рекурсии гадит в этом массиве данные для следующих.
Он просто тупо неправильный. Хотя на том сайте проходит все тесты. Кстати, этот неправильный Паскаль-говновариант 349 символов. Т.е. на том сайте был бы абсолютным Паскаль-говнорекордом. Только я, когда отправлял его на сайт, специально добавлял в него две ";" чтобы он говнорекордом не стал. Не надо мне такой чести. Это Паскаль. Или опять будешь приводить отмазки про стандарт или не стандарт C++ ?
1
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|
12.07.2015, 21:04 | 75 |
Ethereal, очевидно же, что задача получения наименьшего числа символов, не решается написанием качественного кода, а критерием его "правильности" является прохождение тестов.
Поэтому непонятно, зачем к этому придираться. А то, что "неправильный" код прошел тесты, так это вопрос к разработчикам сайта, который, кстати, я там задал. Посмотрим, что ответят.
0
|
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
|
|
12.07.2015, 21:39 | 76 |
Минимальная длина исходного текста программы при правильном решении задачи.
Вполне корректный критерий. Ясно, что при этом исходник никак не будет качественным с точки зрения читабельности и оформления текста. Но исходник все равно ДОЛЖЕН содержать правильное решение. Этот критерий должен стоять незыблемо. Исходник может быть сколь угодно некрасивым с точки зрения Дейкстры. В жопу Дейкстру. В жопу структурность, легкую модифицируемость и подобную хрень. Но исходник не должен содержать ошибок. Входные данные в объявленных в условии задачи рамках он должен обсчитывать правильно в любом случае. Иначе он неверный. Иначе вы задачу не решили. Вот о чем речь.
1
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|||||||||||
12.07.2015, 22:39 | 77 | ||||||||||
С этим я согласен, но не на калькуляторе же обсчитывать 100К эл-тов, а минимум 19 тестов, написанных людьми, которые чему-то учат детей, прошли на ура. Вот в чем для меня основная загадка. Неужели у них нет теста со случайными числами.
Добавлено через 56 минут В принципе, ошибку устранил, "раздвинув" массивы (n заменил на n*2). Видимо, при определенных условиях возникал перехлест.
0
|
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
|
|
12.07.2015, 23:16 | 78 |
Вот проверьте на таких данных.
Код
6 1 3 2 6 10 4 Добавлено через 7 минут Алгоритм Фила, скрещеный с алгоритмом volvo тоже стал неправильным от такого скрещивания. Я имею ввиду Вот от этой сборки. Хотя до этого был ОК.
1
|
Модератор
3490 / 2613 / 741
Регистрация: 19.09.2012
Сообщений: 7,974
|
|
12.07.2015, 23:19 | 79 |
Я ж написал выше в чем ошибка и как ее устранить.
С этими правками результат становится правильным.
0
|
6770 / 2739 / 384
Регистрация: 17.02.2013
Сообщений: 4,047
|
|
12.07.2015, 23:38 | 80 |
Достаточное условие перехлеста в алгоритме volvo. Пусть было N чисел
Пусть они разделились на X и Y. Пусть X разделилось на x и y. Если X+y >= N то кердык. В моем примере N=6, X=4 Y=2 x=1 y=3 X+y=7>N=6 и кердык. Добавлено через 10 минут Ага, -1464621984. А должно быть -1468316576. На том длинном Input.txt
0
|
12.07.2015, 23:38 | |
12.07.2015, 23:38 | |
Помогаю со студенческими работами здесь
80
Оптимизация скорости выполнения Оптимизация скорости кода Оптимизация программ на C/C++ по скорости Оптимизация скорости обработки БД Оптимизация скорости выборки в массивах Оптимизация скорости выполнения запроса Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |