powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Головоломка с алгоритмом кодировки дат...
16 сообщений из 16, страница 1 из 1
Головоломка с алгоритмом кодировки дат...
    #33054468
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На днях получил один dbf-ник, импортированный из DOS-версии Paradox’а. Там некоторые данные находятся в закодированном виде: фамилии и даты рождения. Фамилии-то я быстро расколол – там оказался простейший алгоритм прямой замены символов, а вот с датами рождения – затормозил что-то. Из другого источника путем сопоставления по ФИО удалось выяснить даты рождения для четвертой части всех записей – таким образом я выделил в отдельный файл (прилагаю rar-копию) 9500 дат в закодированном (поле dr) и в раскодированном (поле d0) виде. Туда же включил и ASC-коды (поля d1,d2,d3) кодирующих символов. Возможно, там осуществляется бинарное преобразование, но полный алгоритм никак не вырисовывается. Заметил только, что число дней нарастает по принципу (d*2+1) и весьма нерегулярно переходит в разряд месяцев, а число месяцев не опускается ниже chr(4).
Может, кому-нибудь эту головоломку удастся разгадать и определить алгоритм преобразований? Посмотрите, пожалуйста, на досуге.
...
Рейтинг: 0 / 0
Головоломка с алгоритмом кодировки дат...
    #33056341
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все, нашел алгоритм кодировки:
2^23+2^11*year+2^10+2^6*month+2*day+1
Теперь думаю, как поизящней слепить обратный алгоритм (раскодирование).
В принципе, нет особых сложностей. Только вот интересно - можно ли вычислить остаток от деления двух целых чисел чисто арифметическим путем ( т.е. - без %, MOD, INT() и т.п. ) ? Я в математике не очень продвинут, так может и вопрос ставлю глупый, прошу простить заранее.
...
Рейтинг: 0 / 0
Головоломка с алгоритмом кодировки дат...
    #33056344
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так % и MOD будут побыстрее чисто арифметического пути ;-)
Чай, для этого и создавались.
А вот что быстрее, INT или число - MOD(число) - и не скажу, но сдается, что второе может и побыстрее оказаться, особенно, в контексте того, что MOD и так вычисляется. ;-)
...
Рейтинг: 0 / 0
Головоломка с алгоритмом кодировки дат...
    #33056537
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Urri:
Не, либо я торможу, либо MOD и в самом деле арифметическим путем не вычисляется...
...
Рейтинг: 0 / 0
Головоломка с алгоритмом кодировки дат...
    #33057320
Crispy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему же - такая вот функция - аналог MOD():

LPARAMETERS a,b
n=a
DO WHILE n>b
n=n-b
ENDDO

RETURN n
...
Рейтинг: 0 / 0
Головоломка с алгоритмом кодировки дат...
    #33058062
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Crispy:
Нет, я не это имел в виду, а представление именно в виде однострочной арифметической формулы .
Я то прекрасно обошелся и без нее, но любопытство зедает - можно ли так сделать? :)
...
Рейтинг: 0 / 0
Головоломка с алгоритмом кодировки дат...
    #33058735
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi neznajka!

Нет конечно, MOD и так есть арифметическая операция :) Или для тебя деление (в т.ч. и целочисленное) не есть арифметическое действие???
Вообще не понятен смысл вопроса - ладно бы не работало, так работает же!

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Головоломка с алгоритмом кодировки дат...
    #33059170
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, по математическим понятиям, арифметической считается только та операция, которую можно представить в виде формулы с выполнением только основных арифметических 4-х действий, ну, возможно еще плюс возведение в степень. По этой же причине, скажем, извлечение корня не является арифметической операцией (разложение в ряды не в счет, ибо не дает абсолютной точности)
...
Рейтинг: 0 / 0
Головоломка с алгоритмом кодировки дат...
    #33059293
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
квадратный например корень можно вычислить вручную без применения рядов примерно как деление в столбик до любой точности
а вообще если пошла такая пьянка , то к возведению в степень и делению тоже можно "прибодаться" реально определяеться только сложение и умножение на число, наскока я помню ну еще норма и то не на любом множестве
так что не стоит углублять
...
Рейтинг: 0 / 0
Головоломка с алгоритмом кодировки дат...
    #33059607
