| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Преобразование чисел |
| Автор: KSURi 11.2.2008, 01:36 |
| Хотелось бы услышать ваши предложения по поводу обфускации чисел. Т.е. нужно превратить данное число в сложное, визуально "пугающее" выражение, которое в итоге все равно дает это заданное число. Чем больше вариантов, тем лучше) Вопрос может быть даже скорее алгоритмический, чем перловый, однако, будет плюсом задействовать какие-то перловые "фишки" (japh, особенности синтаксиса и т.п.), собственно поэтому он здесь. PS: у меня почему-то фантазия в данном направлении работать отказалась =( |
| Автор: amg 11.2.2008, 09:19 | ||
|
| Автор: KSURi 11.2.2008, 13:19 | ||
| amg, спасибо, пригодится. Тема все еще актуальна, буду рад вашим предложениям (не только JAPH, но и математическим манипуляциям) UPDATE2: на 9ой строке варианта amg лучше будет заменить регулярку вот на эту:
чтобы правильно обрабатывать вещественные числа |
| Автор: KSURi 11.2.2008, 13:58 |
| Прочитал в вики, что такое биекция...) Да, вы правильно поняли. |
| Автор: amg 11.2.2008, 14:05 | ||
Добавлено через 3 минуты и 50 секунд А я понял, что, кроме этого, скрипт должен правильно исполниться без применения внешних средств (а то можно зазиповать, будет максимально нечитабельно, и взаимно-однозначное соответствие тоже будет) Добавлено через 14 минут и 47 секунд Еще одна мысль. Переопределить какой нибудь оператор так, чтобы он, например, декодировал base64, и, соответственно, операндом ему давать закодированное число. Правда, при этом придется к скрипту модуль прилагать. |
| Автор: AlexPet 11.2.2008, 14:24 |
| Тогда еще вопрос по математическому преобразованию (безо всяких хитрых обфукаторов и JAPH): Допустимо ли выдавать вместо числа X функцию F(X), при условии, что известна обратная функция F^{-1}(X), т.ч. F^{-1}(F(X)) = X? Если да (т.е. не требуется выдавать некое выражение, после применения eval к которому получим исходное число), то таких хитрых функций можно придумать великое множество. Простейший пример: F(X) = X*X F^{-1}(X) = sqrt(X) (здесь в силу машинной погрешности рискуем не получить исходный икс) Или так: F(X) = X + 1 F^{-1} = X - 1 Думаю, в этом направлении можно копать для целочисленных функций, в т.ч. поциферно. Если, конечно, я правильно понял... |
| Автор: under_sun 11.2.2008, 21:55 | ||||
Вариант с мат. манипуляциями:
Конечно, не так "страшно", как у amg
|
| Автор: KSURi 11.2.2008, 23:11 |
| under_sun, спасибо, результат очень похож на то, на что я нацелился изначально. Осталось внедрить случайную расстановку скобок без влияния на конечный результат, но это я уж сам) Если можно, вопрос: каким образом вы подбирали цепочку мат. вычислений? |
| Автор: AlexPet 12.2.2008, 09:53 |
| KSURi, under_sun изящно подобрал математические тождества. Знаете, часто в учебниках бывают задачи: "Докажите тождество". Или: "Упростите выражение". Здесь именно это. В первом случае формулы сокращенного умножения + разложение на множители (и получаем в итоге a - b), во втором случае - свойства натурального логарифма (и получаем в итоге то же m). Совет - посмотреть учебники 9-11 классов в области преобразований и упрощений ;) |
| Автор: under_sun 12.2.2008, 16:59 |
| AlexPet абсолютно прав, каждое из выражений упрощается с использованием школьных формул. |
| Автор: KSURi 12.2.2008, 18:06 |
| Ну застыдили прям) Спасибо, не обратил внимания. |