|
|
|
Головоломка с алгоритмом кодировки дат...
|
|||
|---|---|---|---|
|
#18+
На днях получил один dbf-ник, импортированный из DOS-версии Paradox’а. Там некоторые данные находятся в закодированном виде: фамилии и даты рождения. Фамилии-то я быстро расколол – там оказался простейший алгоритм прямой замены символов, а вот с датами рождения – затормозил что-то. Из другого источника путем сопоставления по ФИО удалось выяснить даты рождения для четвертой части всех записей – таким образом я выделил в отдельный файл (прилагаю rar-копию) 9500 дат в закодированном (поле dr) и в раскодированном (поле d0) виде. Туда же включил и ASC-коды (поля d1,d2,d3) кодирующих символов. Возможно, там осуществляется бинарное преобразование, но полный алгоритм никак не вырисовывается. Заметил только, что число дней нарастает по принципу (d*2+1) и весьма нерегулярно переходит в разряд месяцев, а число месяцев не опускается ниже chr(4). Может, кому-нибудь эту головоломку удастся разгадать и определить алгоритм преобразований? Посмотрите, пожалуйста, на досуге. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2005, 02:05 |
|
||
|
Головоломка с алгоритмом кодировки дат...
|
|||
|---|---|---|---|
|
#18+
Все, нашел алгоритм кодировки: 2^23+2^11*year+2^10+2^6*month+2*day+1 Теперь думаю, как поизящней слепить обратный алгоритм (раскодирование). В принципе, нет особых сложностей. Только вот интересно - можно ли вычислить остаток от деления двух целых чисел чисто арифметическим путем ( т.е. - без %, MOD, INT() и т.п. ) ? Я в математике не очень продвинут, так может и вопрос ставлю глупый, прошу простить заранее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2005, 23:20 |
|
||
|
Головоломка с алгоритмом кодировки дат...
|
|||
|---|---|---|---|
|
#18+
Так % и MOD будут побыстрее чисто арифметического пути ;-) Чай, для этого и создавались. А вот что быстрее, INT или число - MOD(число) - и не скажу, но сдается, что второе может и побыстрее оказаться, особенно, в контексте того, что MOD и так вычисляется. ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2005, 23:25 |
|
||
|
Головоломка с алгоритмом кодировки дат...
|
|||
|---|---|---|---|
|
#18+
To Urri: Не, либо я торможу, либо MOD и в самом деле арифметическим путем не вычисляется... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 08:53 |
|
||
|
Головоломка с алгоритмом кодировки дат...
|
|||
|---|---|---|---|
|
#18+
Почему же - такая вот функция - аналог MOD(): LPARAMETERS a,b n=a DO WHILE n>b n=n-b ENDDO RETURN n ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 13:24 |
|
||
|
Головоломка с алгоритмом кодировки дат...
|
|||
|---|---|---|---|
|
#18+
To Crispy: Нет, я не это имел в виду, а представление именно в виде однострочной арифметической формулы . Я то прекрасно обошелся и без нее, но любопытство зедает - можно ли так сделать? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.05.2005, 16:55 |
|
||
|
Головоломка с алгоритмом кодировки дат...
|
|||
|---|---|---|---|
|
#18+
Hi neznajka! Нет конечно, MOD и так есть арифметическая операция :) Или для тебя деление (в т.ч. и целочисленное) не есть арифметическое действие??? Вообще не понятен смысл вопроса - ладно бы не работало, так работает же! Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 01:24 |
|
||
|
Головоломка с алгоритмом кодировки дат...
|
|||
|---|---|---|---|
|
#18+
Нет, по математическим понятиям, арифметической считается только та операция, которую можно представить в виде формулы с выполнением только основных арифметических 4-х действий, ну, возможно еще плюс возведение в степень. По этой же причине, скажем, извлечение корня не является арифметической операцией (разложение в ряды не в счет, ибо не дает абсолютной точности) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 10:45 |
|
||
|
Головоломка с алгоритмом кодировки дат...
|
|||
|---|---|---|---|
|
#18+
квадратный например корень можно вычислить вручную без применения рядов примерно как деление в столбик до любой точности а вообще если пошла такая пьянка , то к возведению в степень и делению тоже можно "прибодаться" реально определяеться только сложение и умножение на число, наскока я помню ну еще норма и то не на любом множестве так что не стоит углублять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 11:24 |
|
||
|
Головоломка с алгоритмом кодировки дат...
|
|||
|---|---|---|---|
|
#18+
Это получается Философия Арифметики какая-то А вообще - кроме умножения (возведения в целую степень) - ничего нельзя больше представить в виде ОДНОЙ строчки через последовательные действия сложения. (вычитание - это то же сложение, но отрицательных чисел) Все остальное - деление, корень, получение остатка от деления - вычисляется только с использованием метода итерации - последовательного приближения к результату - циклом, с возвратом для проверки. MOD() кстати, как и вообще использование любых функций, позволяет записывать свою формулу в одну строчку! К тому же в фоксе все функции типа MOD() реализованы на достаточно низком уровне, а значит, скорее всего, они и работают быстрее, чем самодельные конструкции. А если оно работает (в одну строчку!) - и к тому же быстро - не все ли равно, как оно там внутри работает - может там гномики бегают и байты перетаскивают - лишь бы все считалось! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 12:57 |
|
||
|
Головоломка с алгоритмом кодировки дат...
|
|||
|---|---|---|---|
|
#18+
To Crispy: Во, вот это от души :)) Особенно, насчет формульного представления арифметических операций. Нечто подобное я где-то уже читал (или учил?), значит, все верно. И, значит, нефиг дергаться, если MOD() прекрасно работает :) Кстати, у меня именно с его помощью все и сделано. Это я хотел свою "логику мышления" проверить. Спасибо всем :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2005, 13:33 |
|
||
|
Головоломка с алгоритмом кодировки дат...
|
|||
|---|---|---|---|
|
#18+
Hi neznajka! Я помню лишь то, что "деление с остатком" проходил в школе по предмету арифметика - где-то в начальных классах... Ибо это по сути своей очень простая операция :) Также тебе должно быть небезынтересно, что как операция целочисленного деления (для Integer) так и операция получения остатка от такого деления есть одна из команд процессоров архитектуры IA32 (причём что самое интересное, это ОДНА команда DIV - т.е. и результат от деления и остаток получаются сразу) Вот в FPU это уже 2 разные команды, но тем не менее и целочисленное деление, и получение остатка от такового там тоже реализованы. Так что MOD это по сути ОДНА процессорная инструкция (забудем пока про всякие накладные расходы коих конечно тем больше чем сложнее и "больше" вычисляемое выражение). И конечно по классификации они относятся именно к Arithmetic Opcodes - т.е. именно арифметическими действиями и являются. Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 03:04 |
|
||
|
Головоломка с алгоритмом кодировки дат...
|
|||
|---|---|---|---|
|
#18+
Да нет, все правильно, проблема снята. Просто под словом арифметическая я имел в виду не компьютерный уклон этого слова, а классический математический: помнишь, как в учебниках - есть квадратный корень, а есть - арифметический квадратный корень :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 09:16 |
|
||
|
Головоломка с алгоритмом кодировки дат...
|
|||
|---|---|---|---|
|
#18+
как как ты сказал? арифметический квадратный корень - это что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 10:17 |
|
||
|
Головоломка с алгоритмом кодировки дат...
|
|||
|---|---|---|---|
|
#18+
Не охота ковыряться в старых учебниках, чтобы указать здесь авторов моего школьного учебника алгебры. Но если надо - покопаюсь и найду, у меня многое сохранилось из тех давних материалов :) Так вот, там, как сейчас помню, арифметическим квадратным корнем называется НЕотрицательное значение оного корня. Однако к данной теме корень не относится, я о нем упомянул только для ассоциации предыдущих моих постов именно с математикой, без привлечения терминов и понятий информатики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 22:10 |
|
||
|
Головоломка с алгоритмом кодировки дат...
|
|||
|---|---|---|---|
|
#18+
В подтверждение сказанному насчет арифметического квадратного корня: 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-м параграфе (в самом начале) объяснено, в чем прикол именно АРИФМЕТИЧЕСКОГО квадратного корня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 22:31 |
|
||
|
|

start [/forum/search_topic.php?author=vazovod&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
71ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 704ms |
| total: | 911ms |

| 0 / 0 |