Crispy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это получается Философия Арифметики какая-то

А вообще - кроме умножения (возведения в целую степень) - ничего нельзя больше представить в виде ОДНОЙ строчки через последовательные действия сложения.
(вычитание - это то же сложение, но отрицательных чисел)
Все остальное - деление, корень, получение остатка от деления - вычисляется только с использованием метода итерации - последовательного приближения к результату - циклом, с возвратом для проверки.
MOD() кстати, как и вообще использование любых функций, позволяет записывать свою формулу в одну строчку!
К тому же в фоксе все функции типа MOD() реализованы на достаточно низком уровне, а значит, скорее всего, они и работают быстрее, чем самодельные конструкции.
А если оно работает (в одну строчку!) - и к тому же быстро - не все ли равно, как оно там внутри работает - может там гномики бегают и байты перетаскивают - лишь бы все считалось! :)
...
Рейтинг: 0 / 0
Головоломка с алгоритмом кодировки дат...
    #33059716
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Crispy:
Во, вот это от души :)) Особенно, насчет формульного представления арифметических операций. Нечто подобное я где-то уже читал (или учил?), значит, все верно. И, значит, нефиг дергаться, если MOD() прекрасно работает :)
Кстати, у меня именно с его помощью все и сделано. Это я хотел свою "логику мышления" проверить. Спасибо всем :)
...
Рейтинг: 0 / 0
Головоломка с алгоритмом кодировки дат...
    #33061118
Igor Korolyov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi neznajka!

Я помню лишь то, что "деление с остатком" проходил в школе по предмету арифметика - где-то в начальных классах... Ибо это по сути своей очень простая операция :)
Также тебе должно быть небезынтересно, что как операция целочисленного деления (для Integer) так и операция получения остатка от такого деления есть одна из команд процессоров архитектуры IA32 (причём что самое интересное, это ОДНА команда DIV - т.е. и результат от деления и остаток получаются сразу) Вот в FPU это уже 2 разные команды, но тем не менее и целочисленное деление, и получение остатка от такового там тоже реализованы. Так что MOD это по сути ОДНА процессорная инструкция (забудем пока про всякие накладные расходы коих конечно тем больше чем сложнее и "больше" вычисляемое выражение). И конечно по классификации они относятся именно к Arithmetic Opcodes - т.е. именно арифметическими действиями и являются.

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Головоломка с алгоритмом кодировки дат...
    #33061273
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет, все правильно, проблема снята.
Просто под словом арифметическая я имел в виду не компьютерный уклон этого слова, а классический математический: помнишь, как в учебниках - есть квадратный корень, а есть - арифметический квадратный корень :)
...
Рейтинг: 0 / 0
Головоломка с алгоритмом кодировки дат...
    #33061434
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как как ты сказал? арифметический квадратный корень - это что?
...
Рейтинг: 0 / 0
Головоломка с алгоритмом кодировки дат...
    #33063513
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не охота ковыряться в старых учебниках, чтобы указать здесь авторов моего школьного учебника алгебры. Но если надо - покопаюсь и найду, у меня многое сохранилось из тех давних материалов :)
Так вот, там, как сейчас помню, арифметическим квадратным корнем называется НЕотрицательное значение оного корня. Однако к данной теме корень не относится, я о нем упомянул только для ассоциации предыдущих моих постов именно с математикой, без привлечения терминов и понятий информатики.
...
Рейтинг: 0 / 0
Головоломка с алгоритмом кодировки дат...
    #33063529
Фотография neznajka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В подтверждение сказанному насчет арифметического квадратного корня:

http://www.repetitor.org/stmat2.html
(см. Задание №3 ближе к концу страницы)

http://linux.taraz.kz/doc/c/mclibc.html
(там в конце страницы написано следующее:
sqrt вычисляет арифметический (неотрицательный) квадратный корень из
аргумента)

А определение упоминается в pdf-файле
http://www.school.mipt.ru/FileDown.asp?ItemId=500
Там в 1-м параграфе (в самом начале) объяснено, в чем прикол именно АРИФМЕТИЧЕСКОГО квадратного корня.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Головоломка с алгоритмом кодировки дат...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]